メイン コンテンツをスキップする 補完的コンテンツへスキップ

ネストされた 移動 テーブル

Qlik Talend Data Integration は、ネストされたテーブルまたは定義された型の列を含む Oracle テーブルの 移動 をサポートします。この機能を有効にするには、コネクタ 設定で [ネストされたテーブルをサポート] オプションを選択します。

データ タスクは、Oracle のネストされたテーブルのターゲット テーブルを、一意性制約のない通常のテーブルとして作成します。意味のあるデータを取得するには、親テーブルと子テーブルを結合する必要性が高いため、ターゲットの子テーブルの NESTED_TABLE_ID 列に一意でないインデックスを手動で作成することが重要です。NESTED_TABLE_ID 列は、子テーブル名に対応する親列と共に JOIN ON 句で使用できます。また、このようなインデックスを作成すると、ターゲットの子テーブルのデータがデータ タスクによって更新/削除された場合のパフォーマンスが向上します。

フル ロードの完了後にタスクを停止するように構成することを推奨します。フル ロードが完了したら、ターゲット上のすべての 移動済み 子テーブルに対して一意でないインデックスを手動で作成し、タスクを再開します。

キャプチャされ、ネストされたテーブルが既存の親テーブル (キャプチャされたかどうかに関係なく) に追加された場合、データ タスクはそれを正しく処理しますが、対応するターゲット テーブルの一意でないインデックスは作成されません。この場合、ターゲットの子テーブルが極端に大きくなると、パフォーマンスに影響を及ぼす可能性があるので注意してください。このような場合は、タスクを停止し、インデックスを作成してからタスクを再開することを推奨します。ただし、タスクを再開する前に、移動済み テーブルをフラット化するビューを作成することをお勧めします。これらのビューには、以下の例で説明するように、特定のフラット化のニーズに対応する JOIN ステートメントが含まれている必要があります。

前提条件

移動済みされた、すべてのネストされたテーブルの親テーブルを移動していることを確認してください。親テーブル (ネストされたテーブル列を含むテーブル) と子 (つまり、ネストされた) テーブルの両方が Qlik Talend Data Integration で選択できるようになります。

サポート対象のネストされたテーブルの種類

次のネストされたテーブルの種類がサポートされています。

  • データ型
  • ユーザー定義オブジェクト

制限事項

  • 1 レベルのネストのみがサポートされています。
  • Qlik Talend Data Integration は、親テーブルと子テーブルの両方が 移動 用に選択されていることを確認しません。つまり、子テーブルを持たない親テーブルを選択することも、その逆も可能です。

ネストされたテーブルを移動済みする方法

親テーブルとネストされたテーブルは、次のようにターゲットに移動済みされます。

  • 親テーブルはソースと同様にターゲット上に作成され、ネストされた各列は RAW(16) として定義されます。各親テーブル行では、この列には、NESTED_TABLE_ID 列内の対応する子テーブルのネストされた行と同じ値が含まれます。

  • 子テーブルはソースと同じように作成されますが、前述されたように NESTED_TABLE_ID 列が追加されます。

JOIN ステートメントの例

Oracle ソースに次の定義が存在すると仮定します。

  • CREATE OR REPLACE TYPE my_tab_t AS TABLE OF VARCHAR2(30);
  • CREATE TABLE my_parent_table (id NUMBER PRIMARY KEY, col1 my_tab_t) NESTED TABLE col1 STORE AS col1_tab;

この場合、データ タスクは通常、次のように 2 つのターゲット テーブルを作成します。

  • CREATE TABLE my_parent_table (id NUMBER PRIMARY KEY, col1 RAW(16));
  • CREATE TABLE col1_tab(nested_table_id RAW(16), column_value VARCHAR2(30));

2 つのターゲット テーブルをフラット化するための JOIN ステートメントは、次のように定義できます。

  • Select id, column_value from my_parent_table LEFT OUTER JOIN col1_tab child ON child.nested_table_id = parent.col1;
情報メモ親テーブルに、子テーブルに存在しないレコードが含まれている場合は、LEFT OUTER JOIN を使用する必要があります。

このページは役に立ちましたか?

このページまたはコンテンツにタイポ、ステップの省略、技術的エラーなどの問題が見つかった場合はお知らせください。