3.6.8.4. OBJECTTABLE


OBJECTTABLE 関数は、オブジェクト入力を処理して表形式で出力を生成します。関数自体はプロジェクトの列を定義します。OBJECTTABLE 関数は暗黙的にネストされたテーブルであり、FROM 句内で使用できます。

用途

OBJECTTABLE([LANGUAGE lang] rowScript [PASSING val AS name ...] COLUMNS colName colType colScript [DEFAULT defaultExpr] ...) AS id
Copy to Clipboard Toggle word wrap

パラメーター

lang
処理するスクリプトの大文字と小文字を区別する言語名である任意の文字列リテラル。スクリプトエンジンは、JSR-223 ScriptEngineManager ルックアップを介して利用できるようにする必要があります。

pidUAGE が指定されていない場合は、デフォルトの 'teiid_script' が使用されます。name:: val 式の値をスクリプト context. rowScript:: にバインドする識別子。rowScript:: 行の値を作成して行値を作成する文字列リテラル。Iterator が生成する null 以外のアイテムごとに、列が評価されます。列の colName/colType:: ID/data タイプで、任意で DEFAULT 句式 defaultExpr 表現 defaultExpr を指定できます。cocoScript:: 列の値に評価されるスクリプトを指定する文字列リテラル。

構文ルール

  • 列名に重複を含めることはできません。
  • Data Virtualization は、スクリプト実行コンテキストにいくつかの特殊な変数を配置します。CommandContext は、teiid_context として利用できます。さらに、coScriptsteiid_row および teiid_row_number にアクセスできます。  teiid_row は、行スクリプトで生成される現在の行オブジェクトです。 teiid_row_number は、現在の 1 ベースの行番号です。
  • rowScript は Iterator に評価されます。結果がすでに Iterator の場合、これは直接使用されます。評価の結果が Iteratable、Array、または Array タイプである場合、イテレーターが取得されます。他のオブジェクトは、単一アイテムの Iterator として処理されます。いずれの場合も、null 行の値はスキップされます。
注記

変数の名前付けには制限はありませんが、ターゲット言語で識別子として参照できる名前を選択することが推奨されます。

OBJECTTABLE の例

  • 特殊な変数へのアクセス:
SELECT x.* FROM OBJECTTABLE('teiid_context' COLUMNS "user" string 'teiid_row.userName', row_number integer 'teiid_row_number') AS x
Copy to Clipboard Toggle word wrap

結果は、それぞれユーザー名と 1 を含む 2 つの列が含まれる行になります。

注記

teiid_script 以外の言語では、通常、Java 機能への無制限のアクセスが許可されます。その結果、デフォルトでは使用は制限されます。allowed-languages プロパティーで名前別に使用可能な言語を宣言することで、制限を上書きできます。  通常パーミッションチェックの対象でないビュー定義であっても、OBJECTTABLE を使用するには、allowed-languages プロパティーを定義する必要があります。また、ユーザーアカウントに言語アクセス権を設定して、ユーザーが OBJECTTABLE 関数を処理できるようにする必要があります。

  • teiid_script の詳細は、次のセクションを参照してください。
  • teiid_script 以外の言語の使用を有効にする方法は、「 仮想データベースプロパティーallowed-languages 」を参照してください。
  • ユーザーアカウントのパーミッションの設定に関する詳細は、「パーミッション」の「ユーザー クエリーのパーミッション 」を参照し ください。

teiid_script

teiid_script は、アレイ/リストでオブジェクトおよびインデックス化された値の 0 引数以外のメソッドへのアクセスを可能にする単純なスクリプト式言語です。teiid_script 式は、pass または special 変数を参照して始まります。次に、任意の数の . アクセサーをチェーンして、式を別の値に評価できます。メソッドには、getFoo ではなく foo などのプロパティー名でアクセスできます。オブジェクトに getFoo ()メソッドと foo ()メソッドの両方が含まれる場合、accessor foo 参照 foo()getFoo を使用して getter を呼び出す必要があります。同じ . アクセッサー構文を使用して、1 ベースの正の値を使用してアレイまたはリストインデックスにアクセスします。システム関数 array_get と同じロジックが使用されます。つまり、インデックスがバインド外である場合は、例外ではなく null を返します。

teiid_script は、起動時に入力が実行されると、実質的に動的に入力されます。アクセサーがオブジェクトに存在しない場合や、メソッドにアクセスできない場合は、例外が発生します。アクセサーチェーン内のどの時点でも null 値に対して評価されると、null が返されます。

teiid_script の例

  • VDB の記述文字列を取得するには、以下を実行します。
teiid_context.session.vdb.description
Copy to Clipboard Toggle word wrap
  • VDB の記述文字列の最初の文字を取得するには、以下を実行します。
teiid_context.session.vdb.description.toCharArray.1
Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat