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

CREATE TABLE ... FLOW (パイプライン)

備考

ベータ版

この機能はベータ版です。

CREATE TABLE ... FLOW ステートメントを使用して、1つまたは複数のフローによって書き込まれる**パイプライン**内に**マネージドテーブル**を作成します。

構文

CREATE TABLE
table_name
[ table_specification ]
[ table_clauses ]
[ flow_clause ]

table_specification
( { column_identifier column_type [column_properties] } [, ...] )

table_clauses
{ PARTITIONED BY (col [, ...]) |
CLUSTER BY clause |
LOCATION path |
COMMENT table_comment |
TBLPROPERTIES clause |
WITH { ROW FILTER clause } } [ ... ]

flow_clause
FLOW INSERT [ONCE] BY NAME query

複数のソースを1つのマネージドテーブルに統合するには、CREATE FLOW (パイプライン) を使用して、それをターゲットとする複数のフローを宣言します:

CREATE FLOW flow_name AS INSERT INTO table_name BY NAME query

パラメーター

  • table_name

    作成するマネージドテーブルの名前。名前が修飾されていない場合、テーブルはパイプラインのターゲットスキーマで作成されます。その名前はすでにストリーミングテーブルに属していてはなりません。

  • table_specification

    オプションで、列、その型、プロパティ、および説明を定義します。省略した場合、スキーマはフロークエリーから推論されます。

  • PARTITIONED BY(col [, ...])

    必要に応じて、カラムのサブセットによってテーブルをパーティション分割します。

  • クラスター BY 句

    テーブルでリキッドクラスタリングをオプションで有効にします。PARTITIONED BYCLUSTER BYを組み合わせることはできません。

  • 格納場所パス

    テーブルデータのオプションの保存場所です。

  • COMMENT テーブルコメント

    テーブルを記述する STRING リテラル。

  • TBLPROPERTIES句

    オプションで1つ以上のユーザー定義テーブルプロパティを設定します。

  • WITH 行フィルター句

    テーブルに行フィルター関数を追加します。そのテーブルに対する今後のクエリーでは、関数がTRUEと評価される行のサブセットが返されます。

  • フロー挿入 [一度] 名前でクエリー

    query の結果をテーブルに挿入するアペンドフローを定義し、結果列をテーブル列に 名前で 一致させます。query はバッチまたはストリーミングのソースを参照できます。ONCE は、すべての更新時ではなく、フローを単一回(たとえば、バックフィルのため)実行します。各名前付きフローは、ストリーミングテーブルの FLOW INSERT BY NAME と同様に、パイプラインの更新ごとにその入力を正確に一度だけ処理します。

制限事項

  • マネージドテーブルはCDC変更フローをサポートしていません。マネージドテーブルに対する AUTO CDC INTO (SQL) または apply_changes / apply_changes_from_snapshot (Python) は MANAGED_TABLE_DOES_NOT_SUPPORT_CDC で失敗します。CDCターゲットには、CREATE STREAMING TABLE(パイプライン)を使用します。
  • マネージドテーブルはFLOW ... REPLACE WHEREをサポートしていません。FLOW INSERT BY NAMEのみサポートされています。
  • マネージドテーブルは、Unity Catalog を使用したパイプラインでのみサポートされています。Hive metastore はサポートされていません。
  • 既存のストリーミングテーブルの名前をマネージドテーブルに再利用することはできません。まずストリーミングテーブルを削除してください。そうしないと、ステートメントはCANNOT_SWITCH_STREAMING_TABLE_TO_MANAGED_TABLEで失敗します。

SQL
-- Create a managed table populated by an append flow
CREATE TABLE output
FLOW INSERT BY NAME SELECT id FROM LIVE.source;

-- Create a partitioned managed table from a streaming source
CREATE TABLE events
PARTITIONED BY (bucket)
FLOW INSERT BY NAME
SELECT id, bucket FROM STREAM read_files('abfss://my_path', format => 'json');

その他のリソース