CREATE TABLE ... FLOW(파이프라인)

Important

이 기능은 베타 버전으로 제공됩니다.

CREATE TABLE ... FLOW 문을 사용하여 하나 이상의 흐름으로 작성된 파이프라인에서 관리되는 테이블을 만듭니.

Syntax

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

table_specification
  ( { column_identifier column_type [column_properties] } [, ...]
    [ CONSTRAINT expectation_name EXPECT (expectation_expr)
        [ ON VIOLATION { FAIL UPDATE | DROP ROW } ] ] [, ...] )

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

여러 원본을 하나의 관리되는 테이블로 팬하려면 CREATE FLOW(파이프라인)를 대상으로 하는 여러 흐름을 선언합니다.

CREATE FLOW flow_name AS INSERT INTO table_name BY NAME query

Parameters

  • table_name

    만들 관리되는 테이블의 이름입니다. 이름이 정규화되지 않은 경우 테이블은 파이프라인의 대상 스키마에 만들어집니다. 이름은 스트리밍 테이블에 아직 속하지 않아야 합니다.

  • 테이블_규격

    필요에 따라 열, 해당 형식, 속성 및 설명을 정의합니다. 생략하면 스키마가 흐름 쿼리에서 유추됩니다.

  • CONSTRAINT expectation_name 기대 (expectation_expr) [ 위반 시 { 실패 UPDATE | 행 삭제 } ]

    관리 테이블에 데이터 품질 기대치를 추가합니다. 이러한 데이터 품질 기대치는 시간에 따라 추적할 수 있으며, 파이프라인의 이벤트 로그를 통해 접근할 수 있습니다. FAIL UPDATE 예상으로 인해 테이블을 만들고 테이블을 새로 고치면 처리가 실패합니다. DROP ROW 기대치로 인해 기대치가 충족되지 않으면 전체 행이 삭제됩니다. 파이프라인 기대를 사용하여 데이터 품질을 관리하기를 참조하세요.

    expectation_expr 리터럴, 테이블 내 열 식별자, 그리고 결정론적이고 내장된 SQL 함수 또는 연산자로 구성될 수 있으며, 단:

    또한 expectation_expr에는 하위 쿼리가 포함되어서는 안 됩니다.

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

    필요에 따라 열의 하위 집합으로 테이블을 분할합니다.

  • CLUSTER BY 절

    필요에 따라 테이블에서 액체 클러스터링을 사용하도록 설정합니다. 결합 PARTITIONED BY 할 수 없습니다.CLUSTER BY

  • 위치 경로

    테이블 데이터의 선택적 스토리지 위치입니다.

  • 코멘트 table_comment

    STRING 테이블을 설명하는 리터럴입니다.

  • TBLPROPERTIES 절

    필요에 따라 하나 이상의 사용자 정의 테이블 속성을 설정합니다.

  • WITH ROW FILTER 절

    테이블에 행 필터 함수를 추가합니다. 해당 테이블에 대한 이후 쿼리는 함수가 계산되는 행의 하위 집합을 TRUE받습니다.

  • FLOW INSERT [ONCE] BY NAME 쿼리

    결과 열을 테이블 열과 query별로 일치시켜 테이블에 결과를 삽입하는 추가 흐름을 정의합니다. query 는 일괄 처리 또는 스트리밍 원본을 참조할 수 있습니다. ONCE 는 모든 업데이트가 아닌 한 번 흐름(예: 백필)을 실행합니다. 명명된 각 흐름은 스트리밍 테이블에서와 동일한 FLOW INSERT BY NAME 파이프라인 업데이트당 입력을 정확히 한 번 처리합니다.

Limitations

  • 관리되는 테이블은 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 카탈로그를 사용하는 파이프라인에서만 지원됩니다. Hive 메타스토어는 지원되지 않습니다.
  • 관리되는 테이블에 대해 기존 스트리밍 테이블의 이름을 다시 사용할 수 없습니다. 먼저 스트리밍 테이블을 삭제하거나 문이 .와 함께 CANNOT_SWITCH_STREAMING_TABLE_TO_MANAGED_TABLE실패합니다.

예제

-- Create a managed table populated by an inline append flow from a streaming table
CREATE TABLE output
FLOW INSERT BY NAME SELECT * FROM STREAM(samples.tpch.orders);

-- Create a managed table that ingests files with schema inference and evolution
CREATE TABLE raw_data
FLOW INSERT BY NAME
  SELECT * FROM STREAM read_files('abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/base/path');

-- 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');

-- Create a managed table with liquid clustering
CREATE TABLE orders_clustered
CLUSTER BY (order_date, customer_id)
FLOW INSERT BY NAME
  SELECT
    o_orderkey   AS order_id,
    o_custkey    AS customer_id,
    o_orderdate  AS order_date,
    o_totalprice AS total_price
  FROM STREAM(samples.tpch.orders);

-- Create a managed table with a data quality expectation that drops violating rows
CREATE TABLE valid_events
  (CONSTRAINT positive_id EXPECT (id > 0) ON VIOLATION DROP ROW)
FLOW INSERT BY NAME
  SELECT id FROM STREAM read_files('s3://bucket/path', format => 'json');

추가 리소스