Freigeben über


CREATE STREAMING TABLE (Pipelines)

Eine Streamingtabelle ist eine Tabelle mit Unterstützung für Streaming oder inkrementelle Datenverarbeitung. Streamingtabellen werden von Pipelines gestützt. Jedes Mal, wenn eine Streamingtabelle aktualisiert wird, werden die Daten, die zu den Quelltabellen hinzugefügt wurden, an die Streamingtabelle angehängt. Sie können Streamingtabellen manuell oder in einem Zeitplan aktualisieren.

Weitere Informationen zum Ausführen oder Planen von Aktualisierungen finden Sie unter Ausführen eines Pipelineupdates.

Syntax

CREATE [OR REFRESH] [PRIVATE] STREAMING TABLE
  table_name
  [ table_specification ]
  [ table_clauses ]
  [ AS query ]

table_specification
  ( { column_identifier column_type [column_properties] } [, ...]
    [ column_constraint ] [, ...]
    [ , table_constraint ] [...] )

   column_properties
      { NOT NULL | COMMENT column_comment | column_constraint | MASK clause } [ ... ]

table_clauses
  { USING DELTA
    PARTITIONED BY (col [, ...]) |
    CLUSTER BY clause |
    LOCATION path |
    COMMENT view_comment |
    TBLPROPERTIES clause |
    WITH { ROW FILTER clause } } [ ... ]

Die Parameter

  • REFRESH

    Wenn angegeben, wird die Tabelle erstellt oder eine vorhandene Tabelle und deren Inhalt aktualisiert.

  • PRIVATE

    Erstellt eine private Streamingtabelle.

    • Sie werden nicht zum Katalog hinzugefügt und sind nur innerhalb der definierenden Pipeline zugänglich.
    • Sie können denselben Namen wie ein vorhandenes Objekt im Katalog haben. Wenn innerhalb der Pipeline eine private Streamingtabelle und ein Objekt im Katalog denselben Namen haben, werden Verweise auf diesen Namen der privaten Streamingtabelle zugeordnet.
    • Private Streamingtabellen werden während der gesamten Lebensdauer der Pipeline beibehalten, nicht nur während eines einzelnen Updates.

    Private Streamingtabellen wurden zuvor mit dem TEMPORARY Parameter erstellt.

  • table_name

    Der Name der neu erstellten Tabelle. Der vollqualifizierte Tabellenname muss eindeutig sein.

  • Tabellenspezifikation

    Diese optionale Klausel definiert die Liste der Spalten, deren Typen, Eigenschaften, Beschreibungen und Spalteneinschränkungen.

    • column_identifier

      Die Spaltennamen müssen eindeutig sein und mit den Ausgabespalten der Abfrage übereinstimmen.

    • Spaltentyp

      Gibt den Datentyp der Spalte an. Nicht alle datentypen, die von Azure Databricks unterstützt werden, werden von Streamingtabellen unterstützt.

    • column_comment

      Ein optionales STRING-Literal, das die Spalte beschreibt. Diese Option muss zusammen mit column_type angegeben werden. Wenn der Spaltentyp nicht angegeben ist, wird der Spaltenkommentar übersprungen.

    • column_constraint

      Fügt eine Einschränkung hinzu, die Daten überprüft, während sie in die Tabelle fließt. Weitere Informationen finden Sie unter Verwalten der Datenqualität mit Pipelineerwartungen.

    • MASK-Klausel

      Von Bedeutung

      Dieses Feature befindet sich in der Public Preview.

      Fügt eine Spaltenmaskierungsfunktion hinzu, um sensible Daten zu anonymisieren.

      Siehe Zeilenfilter und Spaltenmasken.

  • Tabellenbeschränkung

    Von Bedeutung

    Dieses Feature befindet sich in der Public Preview.

    Beim Angeben eines Schemas können Sie Primär- und Fremdschlüssel definieren. Die Constraints dienen der Information und werden nicht erzwungen. Siehe die CONSTRAINTKlausel in der SQL-Sprachreferenz.

    Hinweis

    Um Tabelleneinschränkungen zu definieren, muss ihre Pipeline eine Unity-Katalog-fähige Pipeline sein.

  • Tabellenklauseln

    Geben Sie optional Partitionierung, Kommentare und benutzerdefinierte Eigenschaften für die Tabelle an. Jede Unterklausel kann nur einmal angegeben werden.

    • VERWENDEN VON DELTA

      Gibt das Datenformat an. Die einzige Option ist DELTA.

      Diese Klausel ist optional und standardmäßig DELTA.

    • PARTITIONIERT VON

      Eine optionale Liste mit einer oder mehreren Spalten, die für die Partitionierung in der Tabelle verwendet werden sollen. Gegenseitiger Ausschluss mit CLUSTER BY

      Flüssigkeitsclustering bietet eine flexible, optimierte Lösung für Clustering. Erwägen Sie die Verwendung von CLUSTER BY anstelle von PARTITIONED BY für Pipelines.

    • CLUSTER BY

      Aktivieren des Liquid Clustering für die Tabelle und Definieren der Spalten, die als Clusterschlüssel verwendet werden sollen. Verwenden Sie automatische Flüssigclustering mit CLUSTER BY AUTO, und Databricks wählt intelligent Clustering-Schlüssel aus, um die Abfrageleistung zu optimieren. Gegenseitiger Ausschluss mit PARTITIONED BY

      Siehe Verwenden von Flüssigclustering für Tabellen.

    • ORT

      Ein optionaler Speicherort für Tabellendaten. Wenn diese Einstellung nicht festgelegt ist, verwendet das System standardmäßig den Speicherort der Pipeline.

    • KOMMENTAR

      Ein optionales STRING-Literal zum Beschreiben der Tabelle.

    • TBLPROPERTIES

      Eine optionale Liste der Tabelleneigenschaften für die Tabelle.

    • MIT ROW FILTER

    Von Bedeutung

    Dieses Feature befindet sich in der Public Preview.

    Fügt der Tabelle eine Zeilenfilterfunktion hinzu. Zukünftige Abfragen für diese Tabelle erhalten eine Teilmenge der Zeilen, für die die Funktion als TRUE ausgewertet wird. Dies ist für eine differenzierte Zugriffssteuerung nützlich, da die Funktion dadurch die Identität oder Gruppenmitgliedschaften der aufrufenden Benutzenden überprüfen kann, um zu entscheiden, ob bestimmte Zeilen gefiltert werden sollen.

    Siehe ROW FILTER Klausel.

  • Frage

    Diese Klausel füllt die Tabelle mit den Daten aus query auf. Diese Abfrage muss eine Streamingabfrage sein. Verwenden Sie das STREAM-Schlüsselwort, um Streamingsemantik zum Lesen aus der Quelle zu verwenden. Wenn beim Lesen eine Änderung oder löschung in einem vorhandenen Datensatz auftritt, wird ein Fehler ausgelöst. Es ist am sichersten, aus statischen oder nur angefügten Quellen zu lesen. Zum Einlesen von Daten mit Änderungs-Commits können Sie Python und die SkipChangeCommits Option zur Fehlerbehandlung verwenden.

    Bei gemeinsamer Angabe von query und table_specification muss das in table_specification angegebene Tabellenschema alle von query zurückgegebenen Spalten enthalten. Andernfalls tritt ein Fehler auf. Alle Spalten, die in table_specification angegeben, aber nicht von query zurückgegeben wurden, geben bei der Abfrage null-Werte zurück.

    Weitere Informationen zum Streamen von Daten finden Sie unter Transformieren von Daten mit Pipelines.

