BigQuery Studio を使ってみる

# BigQuery Studio を使ってみる

## はじめに
この記事は、2023/12/20 に開催された、[color is【クラウドLT大会vol.6】大型アップデート祭り](https://saison-coloris.connpass.com/event/303486/) で発表された内容をもとに作成しています。
当日の発表資料も公開しています。

https://speakerdeck.com/yu_sa18/bigquery-studio

## BigQuery Studio とは？
BigQuery Studio とは、Google Cloud Next '23 で発表された BigQuery の新機能群です。

https://cloud.google.com/blog/ja/products/data-analytics/announcing-bigquery-studio/

いろいろな新機能がありますが、この記事では

- Colab Enterprise Python ノートブックの実行
- データプロファイル、データ品質の可視化
- SQL エディタでのコード開発支援

を調査しました。

## 新機能検証
以降で使っているデータセットやテーブルは公開データセット `bigquery-public-data.ml_datasets.penguins` そのもの、もしくはそのデータを個人プロジェクトへインポートしたものになります。

### 始め方
BigQuery コンソール画面の「エクスプローラ」ペインの下部に画像のような表示が出てきます。

![キャプチャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/426544/37797051-fdd5-422d-911f-56e041c4a1f5.png)

「今すぐ有効化」をクリックし、画面の表示に従って必要なAPIの有効化を行うと使うことができます。

### Colab Enterprise Python ノートブックの実行
BigQuery コンソール画面から Python ノートブックを開き、実行・編集ができるようになりました。
実行できるノートブックソリューションは Colab Enterprise という、Google Cloud のセキュリティとコンプライアンス機能を備えた、コラボレーション型マネージド ノートブック環境です。
Colab Enterprise は Vertex AI からも使うことができます。

https://cloud.google.com/vertex-ai/docs/workbench/notebook-solution?hl=ja

BigQuery コンソール画面から、新規のノートブックを作成することはもちろん、テーブルデータやクエリ実行結果のデータを使ってノートブックを作成することが可能です。

![image (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/426544/2d28b7cf-b40d-0caf-a09f-5b90df52c449.png)
![image(2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/426544/65d62d15-c556-f48f-81e3-b2a9a4c2341f.png)

BigQuery コンソール画面からノートブックを作成すると、BigQuery のデータを Python の Pandas ライブラリ（データ解析ライブラリ）で扱うために必要な処理がすでに用意されています。
なので以降はノートブックを開いている環境を気にせず、ノートブック開発を進めることができます。

例えばクエリ実行結果から作成したとき、以下3つのセルが用意されていました。

1.Reference SQL syntax from the original job
クエリ実行ジョブより SQL 文を取得する
```
# Running this code will display the query used to generate your previous job
job = client.get_job(<Job ID>) # Job ID inserted based on the query results selected to explore
print(job.query)
```

2.Result set loaded from BigQuery job as a DataFrame
BigQuery のデータを DataFrame 形式へ変換する
```
# Running this code will read results from your previous job
job = client.get_job(<Job ID>) # Job ID inserted based on the query results selected to explore
destination = job.destination
# Load data from a BigQuery table using BigFrames DataFrames:
bq_df = bpd.read_gbq(f"{destination.project}.{destination.dataset_id}.{destination.table_id}")
bq_df
```
3.Show descriptive statistics using describe()
DataFrame 形式に変換したデータから、記述的な統計を表示する
```
# Generate descriptive statistics.
bq_df.describe()
# Convert BigQuery DataFrame to pandas DataFrame.
pandas_df = bq_df.to_pandas()
```



### データプロファイル、データ品質の可視化
テーブル詳細タブに、「データプロファイル」「データ品質」が追加されました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/426544/940cc366-4daf-c1df-0432-ca0b32ab07af.png)

これらも BigQuery 固有の機能ではなく、Dataplex というサービスでテーブル内を検証した結果を BigQuery コンソール上で確認できる、というものです。

https://cloud.google.com/dataplex/docs/introduction?hl=ja

#### データプロファイル
カラムごとにデータの統計情報と、出現回数上位10個の値とその割合が表示されます。
例1）FLOAT カラムで見れる情報
![image (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/426544/0839ed6e-3f7f-4a3a-b6d9-85284485e4be.png)

例2）STRING カラムで見れる情報
![image (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/426544/58af57e0-e883-c2f9-8df0-2196e906f773.png)

上記の出力は「クイックデータプロファイル」の結果ですが、スキャンする範囲、フィルタ、更新スケジュールなどを設定できるカスタムプロファイルもあります。

https://cloud.google.com/bigquery/docs/data-profile-scan?hl=ja#create_a_data_profile_scan

#### データ品質
カラムごとにルールを指定し、そのルールに違反したデータがないかを確認できます。
ルールは前述のデータプロファイルの結果から推奨ルールを使うことも、ユーザーがカスタムルールを作ることもできます。
ルールには、Null チェックをするルールや範囲内にデータが収まっていることをチェックするルールなどを指定できます。

https://cloud.google.com/dataplex/docs/auto-data-quality-overview?hl=ja#rule-definition

### SQL エディタでのコード開発支援
この機能は実際に触れていないため、調査内容を中心にまとめます。

BigQuery コンソール画面の SQL エディタより、Duet AI（Google が提供するAI機能）のクエリ開発支援を受けることができます。
具体的には、

- 自然言語から SQL クエリを作成する
- 完成していない SQL クエリの補完を行う
- SQL クエリについて自然言語で説明する

の3つで、新規でクエリを作成する場合や既存クエリの改善など、さまざまなシーンで利用できそうです。

2023/12/25 時点、この機能を使うには BigQuery Studio 有効化だけでなく、 Duet AI in BigQuery Preview form から申し込む必要がありますが、フォームリンクは以下URLの英語ページのみ表示されていました。

https://cloud.google.com/bigquery/docs/write-sql-duet-ai

フォームの説明に

> Due to capacity constraints, the preview is available only to paid customers of BigQuery at this time. Others are welcome to complete the form to express interest in future enrollment.

とあるので、BigQuery の無料枠を超えているかどうかで機能が有効化される優先度が決められていると思われます。


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