継続的クエリの概要
このドキュメントでは、BigQuery の継続的クエリについて説明します。
BigQuery の継続的クエリは、継続的に実行される SQL ステートメントです。継続的クエリを使用すると、BigQuery で受信データをリアルタイムで分析できます。継続的クエリによって生成された出力行を BigQuery テーブルに挿入することも、Pub/Sub または Bigtable にエクスポートすることもできます。継続的クエリは、標準の BigQuery テーブルに書き込まれたデータを次のいずれかの方法で処理します。
継続的クエリを使用すると、分析情報の作成と即時実行、リアルタイムの機械学習(ML)推論の適用、他のプラットフォームへのデータのレプリケーションなど、時間的制約のあるタスクを実行できます。これにより、アプリケーションの判断ロジックでイベント ドリブンのデータ処理エンジンとして BigQuery を使用できます。
次の図は、一般的な継続的クエリのワークフローを示しています。
ユースケース
継続的クエリを使用する一般的なユースケースは次のとおりです。
- カスタマイズされた顧客対応: 生成 AI を使用して、顧客対応ごとにカスタマイズされたメッセージを作成します。
- 異常検出: 複雑なデータに対して異常と脅威をリアルタイムで検出できるソリューションを構築し、問題に迅速に対応できるようにします。
- カスタマイズ可能なイベント ドリブン パイプライン: Pub/Sub と継続的クエリを統合して、受信データに基づいてダウンストリーム アプリケーションをトリガーします。
- データの拡充とエンティティの抽出: 継続的クエリを使用して、SQL 関数と ML モデルを使用してリアルタイムでデータの拡充と変換を行います。
- リバース ETL(抽出 / 変換 / 読み込み): 低レイテンシのアプリケーション サービングに適した他のストレージ システムにリアルタイムのリバース ETL を実行します。たとえば、BigQuery に書き込まれたイベントデータを分析または拡充し、Bigtable にストリーミングしてアプリケーション サービングを行うことができます。
サポートされているオペレーション
継続的クエリでは、次のオペレーションがサポートされています。
INSERT
ステートメントを実行して、継続的クエリから BigQuery テーブルにデータを書き込む。EXPORT DATA
ステートメントを実行して、Pub/Sub トピックに継続的クエリの出力をパブリッシュする。詳細については、Pub/Sub にデータをエクスポートするをご覧ください。Pub/Sub トピックから、Dataflow を使用してストリーミング分析を実行したり、アプリケーション統合ワークフローでデータを使用するなど、他のサービスでデータを使用できます。
EXPORT DATA
ステートメントを実行して、BigQuery から Bigtable テーブルにデータをエクスポートする。詳細については、Bigtable にデータをエクスポートするをご覧ください。次の生成 AI 関数を呼び出す。
これらの関数を使用するには、Vertex AI モデルを介して BigQuery ML リモートモデルを利用する必要があります。
次の AI 関数を呼び出す。
これらの関数を使用するには、Cloud AI API を介して BigQuery ML リモートモデルを利用する必要があります。
ML.NORMALIZER
関数を使用して数値データを正規化する。ステートレスな GoogleSQL 関数(変換関数など)を使用する。ステートレス関数では、各行がテーブル内の他の行とは独立して処理されます。
APPENDS
変更履歴関数を使用して、特定の時点から継続的クエリの処理を開始する。
認可
長時間実行の継続的クエリを実行するには、ユーザー アカウントではなく、サービス アカウントを使用します。
継続的クエリジョブの実行時に使用される Google Cloud アクセス トークンは、ユーザー アカウントによって生成された場合、有効期間(TTL)が 2 日間になります。そのため、このようなジョブは 2 日後に実行を停止します。サービス アカウントによって生成されたアクセス トークンは TTL によって制限されないため、サービス アカウントによって実行される継続的クエリジョブは、明示的にキャンセルされるまで実行されます。詳細については、サービス アカウントを使用して継続的クエリを実行するをご覧ください。
ロケーション
継続的クエリは、次のロケーションでサポートされています。
US
EU
asia-northeast1
asia-south1
europe-west1
europe-west2
europe-west4
us-central1
us-east1
us-east4
us-west1
制限事項
継続的クエリには、次の制限があります。
- BigQuery の継続的クエリは、取り込まれたデータの状態を維持しません。
JOINs
、集計関数、ウィンドウ分析関数など、状態に依存する一般的なオペレーションは、現在サポートされていません。 継続的クエリでは、次の SQL 機能は使用できません。
- 非決定的なスカラー関数(
CURRENT_DATE
関数など) JOIN
オペレーション- 集計関数
- 近似集計関数
次のクエリ句:
次のクエリ演算子:
クエリの集合演算子
サポートされているオペレーションに記載されていない BigQuery ML 関数
データ操作言語(DML)ステートメント(
INSERT
を除く)。Bigtable または Pub/Sub をターゲットとしない
EXPORT DATA
ステートメント
- 非決定的なスカラー関数(
継続的クエリでは、データソースとしてワイルドカード テーブルはサポートされていません。
継続的クエリでは、データソースとして外部テーブルはサポートされていません。
継続的クエリは、次の BigQuery セキュリティ機能をサポートしていません。
- 列レベルと行レベルのセキュリティ
- 承認済みビューまたは承認済みルーティン
- 顧客管理の暗号鍵(CMEK)
- AEAD 暗号化関数
Bigtable にデータをエクスポートする場合、クエリ対象のテーブルを含む BigQuery データセットと同じ Google Cloud リージョン境界内に存在する Bigtable インスタンスのみをターゲットに設定できます。詳しくは、ロケーションに関する留意事項をご覧ください。Pub/Sub はグローバル リソースであるため、この制限は Pub/Sub へのデータのエクスポートには適用されません。
データ キャンバスから継続的クエリを実行することはできません。
継続的クエリジョブの実行中は、継続的クエリで使用される SQL を変更できません。詳細については、継続的クエリの SQL を変更するをご覧ください。
継続的クエリジョブが 7 日以上遅れている場合は、ジョブをキャンセルして、新しい継続的クエリジョブを開始する必要があります。クエリを再度実行し、
APPENDS
変更履歴関数を使用して、以前の継続的クエリジョブを停止した時点から処理を再開できます。詳細については、特定の時点から継続的クエリを開始するをご覧ください。
予約の制限事項
- 継続的クエリを実行するには、Enterprise エディションまたは Enterprise Plus エディションの予約を作成する必要があります。継続的クエリは、オンデマンド コンピューティングの課金モデルをサポートしていません。
- 継続的クエリの予約の割り当てを作成するときに、関連する予約は 500 スロット以下に制限されます。自動スケーリングを使用するように構成することはできません。
- 継続的クエリの予約の割り当てでは、予約が共有するように構成されている場合でも、アイドル スロットは共有されません。
- 継続的クエリの予約割り当てと同じ予約で、異なるジョブタイプを使用する予約割り当てを作成することはできません。
- 継続的クエリの同時実行を構成することはできません。BigQuery は、
CONTINUOUS
ジョブタイプを使用する使用可能な予約割り当てに基づいて、同時に実行できる継続的クエリの数を自動的に決定します。 - 同じ予約を使用して複数の継続的クエリを実行すると、個々のジョブで使用可能なリソースが公平に分割されない場合があります(BigQuery の公平性を参照)。
料金
継続的クエリでは、スロットで測定される BigQuery 容量コンピューティングの料金が使用されます。継続的クエリを実行するには、Enterprise エディションまたは Enterprise Plus エディションを使用する予約と、CONTINUOUS
ジョブタイプを使用する予約割り当てが必要です。
データの取り込みやストレージなど、他の BigQuery リソースの使用量は、BigQuery の料金に記載されている料金で課金されます。
継続的クエリの結果を受け取るサービス、または継続的クエリの処理中に呼び出されるサービスの使用量は、そのサービスに公開されている料金で課金されます。継続的クエリで使用される他の Google Cloud サービスの料金については、次のトピックをご覧ください。
次のステップ
継続的クエリを作成してみる。