メインコンテンツまでスキップ

フローの作成 (DLT)

CREATE FLOW ステートメントを使用して、DLT テーブルのフローまたはバックフィルを作成します。

構文

CREATE FLOW flow_name [COMMENT comment] AS
{
INSERT INTO [ONCE] target_table BY NAME query
}

パラメーター

  • flow_name

    作成するフローの名前。

  • comment

    フローの説明 (オプション)。

  • ある時

    必要に応じて、フローを 1 回限りのフロー (バックフィルなど) として定義します。ONCEを使用すると、フローが次の 2 つの方法で変更されます。

    • ソース query または apply_changes_spec はストリーミングテーブルではありません。
    • フローはデフォルトで 1 回実行されます。パイプラインが完全に更新されて更新されると、 ONCE フローが再度実行され、データが再作成されます。
  • target_table

    更新するテーブル。これはストリーミングテーブルである必要があります。

  • INSERT INTO

    ターゲット・テーブルに挿入されるテーブル・クエリを定義します。ONCE オプションが指定されていない場合、クエリは ストリーミング クエリである必要があります。ストリーム キーワードを使用して、ストリーミング セマンティクスを使用してソースから読み取ります。 読み取りで既存のレコードに対する変更または削除が検出されると、エラーがスローされます。静的なソースまたは追加専用のソースから読み取るのが最も安全です。変更コミットのあるデータを取り込むには、Python と SkipChangeCommits オプションを使用してエラーを処理できます。

SQL
-- Create a streaming table, and add two flows that apply changes to it:
CREATE OR REFRESH STREAMING TABLE target_table;

-- first flow into target_table:
APPLY CHANGES INTO target_table
FROM stream(cdc_data.users)
KEYS (userId)
APPLY AS DELETE WHEN
operation = "DELETE"
SEQUENCE BY sequenceNum
COLUMNS * EXCEPT (operation, sequenceNum)
STORED AS SCD TYPE 2;

-- second flow into target_table:
CREATE FLOW my_append_flow AS
INSERT INTO ONCE target_table
SELECT * FROM my_backfill_table