初心者OK！BigQueryデータキャンバスでデータ分析してみよう

# はじめに

こんにちは、京セラコミュニケーションシステム　西田（@kccs_hiromi-nishida）です。
今回は、BigQueryデータキャンバスを触ってみたので記事投稿しました。

すごく便利な新機能でしたので、ぜひ試してみてください！

:::note warn
本記事は2024年9月ごろに作成しております。よって、引用している文章などはこの時点での最新となります。ご了承ください。
:::

## この記事の対象者

* BigQuery上で簡単にデータ分析をしたいと思っている方
* 新機能に興味のある方

## BigQueryデータキャンバスって何？

BigQueryデータキャンバスは、2024年4月に開催されたGoogle Cloud Next'24にて発表された新機能で、2024年8月29日にGAとなりました。

https://cloud.google.com/blog/products/data-analytics/gemini-in-bigquery-features-are-now-ga?hl=en

BigQueryデータキャンバスの特徴を一言でいうと、`SQLやプログラミングの知識があまりなくてもBigQuery上でデータ分析を行える`だと思います。（あくまで私見ですが）

では、なぜ知識があまりなくてもできるのでしょうか？
それは自然言語（いわゆる日本語・英語など普段使っている言語）を使用したデータの抽出やグラフ化を実施してくれるからです。
そこにはGoogleの生成AIであるGeminiが使われています！

他には以下のような機能をそなえています。（もちろん他にもあります）

* 棒グラフ・ヒートマップ・折れ線グラフ・円グラフ・散布図による可視化
* 作成したグラフのカスタマイズ
* クエリの結果やグラフから分析情報を自動提供

公式ドキュメントはこちらです。
（日本語ページだとpre-GAになっていますが英語ページだとpre-GAの表示は消えています）

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

## 準備

:::note warn
使用画像について
特別な記載のない限り、画像はすべて**BigQuery**の画面をキャプチャしたものとなります
:::

BigQueryデータキャンバスを使うために、まずは準備です！
GCPのコンソールからBigQueryメニューに遷移します。

赤枠の`データキャンパス`を選択。
<img width="400" alt="BigQuery" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752159/3200bc98-b3b2-9790-757b-4781110d3317.png">

`データキャンバスを有効にする`を選択。
<img width="400" alt="BigQuery" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752159/9eb82598-b1c9-3db0-c8cb-a3b936d6c1e4.png">

このような画面が表示されるので、それぞれのAPIの`有効にする`を選択。
<img width="300" alt="BigQuery" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752159/c9541868-68a8-081c-f0d1-c72d4fa8c483.png">

権限を付与するユーザーを追加し、`次へ`を選択。これで必要な準備は完了です。
<img width="300" alt="BigQuery" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752159/4d9093a8-6fa9-df74-cbc1-9ec4acb1531d.png">

## テーブルの作成

検索対象のテーブルがないと始まらないので、作成しておきます。
今回はBigQueryの一般公開データセットで提供されているデータ（ghcnd_2023という米国海洋大気庁提供の気象データ）を使うことにしました。

今回はプロジェクトにblog_testというデータセットを用意しテーブルを作成しました。

```SQL:create tableサンプル
CREATE table 
  blog_test.weatherdata as
SELECT
  id,
  date,
  element,
  value,
  qflag
FROM
  `bigquery-public-data.ghcn_d.ghcnd_2023`
WHERE
  id like 'JA%'
```

## データキャンバスを使ってみる

赤枠の`データキャンバス`を選択し、データキャンバスを開いてみましょう。

<img width="500" alt="BigQuery" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752159/46fc2284-bbbb-6a6b-35be-0063ceb4f297.png">

入力エリアに先ほど作成したテーブル名を入力し、赤枠のアイコンを選択。
<img width="500" alt="BigQuery" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752159/abd76966-611d-9e19-144e-31f5282a3809.png">

`Add to canvas`を選択。
<img width="500" alt="BigQuery" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752159/aafb7273-56db-2515-be59-1cd486ea87c5.png">

