【BigQuery】非エンジニアでもデータ分析できるってまじ？

# はじめに
こんなことないですか？
◻️ データ分析を始めてみたいけど、データ分析周りの技術に明るくなくて難しい
◻️ SQLがもっと直感的に書ければいいのに
◻️ データの種類が多くて、どこに何があるかわからない

今回はBigQeueryで直感的な操作でのデータ分析を可能としたデータキャンバスの紹介です。

そもそもBigQueryとはGoogleCloudのサービスあり、ライセンス不要の従量課金制なので非常に導入ハードルが低く、なおかつデータ分析にあたっての様々な便利機能を有しているサービスです。

中でも今回はデータキャンバスという昨年リリースされた機能が個人的に衝撃を受けたのでその紹介です。

# データキャンバスについて
データキャンバスは自然言語でデータ検索、クエリ実行、データ可視化までできる機能です。BigQuery Studio上で利用できます。データキャンバスの裏側ではGoogleの生成AIモデルであるGeminiが動いています。2024年のGoogleCloudNextで発表され、2024年8月にGA（一般公開）となりました。

https://cloud.google.com/bigquery/docs/release-notes#August_28_2024


# 事前準備
ここではGoogleCloudのアカウントやBigQuery利用できるようになるまでの手順は省略します。データキャンバスの初期設定（API有効化、IAM設定など）は以下を確認してください。

https://cloud.google.com/bigquery/docs/data-canvas?hl=ja#before_you_begin

今回はBigQueryの一般公開データセットからMLBのデータを使ってデータキャンバスを試してみます。事前に一般公開データセットから自身のプロジェクトにデータをコピーしています。一般公開データセットはお試しでデータ分析をしてみるために非常に便利なのでオススメです。

https://cloud.google.com/bigquery/public-data?hl=ja

# さっそく使ってみる
BigQuery Studioの画面で新規のデータキャンパスを作成します。
![スクリーンショット 2025-01-26 12.08.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956121/e74257fc-dc8c-fc8c-54ae-5d2424965613.png)

新規のデータキャンバスが作成されると以下のような画面が現れます。この画面がまさにキャンバスのようであり、この中でデータを見たり、クエリを書いたり、データを可視化したりしていきます。
![スクリーンショット 2025-01-26 12.25.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956121/fb98272a-693a-16ef-c985-4369552aaabe.png)

自然言語でデータ検索できるウィンドウが出てくるので検索してみます。自身の権限があるテーブルの中（別プロジェクトも含む）から関連してそうなテーブルを列挙してくれます。まさに1番上のものが今回事前準備したテーブルなので選択してキャンバスに追加というボタンを押下します。
![スクリーンショット 2025-01-26 12.29.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956121/2a44cf7e-56b9-e8ae-bec4-ab4c121b9731.png)

キャンバス上に当該テーブルの情報を閲覧できるウィンドウが作成され、そのテーブルに対してクエリを作成したり、他のテーブルを結合したりすることができるようになります。
![スクリーンショット 2025-01-26 12.37.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956121/b64600ac-47c5-08ab-86a7-8390b0382c51.png)

ではクエリを作成して、当該テーブルの中身を見てみます。ざっとこのテーブルの項目を見た感じ選手の打席ごとの結果が全て保存されているように見えました。今回は直近でイチロー選手がメジャーリーグに殿堂入りしたということだったので、イチロー選手の打席を全て出してみようと思います。とりあえず自然言語で以下を記載。
> イチローの打席を全て表示してください。表示する列はこのテーブルのキー項目と対戦するお互いのチーム名と日付と打席結果でお願いします

それっぽいクエリが作成されたので実行してみたところ、結果が得られました。確かにイチロー選手の打席が全て表示されています。
![スクリーンショット 2025-01-26 14.58.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956121/6f31f7f1-73fa-b13d-e254-cf3bc64a0e1c.png)

この結果に対して更に打席結果ごとに集計してみます。上記画像の左下の「これらの結果に対してクエリを実行する」とすると出力結果テーブルに対して更にクエリを実行することができます。
![スクリーンショット 2025-01-26 14.57.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956121/75c21de4-13f1-ce3e-0d84-d30590c916f1.png)

では最後に可視化してみましょう。何の形式で可視化するのかパッと思いつかなくても生成AIがよしなに作ってくれる「自動」の選択肢があるので、今回はその機能で可視化してみます。
![スクリーンショット 2025-01-26 15.00.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956121/9147264c-bd38-1845-1fd8-5a29b703a322.png)
![スクリーンショット 2025-01-26 15.02.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956121/144b4c93-52b4-b24a-f91f-c29a56bbff67.png)


出力されました。見栄えを良くするために降順で並べてもらいます。
![スクリーンショット 2025-01-26 15.03.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956121/0b89cf26-eb07-58d0-a8e4-3378e6550ae9.png)

できました。ここまでの作業が一切コーディングなしでできてしまいます。
あとは名前をつけて左上の保存ボタンで保存をしておくと今回の結果をいつでも見返すことができます。

# まとめ
いかがでしたでしょうか。データキャンバスを使えば誰でも簡単にデータの中身を操作したり、可視化したりすることができ、よりデータの民主化につながると思います。ぜひ使ってみてください。