Auslösen von Aufträgen, wenn Quelltabellen aktualisiert werden

Sie können Tabellenaktualisierungstrigger verwenden, um eine Ausführung Ihres Auftrags auszulösen, wenn Quelltabellen aktualisiert werden. Verwenden Sie dieses Feature, um einen Auftrag auszuführen, wenn neue Daten bereit sind, ohne dass ein fortlaufend ausgeführter Cluster oder kenntnisse der Prozesse erforderlich sind, die eine Tabelle aktualisieren.

Von Bedeutung

Das Auslösen von Aufträgen für OpenSharing-Tabellen und -Ansichten und für Systemtabellen befindet sich in der Betaversion. Siehe Hinzufügen eines Triggers zu OpenSharing- und Systemtabellen.

So funktionieren Trigger für Tabellenaktualisierungen

Ein Tabellenaktualisierungstrigger sucht nach Tabellenaktualisierungen, und wenn eine Tabelle aktualisiert wird, wird der Auftrag ausgeführt. Der Trigger kann ausgeführt werden, wenn eine Tabelle aktualisiert wird oder wenn alle Tabellen, die vom Trigger überwacht werden, aktualisiert werden. Tabellenaktualisierungstrigger verursachen keine anderen zusätzlichen Kosten als die Kosten des Cloud-Anbieters, die mit dem Auflisten von Tabellen und dem Lesen von Updates vom Speicherort verbunden sind.

Ein Tabellenaktualisierungstrigger kann so konfiguriert werden, dass eine oder mehrere Tabellen auf Datenänderungen wie Aktualisierungen, Zusammenführungen und Löschungen überwacht werden. Diese Tabellen können Unity Catalog Delta- und Iceberg-verwaltete Tabellen sein, Unity-Katalog externe Tabellen, die von Delta Lake unterstützt werden, materialisierte Ansichten, Streamingtabellen und Unity-Katalogansichten oder Metrikansichten, die von unterstützten Tabellen abhängen. Wenn Sie mehrere Tabellen auswählen, können Sie angeben, ob ein Auftrag ausgelöst wird, wenn eine oder alle Tabellen aktualisiert werden.

Sie können Trigger auch für OpenSharing-Tabellen und -Ansichten und für Systemtabellen (Beta) konfigurieren. Siehe Hinzufügen eines Triggers zu OpenSharing- und Systemtabellen.

Hinzufügen eines Tabellenaktualisierungstriggers

Um einen Tabellenaktualisierungstrigger zu einem bestehenden Job hinzuzufügen:

  1. Klicken Sie in der linken Navigation Ihres Arbeitsbereichs auf Aufträge und Pipelines.

  2. Klicken Sie in der Liste der Aufträge auf den Namen des Auftrags, dem Sie einen Trigger hinzufügen möchten.

  3. Klicken Sie im rechten Bereich unter "Zeitplan und Trigger" auf "Trigger hinzufügen".

  4. Wählen Sie im Triggertyp "Tabellenaktualisierung" aus.

  5. Fügen Sie unter "Tabellen" die Tabellen hinzu, die Sie auf Updates überwachen möchten.

    Wenn Sie mehrere Tabellen auswählen, konfigurieren Sie eine Option unter auslösen wenn, um anzugeben, ob ein Auftrag ausgeführt werden soll, wenn alle Tabellen aktualisiert werden oder wenn irgendeine Tabelle aktualisiert wird.

  6. (Optional) Konfigurieren Sie erweiterte Optionen, indem Sie auf "Erweitert" klicken.

    • Minimale Zeit zwischen Auslösern in Sekunden: Die minimale Wartezeit, um einen Auslöser nach dem Abschluss eines vorherigen Ausführens zu starten. Tabellen, die während dieses Zeitraums aktualisiert wurden, lösen eine Ausführung erst nach Ablauf der Wartezeit aus. Azure Databricks wartet diese Zeitspanne, bevor eine Ausführung ausgelöst wird, auch wenn überwachte Tabellen aktualisiert werden.
    • Warten Sie nach der letzten Änderung in Sekunden: Die Zeit, bis eine Ausführung nach einer Tabellenaktualisierung ausgelöst wird. Zusätzliche Tabellenaktualisierungen in diesem Zeitraum setzen den Timer zurück. Diese Einstellung kann verwendet werden, wenn Tabellenaktualisierungen in Batches eingehen, und der gesamte Batch muss verarbeitet werden, nachdem alle Tabellen aktualisiert wurden.

    Hinweis

    Wenn beide Optionen verwendet werden, wartet der Trigger die minimale Zeit zwischen Triggern und wartet dann die festgelegte Zeit nach der letzten Änderung. Wenn Sie beispielsweise eine Mindestzeit von 120 Sekunden und eine Wartezeit von 60 Sekunden nach den letzten Änderungen festgelegt haben, wird der Lauf erst ausgelöst, wenn mindestens 120 Sekunden verstrichen sind, auch wenn innerhalb der ersten 60 Sekunden eine Tabellenaktualisierung stattfindet. Darüber hinaus bedeutet die Wartezeit nach der letzten Änderung, dass ein Durchlauf erst nach 175 Sekunden ausgelöst wird, wenn ein Update nach 5 Sekunden eingeht und ein weiteres nach 115 Sekunden.

  7. Klicken Sie auf Testtrigger, um die Konfiguration zu überprüfen.

  8. Klicken Sie auf "Speichern".

