Freigeben über


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.

Wie funktionieren Tabellenaktualisierungstrigger?

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. Andere über Delta Sharing freigegebene Ansichten und Tabellen werden nicht unterstützt. Wenn Sie mehrere Tabellen auswählen, können Sie angeben, ob ein Auftrag ausgelöst wird, wenn eine oder alle Tabellen aktualisiert werden.

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 haben und eine Wartezeit nach den letzten Änderungen von 60 Sekunden, wird die Ausführung nicht ausgelöst, bis mindestens 120 Sekunden verstrichen sind, selbst wenn innerhalb der ersten 60 Sekunden eine Tabellenaktualisierung erfolgt. Zusätzlich bedeutet die Wartezeit nach der letzten Änderung, dass eine Ausführung erst nach 175 Sekunden ausgelöst wird, wenn ein Update nach 5 Sekunden und ein weiteres nach 115 Sekunden erfolgt.

  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.

Aktualisierungsauslöser für Tabellen 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.

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 Auftrags ausgelöst hat.
  • {{job.trigger.table_update.`<catalog.schema.table>`.version}} - die neueste Commit-Version, die die Ausführung des Auftrags 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 nur eine Tabelle im Trigger überwacht wird, wird ein Wert ohne den Angezeigten <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.

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).
    • 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, ist weiterhin erfolgreich, aber es wird kein Auftrag ausgeführt, 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 Auftrag 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 eine Ansicht beispielsweise von 11 Tabellen abhängt, ist es nicht möglich, sie in einem Tabellenaktualisierungstrigger zu verwenden. Ebenso wird ein Trigger mit zwei Ansichten, die jeweils von 6 Tabellen abhängig sind, als 12 Tabellen gezählt.
  • 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.