BigQuery コネクタを使用して BigQuery ジョブを開始する場合、ワークフローはジョブの完了を自動的に待機しないことがあります。後続のステップがジョブの成功に依存する場合は、ポーリング メカニズムを実装する必要があります。
多くの Workflows コネクタは、ポーリング可能な
長時間実行オペレーション(LRO)リソースを返します。一部のコネクタは、Operation 型のリソースを
返しますが、BigQuery ではこの目的で
Job リソースを
使用します。Cloud Build や Compute Engine などの他のサービスは、実際の Operation リソースを返します。LRO リソースタイプの一覧については、
サポートされているコネクタをご覧ください。
自動ポーリング
`googleapis.bigquery.v2.jobs.insert` などの LRO リソースを返すコネクタ メソッドを使用する場合、BigQuery ジョブの完了を自動的にポーリングできます。
このようなコネクタ メソッドを使用すると、オペレーションが成功または失敗するまで、Workflows
はワークフローの実行をブロックします。connector_params フィールドを使用すると、合計タイムアウトやステータス
チェックの頻度など、ポーリング動作をカスタマイズできます。詳細については、
コネクタ コールを呼び出すをご覧ください。
たとえば、次のワークフローは、jobs.insert メソッドを使用して BigQuery
ジョブを開始し、デフォルト設定ではなくカスタム設定を使用するポリシーでジョブのポーリングを構成する方法を示しています。
YAML
JSON
手動ポーリング
自動ポーリングは、LRO リソースを返すメソッドにのみ適用されます。Standard
synchronous methods like
googleapis.bigquery.v2.jobs.query
は自動ポーリングをサポートしていないため、クエリが内部 API タイムアウトより長くかかる場合は
手動ポーリングが必要になることがあります。
たとえば、次のワークフローは、
ワークフロー内で BigQuery ジョブの完了を直接ポーリングする方法を、
getQueryResults メソッドを使用して示しています。