1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

BigQuery Continuous query を試す!

Posted at

BigQuery Continuous query を試す!

はじめに

この記事は 2024年8月28日に行われた color is【クラウドLT大会vol.10】の発表内容をもとに作成しております。

2024年4月で行われた Google Cloud Next '24 にて発表された Continuous query が8月にプレビューとなりました:tada:
この記事では機能の詳細や検証などをまとめます。

Continuous query とは

概要

Continuous query を使うことによって、BigQuery にデータが書き込まれたタイミングでのクエリ実行が可能になり、リアルタイムデータに対する分析ができるようになりました。
また Continuous query プレビューと同じタイミングで BigQuery から Pub/Sub と Bigtable へのエクスポートもプレビューとなったため、他アプリケーションやサービスへの連携がさらに容易になりました。

使い始めるには

2024年8月時点、Continuous query を使うにはプレビュー申し込みフォームより申請が必要です。
ドキュメント上部にフォームのリンクが公開されています。

機能

2024年8月時点で Continuous query として使える機能が指定されています。

出力先

Continuous query で実行したクエリの結果は、以下3つに出力可能です。

  • BigQuery テーブル
  • Pub/Sub
  • Bigtable

サポートしている SQL 関数・操作

Continuous query で実行できる SQL 関数や操作が限定的です。
例えば、上記3つ以外の出力先以外への EXPORT DATA やサポートしている ML 関数以外の使用、外部テーブルのデータソースとしての使用などができません。
詳細はドキュメントの「サポートされているオペレーション」「制限事項」に記載があります。

ロケーション(リージョン)

使用できるリージョンが決まっています。
出力先と同じリージョンにする必要があったり、後述のスロット予約時のリージョンに関係してくるため、使いたいリージョンが対応しているかの確認が必要です。

料金

Continuous query はオンデマンドでの利用はできません。
事前に Enterprise エディションか Enterprise Plus エディションのスロット予約と、ジョブタイプ CONTINUOUS 割り当ての必要があります。
また、自動スケーリングに対応していません。

検証

Continuous query を手元で動かしてみました。

スロットの予約と割り当て

先述の通り、スロットの予約とジョブタイプ CONTINUOUS への割り当てが必要です。
今回はマルチリージョン US のスロットを予約しました。
また、前述のプレビュー申し込みフォームへの申請が完了していないと、 CONTINUOUS への割り当てができません。
予約と割り当て方法は以下ドキュメントを参考にしました。

Continuous query で実行したいクエリの作成

以下の動作をするクエリを作成しました。

  • words テーブルにある英単語を翻訳するように Gemini に指示を出す
  • 指示を出した結果を words_translation テーブルに格納する
INSERT <DATASET ID>.words_translation (translation)
  SELECT
    JSON_EXTRACT_SCALAR(ml_generate_text_result, '$.candidates[0].content.parts[0].text') AS extracted_content
  FROM
    ML.GENERATE_TEXT(
      MODEL <DATASET ID>.gemini_model,
      (SELECT 
        word,
        CONCAT('次の単語を翻訳して。回答は単語だけで返答して。 ', word) AS prompt
      FROM <DATASET ID>.words),
      STRUCT(
        0.8 AS temperature,
        30 AS max_output_tokens))

リモートモデルの作成や ML.GENERATE_TEXT() 関数の使い方などは通常のクエリ実行時と同じです。

クエリモードの設定

Continuous query を実行するには、クエリタブの「:gear:展開」より「継続的クエリ」を指定します。
キャプチャ.PNG

指定するとクエリタブ下部でクエリモードを確認できます。
キャプチャ1.PNG

クエリの実行

クエリモードを設定したあと「実行」ボタンで Continuous query が始まります。
クエリタブの下部に実行時間などの詳細を確認できます。
キャプチャ2.PNG

動作確認

Continuous query が実行中の状態で、クエリで参照しているテーブルにレコードを INSERT すると、クエリが実行されます!
今回の場合は words テーブルに1件レコードを追加すると、words_translation テーブルに翻訳結果が格納されていることを確認できました。

以上です。
どなたかの参考になれば幸いです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?