Hinweis

Sie können auch Tabellenaktualisierungstrigger aus der Auftrags-API konfigurieren. Hinzufügen eines trigger Objekts zu einem jobs/create, jobs/updateoder jobs/reset Vorgang.

Wenn Sie diesen Trigger später bearbeiten, anhalten oder entfernen möchten, verwenden Sie den Abschnitt "Zeitplan und Trigger" des Bereichs " Auftragsdetails ". Siehe "Verwalten eines vorhandenen Triggers".

Hinzufügen eines Triggers zu OpenSharing- und Systemtabellen

Von Bedeutung

Diese Funktionalität befindet sich in der Betaversion.

Zusätzlich zu lokalen Tabellen können Sie Tabellenaktualisierungstrigger konfigurieren, um daten zu überwachen, die für Ihren Arbeitsbereich über OpenSharing und Systemtabellen freigegeben wurden. Sie können z. B. einen Auftrag auslösen, wenn neue Abrechnungsdatensätze in einer Systemtabelle landen oder wenn ein Anbieter eine freigegebene Tabelle aktualisiert.

Sie können durch die folgenden freigegebenen Objekte ausgelöst werden:

  • OpenSharing-Tabellen
  • OpenSharing-Ansichten
  • OpenSharing-Metrikansichten
  • Materialisierte OpenSharing-Ansichten
  • OpenSharing-Streamingtabellen
  • Systemtabellen

Überprüfen Sie die Einschränkungen des OpenSharing-Triggers, und führen Sie dann die Schritte unter Hinzufügen eines Tabellenaktualisierungstriggers aus, und wählen Sie die freigegebenen Tabellen, Ansichten oder Systemtabellen aus, die Sie überwachen möchten.

Einschränkungen für OpenSharing-Trigger

  • Diese Funktion unterstützt ausschließlich Databricks-to-Databricks OpenSharing. Databricks-to-Open-Freigabe wird nicht unterstützt.

  • Damit Trigger für freigegebene Tabellen und Ansichten funktionieren, muss die Beta sowohl auf Empfänger- als auch auf Anbieterseite aktiviert sein:

    • Tabellenaktualisierungstrigger für OpenSharing (Recipient): Eine Betaversion auf Arbeitsbereichsebene, die im Empfängerarbeitsbereich aktiviert ist, in dem der Trigger erstellt wird.
    • Tabellenaktualisierungs-Trigger in OpenSharing (Anbieter): Eine Beta-Funktion auf Kontoebene, die in dem Anbieterkonto aktiviert ist, dem die freigegebenen Daten gehören.

    Für Systemtabellen ist nur die Betaversion des Empfängers erforderlich. Informationen zum Aktivieren finden Sie unter Verwalten Azure Databricks Vorschauen.

  • Der Benutzer, der den Trigger erstellt, muss über die Berechtigungen für das freigegebene Objekt oder die SELECT Systemtabelle verfügen.

Tabellenaktualisierungs-Trigger mit Dateiereignissen

Um optimale Leistung und Skalierbarkeit zu erzielen, aktivieren Sie Dateiereignisse am externen Speicherort, an dem die Tabellen gespeichert sind. Dieser einmalige Einrichtungsschritt verbessert die Effizienz von Tabellenaktualisierungstriggern und entsperrt andere Features, einschließlich leistungsreicherer automatischer Lade- und Dateiankunftstrigger.

Wenn Dateiereignisse aktiviert sind, verfolgt Databricks automatisch Aufnahmemetadaten mithilfe von Änderungsbenachrichtigungen für Cloudanbieter, was zu schnelleren und effizienteren Tabellenaktualisierungen führt.

Wenn sich Ihre Tabellen im Speicher auf Metastore-Stammebene befinden, konvertieren Sie sie zuerst an einen externen Speicherort, und aktivieren Sie dann Dateiereignisse an diesem Speicherort.

Allgemeine Fragen zu Dateiereignissen finden Sie unter Häufig gestellte Fragen zu Dateiereignissen.