Erforderliche Berechtigungen

Das für die Ausführung einer Pipeline verwendete Benutzendenkonto muss über die folgenden Berechtigungen verfügen:

  • Berechtigung SELECT für die Basistabellen, auf die von der Streamingtabelle verwiesen wird.
  • Berechtigung USE CATALOG für den übergeordneten Katalog und Berechtigung USE SCHEMA für das übergeordnete Schema.
  • Berechtigung CREATE MATERIALIZED VIEW für das Schema für die Streamingtabelle.

Damit ein Benutzer die Pipeline aktualisieren kann, in der die Streamingtabelle definiert ist, ist folgendes erforderlich:

  • Berechtigung USE CATALOG für den übergeordneten Katalog und Berechtigung USE SCHEMA für das übergeordnete Schema.
  • Besitz der Streamingtabelle oder Berechtigung REFRESH für die Streamingtabelle.
  • Der Besitzer der Streamingtabelle muss über die SELECT Berechtigungen für die Basistabellen verfügen, auf die von der Streamingtabelle verwiesen wird.

Damit ein Benutzer die resultierende Streamingtabelle abfragen kann, ist Folgendes erforderlich:

  • Berechtigung USE CATALOG für den übergeordneten Katalog und Berechtigung USE SCHEMA für das übergeordnete Schema.
  • Berechtigung SELECT für die Streamingtabelle.

Einschränkungen

  • Nur Tabellenbesitzende können Streamingtabellen aktualisieren, um die neuesten Daten abzurufen.
  • ALTER TABLE-Befehle sind für Streamingtabellen nicht zulässig. Die Definition und die Eigenschaften der Tabelle sollten durch die CREATE OR REFRESH- oder ALTER STREAMING TABLE-Anweisung geändert werden.
  • Die Weiterentwicklung des Tabellenschemas durch DML-Befehle wie INSERT INTO und MERGE wird nicht unterstützt.
  • Die folgenden Befehle werden für Streamingtabellen nicht unterstützt:
    • CREATE TABLE ... CLONE <streaming_table>
    • COPY INTO
    • ANALYZE TABLE
    • RESTORE
    • TRUNCATE
    • GENERATE MANIFEST
    • [CREATE OR] REPLACE TABLE
  • Das Umbenennen der Tabelle oder das Ändern des Besitzers bzw. der Besitzerin wird nicht unterstützt.
  • Generierte Spalten, Identitätsspalten und Standardspalten werden nicht unterstützt.

Examples

-- Define a streaming table from a volume of files:
CREATE OR REFRESH STREAMING TABLE customers_bronze
AS SELECT * FROM STREAM read_files("/databricks-datasets/retail-org/customers/*", format => "csv")

-- Define a streaming table from a streaming source table:
CREATE OR REFRESH STREAMING TABLE customers_silver
AS SELECT * FROM STREAM(customers_bronze)

-- Define a table with a row filter and column mask:
CREATE OR REFRESH STREAMING TABLE customers_silver (
  id int COMMENT 'This is the customer ID',
  name string,
  region string,
  ssn string MASK catalog.schema.ssn_mask_fn COMMENT 'SSN masked for privacy'
)
WITH ROW FILTER catalog.schema.us_filter_fn ON (region)
AS SELECT * FROM STREAM(customers_bronze)

-- Define a streaming table that you can add flows into:
CREATE OR REFRESH STREAMING TABLE orders;