このようにテーブルがキャンバス上に配置されました。

## クエリの実行

ではさっそくクエリを実行したいと思います。赤枠部分の`クエリ`を選択しましょう。
<img width="500" alt="BigQuery" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752159/ef2e255c-01f7-915b-82d8-e410ea587e0c.png">

入力エリアに「月ごとの降水量を月の昇順で出力して」と入力し、赤枠のアイコンを選択すると自動的にSQLが出力されました！
<img width="500" alt="BigQuery" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752159/7236bd02-2dee-eef8-f582-442f09807c3f.png">

すごいなーと思ったのが、element列の条件を正しく設定できているところです。
element列は気象データの種類を表していて、代表的な項目は以下の5項目なのですが、「降水量」と日本語で指示し、きちんとelement = 'PRCP'と置き換えられているところに驚きました。

| 種類 | 内容 |
|:-:|:-:|
| PRCP  | 降水量（1/10ミリ）  |
| SNOW  |  降雪量（mm） |
| SNWD  |  積雪の深さ（mm） |
| TMAX  |  最高気温（1/10度） |
| TMIN  |  最低気温（1/10度） |

実行ボタンを押すとSQLが実行され、結果が下部に表示されました。
<img width="500" alt="BigQuery" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752159/769d80b6-80aa-47f3-50c5-793a187fc6f8.png">

`結果を保存`を選択すると、CSVやJSON形式での保存のほか、BigQueryのテーブルとして保存したり、スプレッドシートに出力することも可能になっていました。

また、`データを探索`を選択すると以下のメニューが表示され、分析のためのツールに接続することが可能です。

<img width="500" alt="BigQuery" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752159/d3e40207-41cc-b77a-777d-f58738b495a6.png">

## グラフ作成

では、先ほどの実行結果からグラフを作成してみましょう。
これはもうボタン1つで可能です、すごく簡単！

可視化⇒棒グラフの作成の順で選択します。
<img width="500" alt="BigQuery" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752159/6ea8325b-5e7b-90c5-6b5b-ba7718022a57.png">

しばらくすると棒グラフが表示されました。
Summaryにはデータの分析結果が出力されています。（今は英語だけみたいですね）

<img width="500" alt="BigQuery" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752159/001dcb4f-55e2-1932-f1c4-242d5af229a0.png">

グラフの出力に関しても、自然言語を使った作成が行えます。
先ほどの手順だと「棒グラフの作成」という内容でグラフが作成されましたが、
作成時に「棒グラフをグラフの色は緑、項目名は日本語で作成して」に変更して作成した結果がこちら！
きちんと指定した内容が反映されました。

※赤枠の場所に入力し、赤枠のアイコンを押すとグラフが再作成されます。

<img width="500" alt="BigQuery" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752159/fe94d853-ea82-a411-c482-f13cda396bc1.png">

ちないにラベル名など、簡単なカスタマイズは手動でも可能です。
（`編集`を選択すると編集可能項目が右側に表示される）

<img width="500" alt="BigQuery" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752159/d74d2c69-eeb1-621f-ed57-e161582619a3.png">

# おわりに

今回はBigQueryデータキャンバスの紹介を行いました。
自然言語でデータ抽出からグラフの出力まで簡単に行えたのには驚きました。
ただ、検索対象のテーブルにメタデータ（テーブル名、カラム名、データ型、テーブル・カラムの説明文）が不足していると、正しいSQLを出力できないこともあるそうです。

今回は一般公開データセットを使ったのでスムーズに使えましたが、自分で作成したテーブルを使う場合はメタデータをきちんと入力した上で使用するのがオススメです！


# おしらせ

弊社X（旧：Twitter）では、Qiita投稿に関する情報や各種セミナー情報をお届けしております。情報収集や学びの場を求める皆さん！ぜひフォローしていただき、最新情報を手に入れてください:grinning:

https://x.com/kccs_digital