Auftragsparameter, die Tabellenaktualisierungstriggern zugeordnet sind

Wenn Sie Tabellenaktualisierungstrigger für einen Auftrag verwenden, stehen drei neue dynamische Wertverweise zur Verwendung als Parameterwerte im Auftrag zur Verfügung.

  • {{job.trigger.table_update.updated_tables}} – Eine JSON-Liste der Tabellen, die seit der letzten Ausführung des Auftrags aktualisiert wurden.
  • {{job.trigger.table_update.`<catalog.schema.table>`.commit_timestamp.iso_datetime}} – der letzte Commit-Zeitstempel, der die Ausführung des Einzelvorgangs ausgelöst hat.
  • {{job.trigger.table_update.`<catalog.schema.table>`.version}} – die letzte Commit-Version, die die Ausführung des Einzelvorgangs ausgelöst hat.

Für commit_timestamp und version, gibt es mehrere Versionen der dynamischen Wertreferenz. Jede überwachte Tabelle hat einen <catalog.schema.table> mit dem vollqualifizierten Namen der Tabelle, für die Sie Daten abrufen möchten. Wenn im Trigger nur eine Tabelle überwacht wird, wird ein Wert ohne <catalog.schema.table> angezeigt. Sie können z. B. verwenden {{job.trigger.table_update.commit_timestamp.iso_datetime}}.

Weitere Informationen zu Auftragsparametern finden Sie unter "Parametrisieren von Aufträgen".

Empfangen von Benachrichtigungen über fehlgeschlagene Tabellenaktualisierungstrigger

Um benachrichtigt zu werden, wenn ein Tabellenaktualisierungstrigger nicht ausgewertet werden kann, konfigurieren Sie E-Mail- oder Systemzielbenachrichtigungen bei Auftragsfehlern. Weitere Informationen finden Sie unter Hinzufügen von Benachrichtigungen zu einem Auftrag.

Einschränkungen

Tabellenaktualisierungstrigger haben die folgenden Einschränkungen:

  • Sie können bis zu 10 verwaltete oder Delta-Tabellen pro Trigger auswählen.
  • Für Tabellen, die sich an Speicherorten ohne Dateiereignisse befinden, können maximal 1.000 Aufträge mit einem Tabellenaktualisierungstrigger konfiguriert werden.
  • Pro Arbeitsbereich können maximal 1.000 Tabellenaktualisierungstrigger für OpenSharing-Objekte oder Systemtabellen erstellt werden.

Trigger für Unity-Katalogansichten weisen die folgenden zusätzlichen Einschränkungen auf:

  • Tabellenaktualisierungstrigger unterstützen nur die Überwachung von Unity-Katalogansichten oder Metrikansichten, die von Tabellen abhängen, die auch von Tabellenaktualisierungstriggern unterstützt werden. Insbesondere werden die folgenden Ansichten nicht unterstützt:

    • Ansichten, die read_files verwenden (sie können aus einer unterstützten Tabelle lesen, die Dateien liest, aber read_files nicht direkt verwenden können).
    • Ansichten, die von Tabellen abhängen, die sich nicht im Unity-Katalog befinden.
    • Ansichten, die von Verbundtabellen abhängen.
  • Das Erstellen von Triggern für Ansichten, die nicht unterstützte Abhängigkeiten enthalten, sind weiterhin erfolgreich, aber es werden keine Auftragsausführungen ausgelöst, wenn eine nicht unterstützte Abhängigkeit aktualisiert wird.

  • Tabellenaktualisierungsauslöser überwachen Änderungen an den abhängigen Tabellen einer Ansicht. Die Ansicht wird als aktualisiert betrachtet, wenn eine der abhängigen Tabellen aktualisiert wird. Es ist möglich, dass ein Einzelvorgang ausgeführt wird, der für Datenänderungen ausgelöst wird, die von der Ansichtsdefinition herausgefiltert werden.

  • Quelltabellen einer Ansicht werden auf das Limit von 10 Tabellen pro Trigger angerechnet.

    • Wenn beispielsweise eine Ansicht von 11 Tabellen abhängt, ist es nicht möglich, sie in einem Tabellenaktualisierungstrigger zu verwenden. Ebenso zählt ein Trigger mit zwei Ansichten, von denen jede von 6 Tabellen abhängt, als 12 Tabellen.
  • Es gibt einen separaten Grenzwert von 10 abhängigen Ansichten pro überwachter Ansicht.

    • Wenn eine Ansicht beispielsweise von 11 anderen Ansichten abhängt, ist es nicht möglich, sie in einem Tabellenaktualisierungstrigger zu verwenden, auch wenn dadurch die 10 Tabellen pro Triggerregel nicht unterbrochen werden.