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. Használjon (CREATE STREAMING TABLEfolyamatokat) CDC-célokhoz.
  • A felügyelt táblák nem támogatottak FLOW ... REPLACE WHERE. Kizárólag az FLOW INSERT BY NAME támogatott.
  • 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: .

Examples

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

-- 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 LIVE.source;

További források