FLINTERS Engineer's Blog

FLINTERSのエンジニアによる技術ブログ

BigQuery データキャンバスとGemini in BigQueryを使ってみた

こんにちは、株式会社FLINTERSに出向中のおさないです。

本記事はFLINTERSブログリレー企画「梅雨にも負けないブログ祭り」の一環で、BigQuery データキャンバスとGemini in BigQueryを実際に触ってみてどうすれば実務で使えそうかという観点でまとめてみました。提案や検証の一助となれましたら幸いです。

注: BigQuery データキャンバスやGemini in BigQueryは本記事公開時点でPreview状態です。

今回のキャンバスの説明

全体の流れとしては以下の画像のようなことを行います。

キャンバス全体

これにより誰が本プロジェクト内のテーブルを、どの程度利用しているかのざっくりとした可視化を試みます。

生の監査ログテーブルをGeminiに渡して複雑なクエリを生成させるのはプロンプトでの指示(言語化)が難しいため今回は加工しやすいよう、一段クエリを挟み(クレンジングし)そこからGeminiによるクエリ生成を行なっています。

実務ではBigQueryに詳しくなくても複数回Geminiで生成したクエリを挟んだり、生成されたクエリの結果同士をJOINしたりといったことを行うことでクレンジングやラングリングを実現しつつ分析や可視化に活用できるでしょう。

クエリ生成

具体的に入力したプロンプトは以下の通りです。

"principal_emailごとに参照しているtable_nameを集計しprincipal_email、table_name、合計数を出力。さらに合計数で降順ソート。"

これによって得られたクエリを実行した結果は以下の画像のようになりました。

Geminiによって生成されたクエリとその結果

開発環境なので利用者数が限られており件数はかなり少なめですが、目的の結果が得られるクエリが生成できていることがわかります。

このプロンプトの意図・期待したところとしては以下の内容になります。

  • principal_emailごとに参照しているtable_nameを集計
    • 指定した単語に合わせ GROUP BY しつつ COUNT() もしてほしい
  • principal_email、table_name、合計数を出力
    • 指定した単語に該当する内容を SELECT に含めてほしい
  • さらに合計数で降順ソート
    • 指定した単語を ORDER BY ... DESC してほしい

このようにGeminiに出力してほしいクエリから、逆算して得られる言語化した文字列をプロンプトに渡すことがGemini in BigQueryを使う上で重要なことだと考えています。

ビジュアライズ

キャンバスではビジュアライズも行うことが可能です。

棒グラフによるビジュアライズ

今回はかなり大雑把な例なのでさすがにこの出力をそのままレポートとして提出することはないですが、ビジュアライズに適したクエリ結果を適切に出力し、それをグラフに出力すれば十分レポートとして提出できるレベルのものは作成できます。

また棒グラフ以外にも選択肢はあるので、ここで適切なものを選択し、見え方をカスタマイズすればより美しいグラフを作成することができるでしょう。

ビジュアライズの選択肢

おわりに

今回はBigQuery データ キャンバスとGemini in BigQueryの使用例についてまとめてみました。キャンバスはローコードでデータの操作、ビジュアライズを可能にし、Gemini in BigQueryは自然言語でクエリを生成できるようになりました。これは初学者の学習コストを下げることにつながりますし、ベテランの提案の量や作業速度を向上させることにもつながると考え、私自身は好意的に捉えています。

繰り返しになりますが、この記事が皆様の提案や検証の一助となれましたら幸いです。

参考

Gemini in BigQuery が AI でデータと分析のワークフローをどのように加速させるか | Google Cloud 公式ブログ

Gemini の支援機能を使用してクエリを作成する  |  BigQuery  |  Google Cloud

データ キャンバスで分析する  |  BigQuery  |  Google Cloud