SQL 変換の追加
SQL ベースのテーブルを変換タスクに含めることができます。SQL 変換では、SQL SELECT クエリーをパイプラインに入力して、複雑な変換や単純な変換を定義できます。生成 AI を使用して、SQL アシスタントでテキスト プロンプトからクエリを生成できます。また、マクロを使用して、初期ロードまたは増分ロードが実行される場合にクエリを実行するように調整することもできます。
変換タスクの作成の詳細については、「データの変換」を参照してください。
SQL 変換の追加
変換データ タスクに SQL 変換を追加するには:
-
[変換] で、クエリに含めるデータセットを選択し、 [SQL 変換を追加] をクリックします。
[SQL 変換を追加] が表示され、変換の設定を実行できます。
-
[名前] にターゲット データセットの名前を入力します。
[説明] に長い説明を追加することもできます。
-
[実体化] で、変換された出力を実体化するかどうかを選択します。データ タスク設定から設定を継承することを選択できます。
-
[オン] にするとテーブルが作成され、関連する ELT 処理が実行されます。
-
[オフ] にすると、オンザフライで変換を実行するビューが作成されます。
-
-
増分ロードを使用すると、マクロを使用して処理されるデータのセットを減らすためにフィルターまたはその他の条件を適用することで、増分データ ロードのクエリを調整できます。増分ロードは、データがテーブルとして実体化されている場合にのみ使用できます。
-
増分ロードが [オン] の場合
タスクの最初の実行では初期ロードが実行され、クエリのすべての結果がターゲット テーブルに挿入されます。後続の実行では、増分処理用に定義したフィルターまたは特定の条件を利用して、増分ロードが実行されます。増分ロード中、タスクはデータを更新または挿入としてのみ処理し、削除は管理されません。
-
増分ロードが [オフ] の場合
タスクの最初の実行では初期ロードが実行され、クエリのすべての結果がターゲット テーブルに挿入されます。後続の実行では、クエリのすべての結果をターゲット テーブルと比較し、新規、変更、または削除されたレコードを処理します。
情報メモクエリがターゲットに存在する必要があるすべてのレコードを選択する場合は、増分ロードをオフに設定します。選択されていないレコードはターゲットで削除されます。 -
-
SQL 変換を作成する準備ができたら、 [追加] をクリックします。
[SQL 変換を編集] が表示されます。
-
クエリを入力して、SQL ベースのテーブルを [SELECT クエリ] で返します。
クエリは選択したソース データセットからのみ読み取り可能ですが、 [追加] でさらにソース データセットを追加できます。
データセットと列から選択できます。
SQL アシスタントを使用して、生成 AI によるクエリを生成することもできます。詳細は、テキストプロンプトから SQL 変換を生成するをご覧ください。
-
増分ロードを使用する場合は、マクロを使用して、初期ロードまたは増分ロードが実行される場合にクエリが実行されるように適応できます。
詳細については、「マクロを使用してクエリをロード タイプに適応させる」を参照してください。
-
[パラメーターを抽出] をクリックして、SELECT クエリのパラメーターを解析します。
パラメーターは、ソース オブジェクトまたはターゲット オブジェクトにマッピングする必要があります。可能なマッピング先
-
履歴タイプ 2 構造 (_history)
-
現在の構造
-
ターゲット オブジェクト
ターゲット オブジェクトをマップできるのは、パラメーターが増分マクロ内で定義される場合のみです。
ヒント メモパラメーターを参照に置き換えて、クエリを読みやすくすることができます。パラメーターの値を変更すると、SELECT クエリの参照も変更されます。 -
-
[テーブルの説明] をクリックして、クエリ出力メタデータのプレビューを取得します。
データのサンプルを使用して、結果をプレビューすることもできます。
-
テーブルに主キーがあることを確認してください。
メタデータの設定を編集することもできます。
-
[キー] 列に主キーを設定します。
-
[Nullable] 列で列が null 許容かどうかを設定します。
-
列を選択し、 [編集] をクリックして、列名、キー、null 許容、データ型を設定します。
-
-
クエリの結果に問題がなければ、[OK] をクリックします。データセットがターゲットのリストに追加され、プレビューできるようになりました。
データのプレビュー
データのサンプルを使用して、結果をプレビューできます。
データをプレビューするには、次の役割が割り当てられている必要があります。
-
接続が常駐するスペースで [データ表示可能]。
-
プロジェクトが常駐するスペースで [表示可能]。
結果のプレビューを表示するには、
-
[データを表示] をクリックします。
データのサンプルを使用した結果が表示されます。[列の数] でサンプルに含めるデータ列の数を設定できます。
サンプル データをフィルターするには、2 つの方法があります。
-
を使用して、取得するサンプル データをフィルターします。
例えば、フィルター ${OrderYear}>2023 を使用し、[列の数] を 10 に設定すると、2024 年から 10 個の注文のサンプルを取得します。
-
特定の列でサンプル データをフィルターします。
これは、既存のサンプル データのみに作用します。 を使用して 2024 年の注文のみを含め、列フィルターで 2022 年の注文を表示するように設定すると、サンプルは空になります。
データ サンプルを特定の列順に並べ替えることができます。並べ替えは、既存のサンプル データのみに作用します。 を使用して 2024 年の注文のみを含め、列順序を逆にしても、サンプル データには 2024 年の注文のみが含まれます。
マクロを使用してクエリをロード タイプに適応させる
増分ロードを使用する場合は、マクロを使用して、初期ロードまたは増分ロードが実行される場合にクエリが実行されるように適応できます。
マクロを選択し、それぞれの句の中にクエリを追加します。
-
Q_RUN_INCREMENTAL は、増分ロードの実行時にのみ実行されるクエリを配置できる句を追加します。
-
Q_RUN_INITIAL_LOAD は、初期ロードの実行時にのみ実行されるクエリを配置できる句を追加します。
各マクロで完全なクエリを指定する必要はありません。ユース ケースに基づいてコードを調整または追加できます。
ユース ケース: 日付範囲を使用した増分フィルター:
このユース ケースでは、一連の注文データをカスタム SQL で変換する必要があります。これは大規模なデータセットであるため、増分フィルタリングを含めて、増分ロードで過去 12 時間の注文のみが考慮されるようにする必要があります。
これは基本的なクエリです。
これは増分実行中に適用するフィルターで、過去 12 時間に追加された注文のみが考慮されます。
これは、フィルター マクロを使用し、テーブル名を ${TABLE} 表記に置き換えた完全なクエリです。
これにより、初期ロード クエリが行われます。
増分ロードクエリ:
ユース ケース: ターゲット内のデータを使用した増分フィルター:
この使用例では、一連の注文データをカスタム SQL で変換する必要があります。注文は大規模なデータセットであるため、増分フィルタリングを含めて、増分ロードでターゲット テーブル内のデータよりも新しい注文詳細レコードのみが考慮されるようにする必要があります。また、行が初期ロードまたは増分ロードによって処理されたかをマークすることもできます。
これは基本的なクエリです。
これは、増分実行中に適用するフィルターです。「ORDERS_DERIVED」はターゲット データセットの名前です。
これは、フィルター マクロを使用し、テーブル名を ${TABLE} 表記に置き換えた完全なクエリです。ロードが初期の場合は LOADED_BY が INIT に設定され、ロードが増分の場合は INCR に設定されます。
これにより、初期ロード クエリが行われます。
増分ロードクエリ:
ベスト プラクティス
-
SQL 変換を追加しても、主キーは自動的に定義されません。[データセット] タブでデータセットにキーを追加します。
-
変換された出力に列ヘッダーを手動で作成しないでください。
-
クエリが実行されるたびに異なる列が返される可能性があるため、SELECT に * を付けて使用しないでください。スキーマに変更があった場合は、それに応じてクエリを変更し、[テーブルを表示] を再度実行します。その後、列の編集やテーブルの調整ができます。