BigQuery コネクタを使用して BigQuery ジョブを開始すると、ワークフローがジョブの完了を自動的に待機しないことがあります。後続の手順がジョブの成功に依存する場合は、ポーリング メカニズムを実装する必要があります。
多くの Workflows コネクタは、ポーリング可能な長時間実行オペレーション(LRO)リソースを返します。一部のコネクタは 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 リソースを返すメソッドにのみ適用されます。googleapis.bigquery.v2.jobs.query などの標準の同期メソッドは自動ポーリングをサポートしていないため、クエリが内部 API タイムアウトよりも長くかかる場合は、手動ポーリングが必要になることがあります。
たとえば、次のワークフローは、getQueryResults メソッドを使用して、ワークフロー内で BigQuery ジョブの完了を直接ポーリングする方法を示しています。