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