CREATE TABLE ... FLOW (Pipelines)

Important

Dieses Feature befindet sich in der Betaversion.

Verwenden Sie die CREATE TABLE ... FLOW Anweisung, um eine verwaltete Tabelle in einer Pipeline zu erstellen, die von einem oder mehreren Flüssen geschrieben wurde.

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

Um mehrere Quellen in eine verwaltete Tabelle einzufächern, deklarieren Sie mehrere Flüsse, die auf sie mit CREATE FLOW (Pipelines) abzielen:

CREATE FLOW flow_name AS INSERT INTO table_name BY NAME query

Parameters

  • table_name

    Der Name der zu erstellenden verwalteten Tabelle. Wenn der Name nicht qualifiziert ist, wird die Tabelle im Zielschema der Pipeline erstellt. Der Name darf noch nicht zu einer Streamingtabelle gehören.

  • Tabellenspezifikation

    Definiert optional die Spalten, deren Typen, Eigenschaften und Beschreibungen. Wenn sie weggelassen wird, wird das Schema aus der Flussabfrage abgeleitet.

  • CONSTRAINT expectation_name ERWARTEN (expectation_expr) [ ON VIOLATION { FAIL UPDATE | DROP ROW } ]

    Fügt Datenqualitätserwartungen in die verwaltete Tabelle hinzu. Diese Erwartungen an die Datenqualität können zeitlich verfolgt und über das Ereignisprotokoll der Pipeline abgerufen werden. Die Erwartung FAIL UPDATE bewirkt, dass die Verarbeitung nicht erfolgreich ist, wenn die Tabelle sowohl erstellt als auch aktualisiert wird. Die Erwartung DROP ROW bewirkt, dass die gesamte Zeile gelöscht wird, wenn die Erwartung nicht erfüllt wird. Weitere Informationen finden Sie unter Verwalten der Datenqualität mit Pipelineerwartungen.

    expectation_expr können aus Literalen, Spaltenkennungen innerhalb der Tabelle und deterministischen, integrierten SQL-Funktionen oder -Operatoren bestehen, außer:

    Darüber hinaus darf expectation_expr keine Unterabfrage enthalten.

  • PARTITIONIERT VON (Spalte [, ...])

    Partitioniert die Tabelle optional durch eine Teilmenge von Spalten.

  • CLUSTER BY Klausel

    Ermöglicht optional die Flüssigkeitsclusterung auf dem Tisch. Sie können nicht kombinieren PARTITIONED BY und CLUSTER BY.

  • LOCATION-Pfad

    Ein optionaler Speicherort für die Tabellendaten.

  • KOMMENTAR table_comment

    Ein STRING Literal, das die Tabelle beschreibt.

  • TBLPROPERTIES-Klausel

    Legt optional eine oder mehrere benutzerdefinierte Tabelleneigenschaften fest.

  • WITH-Klausel ROW FILTER

    Fügt der Tabelle eine Zeilenfilterfunktion hinzu. Zukünftige Abfragen für diese Tabelle erhalten eine Teilmenge der Zeilen, für die die Funktion ausgewertet wird TRUE.

  • FLOW INSERT [ONCE] BY NAME-Abfrage

    Definiert einen Anfügefluss, der das Ergebnis der query Tabelle einfügt, wobei Ergebnisspalten nach Namen zu Tabellenspalten übereinstimmen. query kann auf Batch- oder Streamingquellen verweisen. ONCE führt den Ablauf nur einmal aus (z. B. bei einem Rückfüllvorgang), anstatt auf jeder Aktualisierung. Jeder benannte Fluss verarbeitet seine Eingabe genau einmal pro Pipelineaktualisierung, identisch mit FLOW INSERT BY NAME einer Streamingtabelle.

Einschränkungen

  • Verwaltete Tabellen unterstützen keine CDC-Änderungsflüsse. AUTO CDC INTO(SQL) oder apply_changes / apply_changes_from_snapshot (Python) für eine verwaltete Tabelle schlägt mit MANAGED_TABLE_DOES_NOT_SUPPORT_CDC. Verwenden Sie eine CREATE STREAMING TABLE (Pipeline) für CDC-Ziele.
  • Verwaltete Tabellen werden nicht unterstützt FLOW ... REPLACE WHERE. Nur FLOW INSERT BY NAME wird unterstützt.
  • Verwaltete Tabellen werden nur in Pipelines mit Unity-Katalog unterstützt. Der Hive-Metaspeicher wird nicht unterstützt.
  • Sie können den Namen einer vorhandenen Streamingtabelle für eine verwaltete Tabelle nicht wiederverwenden. Legen Sie die Streamingtabelle zuerst ab, oder die Anweisung schlägt mit CANNOT_SWITCH_STREAMING_TABLE_TO_MANAGED_TABLE.

Beispiele

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

Weitere Ressourcen