CREATE TABLE ... FLOW (folyamatok)

Important

Ez a funkció bétaverzióban érhető el.

CREATE TABLE ... FLOW Az utasítással egy felügyelt táblát hozhat létre egy folyamatban, amelyet egy vagy több folyamat ír.

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

Ha több forrást szeretne egy felügyelt táblába beszűkíteni, deklaráljon több olyan folyamatot, amely a CREATE FLOW -val (folyamatokkal) célozza meg:

CREATE FLOW flow_name AS INSERT INTO table_name BY NAME query

Parameters

  • table_name

    A létrehozandó felügyelt tábla neve. Ha a név nincs minősítve, a tábla a folyamat célsémában jön létre. A név nem tartozhat még streamelési táblához.

  • táblázat_specifikáció

    Opcionálisan meghatározza az oszlopokat, azok típusait, tulajdonságait és leírását. Ha nincs megadva, a rendszer a sémát a folyamat lekérdezéséből következteti.

  • CONSTRAINT expectation_name EXPECT (expectation_expr) [ SÉRTÉS ESETÉN { HIBA UPDATE | SOR ELHAGYÁSA } ]

    Hozzáadja az adatminőségi elvárásokat a kezelt táblához. Ezek az adatminőségi elvárások idővel nyomon követhetők, és a pipeline eseménynaplóján keresztül elérhetők. A FAIL UPDATE elvárás miatt a feldolgozás sikertelen lesz a tábla létrehozásakor és a tábla frissítésekor is. Ha DROP ROW a várakozás nem teljesül, az egész sor elvetésre kerül. Lásd Az adatminőség kezelése folyamatelvárásokkal.

    expectation_expr Literálisokból, oszlopazonosítókból állhatnak a táblán belül, valamint determinisztikus, beépített SQL függvényekből vagy operátorokból, kivéve:

    Emellett expectation_expr nem tartalmazhat lekérdezést.

  • PARTICIONÁLT (col [, ...])

    Igény szerint a táblát oszlopok egy részhalmaza particionálásával is particionálhatja.

  • CLUSTER BY klauzula

    Opcionálisan lehetővé teszi a folyékony fürtözést a táblán. Nem egyesíthető és PARTITIONED BYnem kombinálhatóCLUSTER BY.

  • HELY elérési útja

    A táblaadatok opcionális tárolási helye.

  • MEGJEGYZÉS table_comment

    A STRING táblát leíró literál.

  • TBLPROPERTIES záradék

    Igény szerint beállíthat egy vagy több felhasználó által definiált táblatulajdonságokat.

  • WITH ROW FILTER záradék

    Sorszűrő függvényt ad hozzá a táblához. A tábla jövőbeli lekérdezései azoknak a soroknak a részhalmazát kapják meg, amelyekre a függvény kiértékeli a függvényt TRUE.

  • FLOW INSERT [EGYSZER] NÉV SZERINT lekérdezés

    Egy hozzáfűzési folyamatot határoz meg, amely beszúrja query a tábla eredményét, és név szerint megfelelteti az eredményoszlopokat a táblázatoszlopoknak. query köteg- vagy streamelési forrásokra hivatkozhat. ONCE A folyamatot egyetlen alkalommal futtatja (például egy visszatöltés esetén), nem pedig minden frissítésen. Minden elnevezett folyamat folyamatfrissítésenként pontosan egyszer dolgozza fel a bemenetét, ugyanaz, mint FLOW INSERT BY NAME egy streamelési táblában.

Limitations

  • A felügyelt táblák nem támogatják a CDC-változási folyamatokat. AUTO CDC INTO(SQL) vagy apply_changes / apply_changes_from_snapshot (Python) egy felügyelt táblán sikertelen leszMANAGED_TABLE_DOES_NOT_SUPPORT_CDC. CDC célpontokhoz használjunk egyCREATE STREAMING TABLE (pipelines) adatot, amelynek áramlását a CREATE FLOW (pipelines) definiálja.
  • A felügyelt táblák nem támogatottak FLOW ... REPLACE WHERE. Kizárólag az FLOW INSERT BY NAME támogatott. Egy tábla célzott részhalmazának újraszámításához és felülírásához hozzon létre egy streaming táblát, és definiáljon egy REPLACE WHERE áramlást a CREATE FLOW (pipelines) segítségével. Lásd: Kötegelt feldolgozás REPLACE WHERE folyamatokkal.
  • A felügyelt táblák csak a Unity Catalogtal rendelkező folyamatokban támogatottak. A Hive metaadattára nem támogatott.
  • Egy felügyelt tábla meglévő streamelési táblájának nevét nem használhatja újra. Először helyezze el a streamelési táblát, vagy az utasítás meghiúsul a következővel CANNOT_SWITCH_STREAMING_TABLE_TO_MANAGED_TABLE: .
  • CREATE TABLE ... FLOW nem lehet meglévő kezelt táblát alkalmazni. A célpontnak egy új kezelt táblázatnak kell lennie.

Examples

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

További források