CREATE TABLE ... FLÖDE (rörledningar)

Important

Den här funktionen finns i Beta.

Använd -instruktionen CREATE TABLE ... FLOW för att skapa en hanterad tabell i en pipeline som skrivits av ett eller flera flöden.

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

Om du vill koppla flera källor till en hanterad tabell deklarerar du flera flöden som riktar sig mot den med CREATE FLOW (pipelines):

CREATE FLOW flow_name AS INSERT INTO table_name BY NAME query

Parameters

  • table_name

    Namnet på den hanterade tabell som ska skapas. Om namnet inte är kvalificerat skapas tabellen i pipelinens målschema. Namnet får inte redan tillhöra en strömmande tabell.

  • tabellspecifikation

    Du kan också definiera kolumnerna, deras typer, egenskaper och beskrivningar. Om det utelämnas härleds schemat från flödesfrågan.

  • CONSTRAINT expectation_name EXPECT (expectation_expr) [ ON VIOLATION { FAIL UPDATE | TA BORT RAD } ]

    Lägger till datakvalitetsförväntningar i den hanterade tabellen. Dessa datakvalitetsförväntningar kan spåras över tid och nås via pipelinens händelselogg. En FAIL UPDATE förväntan gör att bearbetningen misslyckas både när du skapar tabellen och uppdaterar tabellen. En DROP ROW förväntan gör att hela raden tas bort om förväntningarna inte uppfylls. Se avsnittet Hantera datakvalitet med pipeline-förväntningar.

    expectation_expr kan bestå av literaler, kolumnidentifierare i tabellen och deterministiska, inbyggda SQL-funktioner eller operatorer förutom:

    Får inte heller expectation_expr innehålla någon underfråga.

  • PARTITIONERAD AV (col [, ...])

    Du kan också partitioneras tabellen med en delmängd kolumner.

  • CLUSTER BY-klausul

    Du kan också aktivera flytande klustring i tabellen. Du kan inte kombinera PARTITIONED BY och CLUSTER BY.

  • Plats sökväg

    En valfri lagringsplats för tabelldata.

  • KOMMENTAR table_comment

    En STRING literal som beskriver tabellen.

  • TBLPROPERTIES-sats

    Du kan också ange en eller flera användardefinierade tabellegenskaper.

  • WITH-sats ROW FILTER

    Lägger till en radfilterfunktion i tabellen. Framtida frågor för tabellen tar emot en delmängd av de rader som funktionen utvärderar till TRUE.

  • FLÖDE INSERT [EN GÅNG] EFTER NAMNfråga

    Definierar ett tilläggsflöde som infogar resultatet av query i tabellen och matchar resultatkolumner till tabellkolumner efter namn. query kan referera till batch- eller strömningskällor. ONCE kör flödet en gång (till exempel för en återfyllnad) i stället för vid varje uppdatering. Varje namngivet flöde bearbetar sina indata exakt en gång per pipelineuppdatering, identisk med FLOW INSERT BY NAME i en strömmande tabell.

Limitations

  • Hanterade tabeller stöder inte CDC-ändringsflöden. AUTO CDC INTO(SQL) eller apply_changes / apply_changes_from_snapshot (Python) mot en hanterad tabell misslyckas med MANAGED_TABLE_DOES_NOT_SUPPORT_CDC. Använd en CREATE STREAMING TABLE (pipelines) för CDC-mål.
  • Hanterade tabeller stöder FLOW ... REPLACE WHEREinte . Endast FLOW INSERT BY NAME stöds.
  • Hanterade tabeller stöds endast i pipelines med Unity Catalog. Hive-metaarkivet stöds inte.
  • Du kan inte återanvända namnet på en befintlig strömmande tabell för en hanterad tabell. Släpp direktuppspelningstabellen först, annars misslyckas instruktionen med CANNOT_SWITCH_STREAMING_TABLE_TO_MANAGED_TABLE.

Exempel

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

Ytterligare resurser