Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Databricks empfiehlt die Verwendung von Streamingtabellen zum Erfassen von Daten mit Databricks SQL. Eine Streamingtabelle ist eine bei Unity Catalog registrierte Tabelle mit zusätzlicher Unterstützung für Streaming oder inkrementelle Datenverarbeitung. Für jede Streamingtabelle wird automatisch eine Pipeline erstellt. Sie können Streamingtabellen für das inkrementelle Laden von Daten von Kafka und vom Cloudobjektspeicher verwenden.
Hinweis
Informationen darüber, wie Delta Lake-Tabellen als Streamingquellen und Streaming-Senken genutzt werden, finden Sie unter Delta-Tabellen-Streaming: Lese- und Schreibvorgänge.
Anforderungen
Um Streamingtabellen zu verwenden, müssen Sie die folgenden Anforderungen erfüllen.
Anforderungen an den Arbeitsbereich:
In Databricks SQL erstellte Streamingtabellen werden von serverlosen Pipelines unterstützt. Ihr Arbeitsbereich muss serverlose Pipelines unterstützen, um diese Funktionalität zu verwenden.
- Ein Azure Databricks-Konto mit aktiviertem serverlosen Konto. Weitere Informationen finden Sie unter Aktivieren von serverlosen SQL-Warehouses.
- Ein Arbeitsbereich, für den Unity Catalog aktiviert ist. Weitere Informationen finden Sie unter "Erste Schritte mit Unity-Katalog".
Computeanforderungen:
Sie müssen eine der folgenden Voraussetzungen verwenden:
- Ein SQL-Warehouse, das den
Current-Kanal verwendet. - Berechnungen mit dem Standardzugriffsmodus (früher gemeinsam genutzter Zugriffsmodus) auf Databricks Runtime 13.3 LTS oder höher.
Berechnen Sie mit dem dedizierten Zugriffsmodus (früher Einzelbenutzer-Zugriffsmodus) auf Databricks Runtime 15.4 LTS oder höher.
Unter Databricks Runtime 15.3 und unten können Sie keine dedizierte Berechnung verwenden, um Streamingtabellen abzufragen, die im Besitz anderer Benutzer sind. Sie können dedizierte Berechnungskapazität auf Databricks Runtime 15.3 und früheren Versionen nur verwenden, wenn Sie die Streamingtabelle besitzen. Der Ersteller der Tabelle ist der Besitzer.
Databricks Runtime 15.4 LTS und höher unterstützen das Abfragen von pipeline-erzeugten Tabellen auf dedizierter Rechenkapazität, auch wenn Sie nicht der Tabellenbesitzer sind. Sie könnten für serverlose Rechnerressourcen belastet werden, wenn Sie dedizierte Rechnerkapazitäten verwenden, um Datenfiltervorgänge auszuführen. Siehe Feingranulare Zugriffssteuerung auf dedizierten Rechenressourcen.
Berechtigungsanforderungen:
- Die Berechtigungen
USE CATALOGundUSE SCHEMAfür den Katalog und das Schema, wo Sie die Streamingtabelle erstellen. - Die
CREATE TABLE-Berechtigung für das Schema, in dem Sie die Streamingtabelle erstellen. - Berechtigungen für den Zugriff auf die Tabellen oder Speicherorte, die die Quelldaten für Ihre Streamingtabelle bereitstellen.
Erstellen von Streamingtabellen
Eine Streamingtabelle wird durch eine SQL-Abfrage in Databricks SQL definiert. Wenn Sie eine Streamingtabelle erstellen, werden die daten, die sich derzeit in den Quelltabellen befinden, verwendet, um die Streamingtabelle zu erstellen. Danach aktualisieren Sie die Tabelle, in der Regel nach einem Zeitplan, um alle hinzugefügten Daten in den Quelltabellen abzurufen, um sie an die Streamingtabelle anzufügen.
Wenn Sie eine Streamingtabelle erstellen, werden Sie als Besitzer der Tabelle betrachtet.
Um eine Streamingtabelle aus einer vorhandenen Tabelle zu erstellen, verwenden Sie die CREATE STREAMING TABLE Anweisung wie im folgenden Beispiel:
CREATE OR REFRESH STREAMING TABLE sales
SCHEDULE EVERY 1 hour
AS SELECT product, price FROM STREAM raw_data;
In diesem Fall wird die Streamingtabelle sales aus bestimmten Spalten der raw_data Tabelle mit einem Zeitplan erstellt, der jede Stunde aktualisiert werden soll. Die verwendete Abfrage muss eine Streamingabfrage sein. Verwenden Sie das STREAM Schlüsselwort, um Streamingsemantik zum Lesen aus der Quelle zu verwenden.
Wenn Sie eine Streamingtabelle mit der CREATE OR REFRESH STREAMING TABLE Anweisung erstellen, beginnen die anfängliche Datenaktualisierung und -population sofort. Diese Vorgänge verbrauchen keine DBSQL Warehouse Compute. Stattdessen basieren Streamingtabellen auf serverlose Pipelines für die Erstellung und Aktualisierung. Eine dedizierte serverlose Pipeline wird automatisch vom System für jede Streamingtabelle erstellt und verwaltet.
Laden von Dateien mit automatischem Ladeprogramm
Um eine Streamingtabelle aus Dateien in einem Volume zu erstellen, verwenden Sie das automatische Laden. Verwenden Sie das automatische Laden für die meisten Datenaufnahmeaufgaben aus dem Cloudobjektspeicher. Auto Loader und Pipelines sind so konzipiert, dass sie inkrementell und idempotent immer größer werdende Daten laden, sobald sie im Cloud-Speicher eingehen.
Verwenden Sie die read_files Funktion, um auto Loader in Databricks SQL zu verwenden. Die folgenden Beispiele zeigen die Verwendung von Auto Loader zum Lesen eines Volumens von JSON-Dateien in eine Streamingtabelle:
CREATE OR REFRESH STREAMING TABLE sales
SCHEDULE EVERY 1 hour
AS SELECT * FROM STREAM read_files(
"/Volumes/my_catalog/my_schema/my_volume/path/to/data",
format => "json"
);
Um Daten aus cloudbasiertem Speicher zu lesen, können Sie auch das automatische Laden verwenden:
CREATE OR REFRESH STREAMING TABLE sales
SCHEDULE EVERY 1 hour
AS SELECT *
FROM STREAM read_files(
'abfss://myContainer@myStorageAccount.dfs.core.windows.net/analysis/*/*/*.json',
format => "json"
);
Weitere Informationen zum automatischen Laden finden Sie unter "Was ist auto Loader?" Weitere Informationen zur Verwendung des automatischen Ladeprogramms in SQL mit Beispielen finden Sie unter Laden von Daten aus objektspeicher.
Erfassung per Streaming aus anderen Quellen
Beispiel für die Aufnahme aus anderen Quellen, einschließlich Kafka, finden Sie unter Laden von Daten in Pipelines.
Nur neue Daten aufnehmen
Standardmäßig liest die read_files-Funktion alle vorhandenen Daten im Quellverzeichnis während der Tabellenerstellung und verarbeitet dann neu eingehende Datensätze mit jeder Aktualisierung.
Um das Aufnehmen von Daten zu vermeiden, die zum Zeitpunkt der Tabellenerstellung bereits im Quellverzeichnis vorhanden sind, legen Sie die Option includeExistingFiles auf falsefest. Dies bedeutet, dass nur Daten verarbeitet werden, die nach der Tabellenerstellung im Verzeichnis eingehen. Beispiel:
CREATE OR REFRESH STREAMING TABLE sales
SCHEDULE EVERY 1 hour
AS SELECT *
FROM STREAM read_files(
'/path/to/files',
includeExistingFiles => false
);
Festlegen des Laufzeitkanals
Streamingtabellen, die mit SQL-Lagerhäusern erstellt wurden, werden automatisch mithilfe einer Pipeline aktualisiert. Pipelines verwenden standardmäßig die Runtime im current Kanal. Lesen Sie die Versionshinweise zu Lakeflow Spark Declarative Pipelines und den Releaseupgradeprozess , um mehr über den Veröffentlichungsprozess zu erfahren.
Databricks empfiehlt die Verwendung des current Kanals für Produktionsworkloads. Neue Features werden zuerst im preview Kanal veröffentlicht. Sie können eine Pipeline auf den Vorschaukanal festlegen, um neue Features zu testen, indem Sie als Tabelleneigenschaft angeben preview . Sie können diese Eigenschaft angeben, wenn Sie die Tabelle erstellen oder nachdem die Tabelle mithilfe einer ALTER-Anweisung erstellt wurde.
Das folgende Codebeispiel zeigt, wie Sie den Kanal in einer CREATE-Anweisung auf eine Vorschau festlegen:
CREATE OR REFRESH STREAMING TABLE sales
TBLPROPERTIES ('pipelines.channel' = 'preview')
SCHEDULE EVERY 1 hour
AS SELECT *
FROM STREAM raw_data;
Planen von Aktualisierungen der Streamingtabelle
Sie können eine SQL-Streamingtabelle für Databricks so konfigurieren, dass sie automatisch basierend auf einem definierten Zeitplan aktualisiert oder ausgelöst wird, wenn upstream-Daten geändert werden.
Führen Sie zum Festlegen eines Zeitplans oder Triggers eine der folgenden Aktionen aus:
- Konfigurieren Sie den Zeitplan mit der
SCHEDULEKlausel, wenn Sie die Streamingtabelle erstellen. - Konfigurieren Sie einen Trigger mit der
TRIGGER ON UPDATEKlausel, wenn Sie die Tabelle erstellen. - Fügen Sie Zeitpläne oder Trigger mit der Anweisung hinzu, oder ändern Sie sie ALTER STREAMING TABLE .
Hinweis
Erstellen Sie alternativ eine Aufgabe in einem Auftrag, der entweder die CREATE OR REFRESH STREAMING TABLE Oder eine REFRESH Aussage enthält, und koordinieren Sie sie wie jede andere Aufgabe. Siehe Lakeflow Jobs.
Wenn Sie einen Zeitplan erstellen, erstellt Azure Databricks automatisch einen neuen Auftrag zum Verarbeiten des Updates.
Führen Sie zum Anzeigen des Zeitplans einen der folgenden Schritte aus:
- Führen Sie die
DESCRIBE EXTENDEDAnweisung aus dem SQL-Editor in der Azure Databricks-Benutzeroberfläche aus. Siehe DESCRIBE TABLE. - Verwenden Sie den Katalog-Explorer, um die Streamingtabelle anzuzeigen. Der Zeitplan wird auf der Registerkarte Übersicht unter Aktualisierungsstatus aufgeführt. Siehe Was ist der Katalog-Explorer?.
Auch bei einem Aktualisierungszeitplan können Sie jederzeit eine manuelle Aktualisierung ausführen, wenn Sie aktualisierte Daten benötigen.
Ausblenden vertraulicher Daten
Sie können Streamingtabellen verwenden, um vertrauliche Daten von Benutzern auszublenden, die auf die Tabelle zugreifen. Ein Ansatz besteht darin, die Abfrage so zu definieren, dass vertrauliche Spalten oder Zeilen vollständig ausgeschlossen werden. Alternativ können Sie Spaltenmasken oder Zeilenfilter basierend auf den Berechtigungen des Abfragebenutzers anwenden. Beispielsweise könnten Sie die tax_id Spalte für Benutzer ausblenden, die sich nicht in der Gruppe HumanResourcesDeptbefinden. Verwenden Sie dazu die ROW FILTER und MASK Syntax während der Erstellung der Streamingtabelle. Weitere Informationen finden Sie unter Zeilenfilter und Spaltenmasken.
Aktualisieren einer Streamingtabelle
Aktualisierungen können automatisch geplant werden, wenn Sie die Streamingtabelle erstellen. Sie können Streamingtabellen auch manuell aktualisieren. Auch wenn Sie über eine geplante Aktualisierung verfügen, können Sie jederzeit eine manuelle Aktualisierung aufrufen. Aktualisierungen werden von derselben Pipeline behandelt, die automatisch zusammen mit der Streamingtabelle erstellt wurde.
So aktualisieren Sie eine Streamingtabelle:
REFRESH STREAMING TABLE sales;
Sie können den Status der neuesten Aktualisierung mit DESCRIBE TABLE EXTENDED überprüfen.
Hinweis
Möglicherweise müssen Sie Ihre Streamingtabelle aktualisieren, bevor Sie Zeitreise-Abfragen verwenden.
Funktionsweise der Aktualisierung
Eine Aktualisierung einer Streamingtabelle wertet nur neue Zeilen aus, die seit der letzten Aktualisierung eingegangen sind, und fügt nur die neuen Daten an.
Jede Aktualisierung verwendet die aktuelle Definition der Streamingtabelle, um diese neuen Daten zu verarbeiten. Das Ändern einer Streamingtabellendefinition berechnet vorhandene Daten nicht automatisch neu. Wenn eine Änderung nicht mit vorhandenen Daten kompatibel ist (z. B. ändern eines Datentyps), schlägt die nächste Aktualisierung mit einem Fehler fehl.
In den folgenden Beispielen wird erläutert, wie sich Änderungen an einer Streamingtabellendefinition auf das Aktualisierungsverhalten auswirken:
- Durch das Entfernen eines Filters werden zuvor gefilterte Zeilen nicht erneut verarbeitet.
- Das Ändern von Spaltenprojektionen wirkt sich nicht darauf aus, wie vorhandene Daten verarbeitet wurden.
- Verknüpfungen mit statischen Momentaufnahmen verwenden den Momentaufnahmezustand zum Zeitpunkt der anfänglichen Verarbeitung. Spät ankommende Daten, die mit der aktualisierten Momentaufnahme übereinstimmen würden, werden ignoriert. Dies kann dazu führen, dass Fakten ignoriert werden, wenn Dimensionen verspätet sind.
- Das Ändern des CAST einer vorhandenen Spalte führt zu einem Fehler.
Wenn sich Ihre Daten auf eine Weise ändern, die in der vorhandenen Streamingtabelle nicht unterstützt werden kann, können Sie eine vollständige Aktualisierung durchführen.
Vollständiges Aktualisieren einer Streamingtabelle
Vollständige Aktualisierungen verarbeiten alle in der Quelle verfügbaren Daten mit der neuesten Definition erneut. Es wird nicht empfohlen, vollständige Aktualisierungen für Quellen aufzurufen, die den gesamten Verlauf der Daten nicht beibehalten oder kurze Aufbewahrungsfristen haben, z. B. Kafka, da die vollständige Aktualisierung die vorhandenen Daten abschneidet. Möglicherweise können Sie alte Daten nicht wiederherstellen, wenn die Daten in der Quelle nicht mehr verfügbar sind.
Beispiel:
REFRESH STREAMING TABLE sales FULL;
Ändern des Zeitplans für eine Streamingtabelle
Sie können eine SQL-Streamingtabelle für Databricks so konfigurieren, dass sie automatisch basierend auf einem definierten Zeitplan aktualisiert oder ausgelöst wird, wenn upstream-Daten geändert werden. In der folgenden Tabelle sind die verschiedenen Optionen für die Planung von Aktualisierungen aufgeführt.
| Methode | Description | Beispiel eines Anwendungsfalls |
|---|---|---|
| Manuell | Aktualisierung bei Bedarf mithilfe einer SQL-Anweisung REFRESH oder über die Arbeitsbereichs-UI. |
Entwicklung, Tests, Ad-hoc-Updates. |
TRIGGER ON UPDATE |
Definieren Sie die Streamingtabelle, die beim Ändern der Upstreamdaten automatisch aktualisiert werden soll. | Produktionsworkloads mit Datenfrischungs-SLAs oder unvorhersehbaren Aktualisierungszeiträumen. |
SCHEDULE |
Definieren Sie die Streamingtabelle, die in definierten Zeitintervallen aktualisiert werden soll. | Vorhersehbare, zeitbasierte Aktualisierungsanforderungen. |
| SQL-Aufgabe in einem Auftrag | Die Aktualisierung wird durch Lakeflow Jobs orchestriert. | Komplexe Pipelines mit systemübergreifenden Abhängigkeiten. |
Manuelle Aktualisierung
Um eine Streamingtabelle manuell zu aktualisieren, können Sie eine Aktualisierung aus Databricks SQL aufrufen oder die Arbeitsbereichs-UI verwenden.
REFRESH-Anweisung
So aktualisieren Sie eine Pipeline mit Databricks SQL:
Im
im SQL-Editor führen Sie die folgende Anweisung aus:
REFRESH MATERIALIZED VIEW <table-name>;
Weitere Informationen finden Sie unter REFRESH (MATERIALIZED VIEW oder STREAMING TABLE).
Benutzeroberfläche des Arbeitsbereichs
So aktualisieren Sie eine Pipeline in der Arbeitsbereichs-UI:
- Klicken Sie im Azure Databricks-Arbeitsbereich auf
Aufträge & Pipelines.
- Wählen Sie die Pipeline aus, die Sie aus der Liste aktualisieren möchten.
- Klicken Sie auf die Schaltfläche Start.
Während die Pipeline aktualisiert wird, werden Aktualisierungen in der Benutzeroberfläche angezeigt.
Auslösen bei Aktualisierung
Die TRIGGER ON UPDATE Klausel aktualisiert automatisch eine Streamingtabelle, wenn sich upstream-Quelldaten ändern. Dies beseitigt die Notwendigkeit, Zeitpläne über Pipelines hinweg zu koordinieren. Die Streamingtabelle bleibt frisch, ohne dass der Benutzer wissen muss, wann Upstream-Jobs abgeschlossen sind oder komplexe Planungslogik verwalten zu müssen.
Dies ist der empfohlene Ansatz für Produktionsworkloads, insbesondere, wenn vorherige Abhängigkeiten nicht nach vorhersehbaren Zeitplänen ablaufen. Nach der Konfiguration überwacht die Streamingtabelle ihre Quelltabellen und aktualisiert sich automatisch, wenn Änderungen in einer der upstream-Quellen erkannt werden.
Einschränkungen
- Upstream-Abhängigkeitsgrenzwerte: Eine Streamingtabelle kann maximal 10 Upstreamtabellen und 30 Upstreamansichten überwachen. Für weitere Abhängigkeiten teilen Sie die Logik auf mehrere Streaming-Tabellen auf.
- Arbeitsbereichsbeschränkungen: Pro Arbeitsbereich können maximal 1.000
TRIGGER ON UPDATEStreamingtabellen vorhanden sein. Wenden Sie sich an den Databricks-Support, wenn mehr als 1.000 Streamingtabellen erforderlich sind. - Minimales Intervall: Das minimale Auslöserintervall beträgt 1 Minute.
In den folgenden Beispielen wird gezeigt, wie sie beim Definieren einer Streamingtabelle einen Trigger für das Update festlegen.
Erstellen einer Streamingtabelle mit Trigger beim Aktualisieren
Wenn Sie eine Streamingtabelle erstellen möchten, die beim Ändern von Quelldaten automatisch aktualisiert wird, schließen Sie die TRIGGER ON UPDATE Klausel in die CREATE STREAMING TABLE Anweisung ein.
Im folgenden Beispiel wird eine Streamingtabelle erstellt, die Kundenbestellungen liest und bei jeder Aktualisierung der Quelltabelle orders aktualisiert wird:
CREATE OR REFRESH STREAMING TABLE catalog.schema.customer_orders
TRIGGER ON UPDATE
AS SELECT
o.customer_id,
o.name,
o.order_id
FROM catalog.schema.orders o;
Aktualisierungsfrequenz der Drosselung
Wenn Upstream-Daten häufig aktualisiert werden, verwenden Sie AT MOST EVERY, um zu steuern, wie oft die Ansicht aktualisiert wird, und die Berechnungskosten zu reduzieren. Dies ist nützlich, wenn Quelltabellen häufig aktualisiert werden, aber nachgeschaltete Verbraucher benötigen keine Echtzeitdaten. Das INTERVAL Schlüsselwort ist vor dem Zeitwert erforderlich.
Im folgenden Beispiel wird die Streamingtabelle maximal alle 5 Minuten aktualisiert, auch wenn sich Quelldaten häufiger ändern:
CREATE OR REFRESH STREAMING TABLE catalog.schema.customer_orders
TRIGGER ON UPDATE AT MOST EVERY INTERVAL 5 MINUTES
AS SELECT
o.customer_id,
o.name,
o.order_id
FROM catalog.schema.orders o;
Geplante Aktualisierung
Aktualisierungszeitpläne können direkt in der Definition der Streamingtabelle definiert werden, um die Ansicht in festen Zeitintervallen zu aktualisieren. Dieser Ansatz ist nützlich, wenn der Datenaktualisierungsrhythmen bekannt ist und eine vorhersagbare Aktualisierungszeitdauer gewünscht wird.
Wenn ein Aktualisierungszeitplan vorhanden ist, können Sie jederzeit eine manuelle Aktualisierung ausführen, wenn Sie aktualisierte Daten benötigen.
Databricks unterstützt zwei Planungssyntaxen: SCHEDULE EVERY für einfache Intervalle und SCHEDULE CRON für präzise Planung. Die SCHEDULE Schlüsselwörter und SCHEDULE REFRESH Schlüsselwörter sind semantisch gleichwertig.
Ausführliche Informationen zur Syntax und Verwendung der SCHEDULE Klausel finden Sie unter CREATE STREAMING TABLE SCHEDULE-Klausel.
Beim Erstellen eines Zeitplans wird automatisch ein neuer Databricks-Auftrag konfiguriert, um die Aktualisierung zu verarbeiten.
Führen Sie zum Anzeigen des Zeitplans einen der folgenden Schritte aus:
- Führen Sie die
DESCRIBE EXTENDEDAnweisung aus dem SQL-Editor in der Azure Databricks-Benutzeroberfläche aus. Siehe DESCRIBE TABLE. - Verwenden Sie den Katalog-Explorer, um die Streamingtabelle anzuzeigen. Der Zeitplan wird auf der Registerkarte Übersicht unter Aktualisierungsstatus aufgeführt. Siehe Was ist der Katalog-Explorer?.
Die folgenden Beispiele zeigen, wie Sie eine Streamingtabelle mit einem Zeitplan erstellen:
Jedes Zeitintervall planen
In diesem Beispiel wird eine Aktualisierung einmal alle 5 Minuten geplant:
CREATE OR REFRESH STREAMING TABLE catalog.schema.hourly_metrics
SCHEDULE EVERY 5 MINUTES
AS SELECT
event_id,
event_time,
event_type
FROM catalog.schema.raw_events;
Planen mit Cron
In diesem Beispiel wird eine Aktualisierung alle 15 Minuten in der Quartalsstunde der UTC-Zeitzone geplant:
CREATE OR REFRESH STREAMING TABLE catalog.schema.hourly_metrics
SCHEDULE CRON '0 */15 * * * ?' AT TIME ZONE 'UTC'
AS SELECT
event_id,
event_time,
event_type
FROM catalog.schema.raw_events;
SQL-Aufgabe in einem Auftrag
Aktualisierungen von Streamingtabellen können über Databricks-Aufträge koordiniert werden, indem SQL-Aufgaben erstellt werden, die Befehle enthalten REFRESH STREAMING TABLE . Dieser Ansatz integriert Streaming-Tabellenaktualisierungen in vorhandene Auftrags-Orchestrierungsworkflows.
Es gibt zwei Möglichkeiten zum Erstellen eines Auftrags zum Aktualisieren von Streamingtabellen:
-
Schreiben Sie im SQL-Editor den
REFRESH STREAMING TABLEBefehl, und klicken Sie auf die Schaltfläche "Zeitplan ", um einen Auftrag direkt aus der Abfrage zu erstellen. - In der Jobs-Benutzeroberfläche eine Aufgabe erstellen: Erstellen Sie einen neuen Auftrag, fügen Sie einen SQL-Aufgabentyp hinzu und hängen Sie eine SQL-Abfrage oder ein Notizbuch mit dem
REFRESH STREAMING TABLEBefehl an.
Das folgende Beispiel zeigt die SQL-Anweisung innerhalb einer SQL-Aufgabe, die eine Streamingtabelle aktualisiert:
REFRESH STREAMING TABLE catalog.schema.sales;
Dieser Ansatz ist geeignet, wenn:
- Komplexe mehrstufige Pipelines weisen Abhängigkeiten auf allen Systemen auf.
- Es ist eine Integration mit vorhandener Job-Orchestrierung erforderlich.
- Warnungen und Überwachung auf Auftragsebene sind erforderlich.
SQL-Aufgaben verwenden sowohl das SQL Warehouse, das an den Auftrag angefügt ist, als auch die serverlose Berechnung, die die Aktualisierung ausführt. Wenn die definitionsbasierte Planung von Streamingtabellen die Anforderungen erfüllt, wechselt zu TRIGGER ON UPDATE, oder SCHEDULE kann den Workflow vereinfachen.
Hinzufügen eines Zeitplans zu einer vorhandenen Streamingtabelle
Verwenden Sie die ALTER STREAMING TABLE Anweisung, um den Zeitplan nach der Erstellung festzulegen:
-- Alters the schedule to refresh the streaming table when its upstream
-- data gets updated.
ALTER STREAMING TABLE sales
ADD TRIGGER ON UPDATE;
Ändern eines vorhandenen Zeitplans oder Triggers
Wenn einer Streamingtabelle bereits ein Zeitplan oder Trigger zugeordnet ist, verwenden Sie ALTER SCHEDULE oder ALTER TRIGGER ON UPDATE, um die Aktualisierungskonfiguration zu ändern. Dies gilt sowohl für den Wechsel von einem Zeitplan zu einem anderen als auch von einem Trigger zu einem anderen sowie beim Wechsel zwischen einem Zeitplan und einem Trigger.
Im folgenden Beispiel wird ein vorhandener Zeitplan so geändert, dass er alle 5 Minuten aktualisiert wird:
ALTER STREAMING TABLE catalog.schema.my_table
ALTER SCHEDULE EVERY 5 MINUTES;
Löschen eines Plans oder Triggers
Verwenden Sie ALTER ... DROPfolgendes, um einen Zeitplan zu entfernen:
ALTER STREAMING TABLE catalog.schema.my_table
DROP SCHEDULE;
Nachverfolgen des Status einer Aktualisierung
Sie können den Status einer Aktualisierung einer Streamingtabelle anzeigen, indem Sie die Pipeline anzeigen, die die Streamingtabelle in der Pipelines-Benutzeroberfläche verwaltet, oder indem Sie die vom Befehl für die Streamingtabelle zurückgegebenen DESCRIBE EXTENDED anzeigen.
DESCRIBE TABLE EXTENDED <table-name>;
Alternativ können Sie die Streamingtabelle im Katalog-Explorer anzeigen und den Aktualisierungsstatus dort anzeigen:
- Klicken Sie auf
Katalog in der Randleiste.
- Öffnen Sie im Katalog-Explorer-Baum links den Katalog, und wählen Sie das Schema aus, in dem sich die Streamingtabelle befindet.
- Öffnen Sie das Tabellenelement unter dem ausgewählten Schema, und klicken Sie auf die Streamingtabelle.
Von hier aus können Sie die Registerkarten unter dem Namen der Streamingtabelle verwenden, um Informationen zur Streamingtabelle anzuzeigen und zu bearbeiten, einschließlich:
- Status und Verlauf aktualisieren
- Das Tabellenschema
- Beispieldaten (erfordert eine aktive Berechnung)
- Erlaubnisse
- Datenherkunft, einschließlich Tabellen und Pipelines, von denen diese Streamingtabelle abhängt
- Einblicke in die Nutzung
- Monitore, die Sie für diese Streaming-Tabelle erstellt haben
Timeouts bei Aktualisierungen
Lange ausgeführte Aktualisierungen können zu einem Timeout führen. Streamingtabellen, die nach dem 14. August 2025 erstellt oder aktualisiert wurden, verwenden das Timeout, das dem SQL-Warehouse zugeordnet ist, mit dem die Aktualisierung ausgeführt wird. Wenn für das Lager kein Timeout festgelegt ist, wird der Standardwert von 2 Tagen verwendet.
Hinweis
Die Streamingtabelle synchronisiert nur das Timeout, wenn Sie eine CREATE OR REFRESH Anweisung manuell ausführen. Geplante Updates behalten das Timeout aus der letzten CREATE OR REFRESH.
Sie können das Timeout explizit mit einer STATEMENT_TIMEOUT Konfiguration in Sql für die Aktualisierung festlegen. Siehe STATEMENT_TIMEOUT.
Steuern des Zugriffs auf Streamingtabellen
Streamingtabellen unterstützen umfassende Zugriffskontrollen, um die gemeinsame Nutzung von Daten zu ermöglichen, ohne potenziell private Daten offenzulegen. Ein Besitzer einer Streamingtabelle oder ein Benutzer mit dem MANAGE-Recht kann anderen Benutzern SELECT-Rechte gewähren. Benutzer mit SELECT Zugriff auf die Streamingtabelle benötigen SELECT keinen Zugriff auf die Tabellen, auf die von der Streamingtabelle verwiesen wird. Diese Zugriffskontrolle ermöglicht das Teilen von Daten und steuert gleichzeitig den Zugriff auf die zugrunde liegenden Daten.
Sie können auch den Besitzer einer Streamingtabelle ändern.
Gewähren von Berechtigungen für eine Streamingtabelle
Verwenden Sie die GRANT Anweisung, um Zugriff auf eine Streamingtabelle zu gewähren:
GRANT <privilege_type> ON <st_name> TO <principal>;
Dies privilege_type kann sein:
-
SELECT– Die benutzende Person kann für die Streamingtabelle Folgendes ausführen:SELECT. -
REFRESH– Die benutzende Person kann für die Streamingtabelle Folgendes ausführen:REFRESH. Aktualisierungen werden mit den Berechtigungen des Besitzers ausgeführt.
Im folgenden Beispiel wird eine Streamingtabelle erstellt und Benutzern Auswahl- und Aktualisierungsberechtigungen gewährt:
CREATE MATERIALIZED VIEW st_name AS SELECT * FROM source_table;
-- Grant read-only access:
GRANT SELECT ON st_name TO read_only_user;
-- Grand read and refresh access:
GRANT SELECT ON st_name TO refresh_user;
GRANT REFRESH ON st_name TO refresh_user;
Weitere Informationen zum Gewähren von Berechtigungen für sicherungsfähige Unity Catalog-Objekte finden Sie unter Unity Catalog-Berechtigungen und sicherungsfähige Objekte.
Widerrufen von Berechtigungen einer Streamingtabelle
Verwenden Sie die Anweisung REVOKE, um den Zugriff auf eine Streamingtabelle zu widerrufen.
REVOKE privilege_type ON <st_name> FROM principal;
Wenn SELECT Berechtigungen für eine Quelltabelle vom Besitzer der Streamingtabelle oder einem anderen Benutzer entzogen werden, der MANAGE oder SELECT Berechtigungen für die Streamingtabelle erhalten hat, oder die Quelltabelle gelöscht wird, kann der Besitzer der Streamingtabelle oder der Benutzer, dem Zugriff gewährt wurde, weiterhin die Streamingtabelle abfragen. Es kommt jedoch zu folgendem Verhalten:
- Die Person, die die Streamingtabelle besitzt, oder andere Personen, die den Zugriff auf eine Streamingtabelle verloren haben, können für diese Streamingtabelle nicht mehr
REFRESHausführen, und die Streamingtabelle wird veraltet. - Wenn die Automatisierung per Zeitplan erfolgt, schlägt der nächste geplante
REFRESH-Vorgang fehl oder wird nicht ausgeführt.
Im folgenden Beispiel wird SELECT die read_only_user-Berechtigung entzogen:
REVOKE SELECT ON st_name FROM read_only_user;
Ändern des Besitzers einer Streamingtabelle
Ein Benutzer mit MANAGE Berechtigungen für eine in Databricks SQL definierte Streamingtabelle kann einen neuen Besitzer über den Katalog-Explorer festlegen. Der neue Besitzer kann er selbst sein oder es handelt sich um einen Dienstprinzipal, der die Rolle „Dienstprinzipalbenutzer“ hat.
Klicken Sie im Azure Databricks-Arbeitsbereich auf das
Katalog zum Öffnen des Katalog-Explorers.
Wählen Sie die Streamingtabelle aus, die Sie aktualisieren möchten.
Suchen Sie in der rechten Randleiste unter
"Über diese Streamingtabelle" denBesitzer , und klicken Sie auf dasBleistiftsymbol zum Bearbeiten.Hinweis
Wenn Sie eine Meldung erhalten, die Sie angibt, den Besitzer zu aktualisieren, indem Sie " Als Benutzer ausführen" in den Pipelineeinstellungen ändern, wird die Streamingtabelle in Lakeflow Spark Declarative Pipelines und nicht in Databricks SQL definiert. Die Nachricht enthält einen Link zu den Pipeline-Einstellungen, über den Sie den Ausführen als-Benutzer ändern können.
Wählen Sie einen neuen Besitzer für die Streamingtabelle aus.
Besitzer verfügen automatisch über die
MANAGE- undSELECT-Berechtigungen für Streamingtabellen, die sie besitzen. Wenn Sie einen Dienstprinzipal als Besitzer für eine Streamingtabelle festlegen, die Sie besitzen, und Sie nicht explizit überSELECToderMANAGEPrivilegien für die Streamingtabelle verfügen, würde diese Änderung dazu führen, dass Sie jeglichen Zugriff auf die Streamingtabelle verlieren. In diesem Fall werden Sie aufgefordert, diese Berechtigungen explizit bereitzustellen.Wählen Sie sowohl „Verwalten erteilen“ als auch SELECT aus, um diese auf „Speichern“ zu setzen.
Klicken Sie auf "Speichern ", um den Besitzer zu ändern.
Der Besitzer der Streamingtabelle wird aktualisiert. Alle zukünftigen Updates werden mit der Identität des neuen Besitzers ausgeführt.
Wenn der Besitzer Berechtigungen für Quelltabellen verliert
Wenn Sie den Besitzer ändern und der neue Besitzer keinen Zugriff auf die Quelltabellen hat (oder SELECT Berechtigungen für die zugrunde liegenden Quelltabellen widerrufen werden), können Benutzer die Streamingtabelle weiterhin abfragen. Aber:
- Sie können die Streamingtabelle nicht
REFRESHverwenden. - Die nächste geplante Aktualisierung der Streamingtabelle schlägt fehl.
Wenn der Zugriff auf die Quelldaten verloren geht, werden Aktualisierungen verhindert, aber die vorhandene Streamingtabelle kann weiterhin sofort gelesen werden.
Dauerhaftes Löschen von Datensätzen aus einer Streamingtabelle
Von Bedeutung
Die Unterstützung für die REORG-Anweisung mit Streamingtabellen befindet sich in der Public Preview.
Hinweis
- Die Verwendung einer
REORGAnweisung mit einer Streamingtabelle erfordert Databricks Runtime 15.4 und höher. - Obwohl Sie die
REORGAnweisung mit einer beliebigen Streamingtabelle verwenden können, ist sie nur erforderlich, wenn Datensätze aus einer Streamingtabelle mit aktivierten Löschvektoren gelöscht werden. Der Befehl hat keine Auswirkung, wenn er mit einer Streamingtabelle ohne aktivierte Löschvektoren verwendet wird.
Um Datensätze physisch aus dem zugrunde liegenden Speicher für eine Streamingtabelle mit aktivierten Löschvektoren zu löschen, z. B. für die DSGVO-Compliance, müssen zusätzliche Schritte ausgeführt werden, um sicherzustellen, dass ein VACUUM Vorgang in den Daten der Streamingtabelle ausgeführt wird.
So löschen Sie Datensätze physisch aus dem zugrunde liegenden Speicher:
- Aktualisieren von Datensätzen oder Löschen von Datensätzen aus der Streamingtabelle.
- Führen Sie eine
REORGAnweisung für die Streamingtabelle aus, die denAPPLY (PURGE)Parameter angibt. Beispiel:REORG TABLE <streaming-table-name> APPLY (PURGE);. - Warten Sie, bis der Datenaufbewahrungszeitraum der Streamingtabelle überschritten wird. Der Standardzeitraum für die Datenaufbewahrung beträgt sieben Tage, kann jedoch mit der
delta.deletedFileRetentionDurationTabelleneigenschaft konfiguriert werden. Siehe Konfigurieren der Datenaufbewahrung für Zeitreiseabfragen. - Führen Sie
REFRESHfür die Streamingtabelle aus. Siehe Aktualisieren einer Streamingtabelle. Innerhalb von 24 Stunden nach demREFRESHVorgang werden die Pipelinewartungsaufgaben automatisch ausgeführt, einschließlich desVACUUMVorgangs, der erforderlich ist, um sicherzustellen, dass Datensätze endgültig gelöscht werden.
Überwachen der Ausführung mithilfe des Abfrageverlaufs
Sie können die Abfrageverlaufsseite verwenden, um auf Abfragedetails und Abfrageprofile zuzugreifen, die Ihnen helfen können, schlecht ausgeführte Abfragen und Engpässe in der Pipeline zu identifizieren, die zum Ausführen ihrer Streamingtabellenaktualisierungen verwendet werden. Eine Übersicht über die Art der informationen, die in Abfragehistorien und Abfrageprofilen verfügbar sind, finden Sie unter "Abfrageverlauf " und "Abfrageprofil".
Von Bedeutung
Dieses Feature befindet sich in der Public Preview. Arbeitsbereichsadministratoren können den Zugriff auf dieses Feature über die Vorschauseite steuern. Siehe Verwalten von Azure Databricks-Vorschauen.
Alle Anweisungen im Zusammenhang mit Streamingtabellen werden im Abfrageverlauf angezeigt. Sie können das Dropdown-Menü "Statement" verwenden, um einen beliebigen Befehl auszuwählen und die zugehörigen Abfragen zu überprüfen. Auf alle CREATE Anweisungen folgt eine REFRESH Anweisung, die asynchron in einer Pipeline ausgeführt wird. Die REFRESH Anweisungen enthalten in der Regel detaillierte Abfragepläne, die Einblicke in die Optimierung der Leistung bieten.
Führen Sie die folgenden Schritte aus, um auf REFRESH Anweisungen in der Query History UI zuzugreifen:
- Klicken Sie auf das
Öffnen Sie in der linken Randleiste die Benutzeroberfläche für den Abfrageverlauf .
- Aktivieren Sie das Kontrollkästchen REFRESH im Dropdownfilter Anweisung.
- Klicken Sie auf den Namen der Abfrage-Anweisung, um Zusammenfassungsdetails wie die Dauer der Abfrage und aggregierte Metriken anzuzeigen.
- Klicken Sie auf " Abfrageprofil anzeigen", um das Abfrageprofil zu öffnen. Details zum Navigieren im Abfrageprofil finden Sie im Abfrageprofil .
- Optional können Sie die Verknüpfungen im Abschnitt "Abfragequelle " verwenden, um die zugehörige Abfrage oder Pipeline zu öffnen.
Sie können auch mithilfe von Links im SQL-Editor oder aus einem Notizbuch, das an ein SQL Warehouse angefügt ist, auf Abfragedetails zugreifen.
Zugreifen auf Streamingtabellen von externen Clients
Um auf Streamingtabellen von externen Delta Lake- oder Iceberg-Clients zuzugreifen, die offene APIs nicht unterstützen, können Sie den Kompatibilitätsmodus verwenden. Der Kompatibilitätsmodus erstellt eine schreibgeschützte Version Ihrer Streamingtabelle, auf die von jedem Delta Lake- oder Iceberg-Client zugegriffen werden kann.