ソーステーブルが更新されたときにジョブをトリガーする
テーブル更新トリガー を使用すると、ソース テーブルが更新されたときにジョブの実行をトリガーできます。この機能を使用すると、継続的に実行中のクラスターやテーブルを更新するプロセスの知識がなくても、新しいデータの準備ができたときにジョブを実行できます。
ベータ版
Delta Sharingテーブルとビュー、およびシステムテーブルでのジョブのトリガーは、ベータ版です。Delta Sharing とシステムテーブルにトリガーを追加するを参照してください。
テーブル更新トリガーはどのように機能しますか?
テーブル更新トリガーはテーブルの更新をチェックし、テーブルが更新されるとジョブが実行されます。トリガーは、1 つのテーブルが更新されたとき、またはトリガーによって監視されているすべてのテーブルが更新されたときに実行できます。テーブル更新トリガーでは、テーブルの一覧表示とストレージの場所からの更新の読み取りに関連するクラウド プロバイダーのコスト以外の追加コストは発生しません。
テーブル更新トリガーは、更新、マージ、削除などのデータの変更について、1つ以上のテーブルを監視するように構成できます。これらのテーブルは、Unity Catalog の Delta および Iceberg マネージドテーブル、Delta Lake を使用した Unity Catalog 外部テーブル、マテリアライズドビュー、ストリーミングテーブル、およびサポートされているテーブルに依存する Unity Catalog ビューまたはメトリクスビューです。複数のテーブルを選択する際、いずれかまたはすべてのテーブルが更新されるとジョブがトリガーされるかどうかを指定できます。
Delta Sharingテーブルとビュー、およびシステムテーブル(ベータ版)でトリガーを設定することもできます。Delta Sharing およびシステムテーブルにトリガーを追加するを参照してください。
テーブル更新トリガーを追加する
既存のジョブにテーブル更新トリガーを追加するには:
-
ワークスペースの左側のナビゲーションで、 [ジョブとパイプライン] をクリックします。
-
ジョブのリストで、トリガーを追加するジョブの名前をクリックします。
-
右側のパネルの 「スケジュールとトリガー」 で、 「トリガーの追加」を クリックします。
-
トリガーの種類で、 テーブル更新 を選択します。
-
[テーブル] で、更新を監視するテーブルを追加します。
複数のテーブルを選択する場合は、[トリガーの タイミング] のオプションを構成して、 すべてのテーブルが更新された とき、または 任意のテーブルが更新された ときにジョブの実行をトリガーするかどうかを指定します。
-
(オプション) [詳細設定] をクリックして、 詳細 オプションを構成します。
- トリガー間の最小時間 (秒) :前回の実行が完了した後に実行をトリガーするまで待機する最小時間。この期間中に更新されたテーブルは、待機時間が経過した後にのみ実行をトリガーします。Databricks は、監視対象のテーブルが更新された場合でも、実行をトリガーするまでこの期間待機します。
- 最後の変更後の待機時間 (秒) : テーブルの更新後に実行をトリガーするまでの待機時間。この期間中にテーブルがさらに更新されると、タイマーがリセットされます。この設定は、テーブルの更新がバッチで行われ、すべてのテーブルが更新された後にバッチ全体を処理する必要がある場合に使用できます。
両方のオプションが使用されている場合、トリガーはトリガー間の最小時間待機し、その後、最後の変更後に設定された時間待機します。例えば、最小時間が120秒、最後の変更後に待機が60秒の場合、テーブルの更新が最初の60秒以内に発生したとしても、少なくとも120秒が経過するまで実行はトリガーされません。さらに、5秒後に更新が1つ、その後115秒後にもう1つの更新があった場合、最後の変更後の待機とは、175秒後になるまで実行がトリガーされないことを意味します。
-
構成を検証するには、 [テスト トリガー] をクリックします。
-
保存 をクリックします。
Jobs APIからテーブル更新トリガーを構成することもできます。triggerオブジェクトをjobs/create 、 jobs/update 、またはjobs/reset操作に追加します。
Delta Sharingおよびシステムテーブルへのトリガーの追加
ベータ版
この機能は ベータ版 です。
ローカルテーブルに加え、Delta Sharing および システムテーブル を介してワークスペースに共有されたデータを監視するように、テーブル更新トリガーを設定できます。例えば、新しい請求レコードがシステムテーブルに着信するたびに、またはプロバイダーが共有テーブルを更新するたびにジョブをトリガーできます。
以下の共有オブジェクトでトリガーできます。
- Delta Sharing テーブル
- Delta Sharingビュー
- Delta Sharing メトリクス ビュー
- Delta Sharing マテリアライズドビュー
- Delta Sharing ストリーミングテーブル
- システムテーブル
Delta Sharingトリガーの制限事項を確認し、次に、テーブル更新トリガーの追加のステップに従って、監視する共有テーブル、ビュー、またはシステムテーブルを選択します。
Delta Sharing トリガーの制限事項
-
この機能は Databricks-to-Databricks Delta Sharing のみをサポートします。オープン共有はサポートされていません。
-
共有テーブルとビューでトリガーするには、ベータ版が受信者側とプロバイダー側の両方で有効になっている必要があります。
- Delta Sharing (受信者側) のテーブル更新トリガー : トリガーが作成される受信者ワークスペースで有効になる、ワークスペースレベルのベータ機能です。
- Delta Sharing上のテーブル更新トリガー(プロバイダー) :共有データを所有するプロバイダーアカウントで有効化されるアカウントレベルのベータ機能です。
システムテーブルの場合、受信者ベータ版のみが必要です。有効にするには、Databricks プレビューの管理を参照してください。
-
トリガーを作成するユーザーは、共有オブジェクトまたはシステムテーブルに対する
SELECT権限を持っている必要があります。
ファイルイベントによるテーブル更新トリガー
最高のパフォーマンスとスケーラビリティを得るには、テーブルが保存されている外部ロケーションでファイル イベントを有効にします。 この 1 回限りのセットアップ ステップにより、テーブル更新トリガーの効率が向上し、よりパフォーマンスの高いAuto Loaderやファイル到着トリガーなどの他の機能が利用できるようになります。
ファイル イベントが有効になっている場合、Databricks はクラウド プロバイダーの変更通知を使用して取り込みメタデータを自動的に追跡し、テーブルの更新がより高速かつ効率的になります。
テーブルがメタストアのルートレベルのストレージにある場合は、まずテーブルを外部の場所に変換してから、その場所でファイル イベントを有効にします。
ファイルイベントに関するよくある質問については、「ファイルイベントに関するよくある質問」を参照してください。
テーブル更新トリガーに関連するジョブのパラメーター
ジョブにテーブル更新トリガーを使用する場合、ジョブ内のパラメーター値として使用できる 3 つの新しい動的値参照が利用可能になります。
{{job.trigger.table_update.updated_tables}}- 最後のジョブ実行以降に更新されたテーブルの JSON リスト。{{job.trigger.table_update.`<catalog.schema.table>`.commit_timestamp.iso_datetime}}- ジョブ実行をトリガーした最新のコミット タイムスタンプ。{{job.trigger.table_update.`<catalog.schema.table>`.version}}- ジョブの実行をトリガーした最新のコミット バージョン。
commit_timestampおよびversionの場合、動的な値参照のバージョンが複数あります。監視対象の各テーブルには、データを取得するテーブルの完全修飾名を持つ<catalog.schema.table>が含まれます。トリガーで監視されているテーブルが 1 つだけの場合、 <catalog.schema.table>のない値が表示されます。たとえば、 {{job.trigger.table_update.commit_timestamp.iso_datetime}}を使用できます。
ジョブのパラメーターの詳細については、 ジョブのパラメータ化を参照してください。
失敗したテーブル更新トリガーの通知を受信する
テーブル更新トリガーの評価が失敗した場合に通知を受け取るには、ジョブ失敗時の電子メールまたはシステム宛先通知を構成します。 「ジョブに通知を追加する」を参照してください。
制限事項
テーブル更新トリガーに は次の制限があります。
- トリガーごとに最大 10 個の管理対象テーブルまたはDeltaテーブルを選択できます。
- ファイル イベントのない場所に存在するテーブルの場合、テーブル更新トリガーを使用して最大 1,000 個のジョブを構成できます。
- Delta Sharingオブジェクトまたはシステムテーブルのテーブル更新トリガーは、ワークスペースごとに最大1,000件まで作成可能です。
Unity Catalogビュー のトリガーには、次の追加の制限があります。
-
テーブル更新トリガーは、テーブル更新トリガーでもサポートされているテーブルに依存するモニタリングUnity Catalogビューまたはメトリクス ビューのみをサポートします。 特に、次のビューはサポートされていません。
read_filesで使用するビュー (ファイルを読み取るサポートされているテーブルから読み取ることができますが、read_files直接使用することはできません)。- Unity Catalogにないテーブルに依存するビュー。
- フェデレーション テーブルに依存するビュー。
-
サポートされていない依存関係を含むビューのトリガーの作成は引き続き成功しますが、サポートされていない依存関係が更新されてもジョブ実行はトリガーされません。
-
テーブル更新トリガーは、ビューの従属テーブルへの変更を監視し、従属テーブルのいずれかが更新された場合にビューが更新されたと見なします。ビュー定義によってフィルター処理されたデータの変更に対してジョブ実行がトリガーされる可能性があります。
-
ビューのソース テーブルは、トリガーあたり 10 テーブルの制限にカウントされます。
- 例えば、ビューが11個のテーブルに依存している場合、テーブル更新トリガーでそのビューを使用することはできません。同様に、2つのビューを持つトリガーで、それぞれが6つのテーブルに依存している場合、12個のテーブルとしてカウントされます。
-
監視対象ビューごとに依存ビューが 10 個までという個別の制限があります。
- 例えば、ビューが他の11個のビューに依存している場合、「1トリガーあたり10テーブル」のルールに違反しないとしても、テーブル更新トリガーでそのビューを使用することはできません。