GCPでJupyterLabを使ってBigQueryのデータを可視化してみた

注意

私はGCPもpythonもjupyterも初心者です。ぐぐりながら動かせてとても嬉しかったので投稿させていただきました。
間違いなどありましたら教えていただけるとありがたいです。

# 参考

- [[GCP] AI Platform Notebooksが正式リリースされていたので使ってみる
](https://dev.classmethod.jp/articles/mrmo-gcp-ai-platform-20200428/)
- [【BigQuery】CREATE文を使えるの知ってた？SQLでテーブル作成](https://www.isoroot.jp/blog/1651/)

# BigQueryのデータを作っておく

GCPのコンソールを開く

https://console.cloud.google.com/

サイドメニューの「BigQuery」を選択

![Screen Shot 2020-08-23 at 18.27.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142910/b9cb2e99-17e2-4404-cc4c-2b7fbacfc414.png)

「データセットを作成」をクリック

![Screen Shot 2020-08-23 at 18.32.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142910/068efc22-1516-9e96-6b8f-c3f94cadbae7.png)

データセットIDを「test_data_set」にして作成してみました

![Screen Shot 2020-08-23 at 18.33.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142910/8108ce14-1a45-9c33-f3dc-2aec216cb60b.png)

テスト用にテーブルとデータを簡単に作成

以下のクエリをクエリエディタに貼って実行をクリック

```sql
create table test_data_set.t (i INT64);
insert into test_data_set.t values (1),(2),(5),(7),(12);
```

![Screen Shot 2020-08-23 at 18.45.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142910/2a2622dd-4af8-00e6-c183-c075f4bb55ba.png)

データができたので、こちらをJupyterを使って見てみようと思います。

![Screen Shot 2020-08-23 at 18.45.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142910/eeb2c911-888a-29b1-8db7-b97b466c985b.png)

# ノートブックのインスタンス作成

サイドメニュー > 「AI Platform」 > 「ノートブック」　を選択する

![Screen Shot 2020-08-23 at 17.36.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142910/19aade7b-3dc0-7657-9c45-3a663a0b4b8e.png)


「新しいインスタンス」　＞　「Python 2 and 3 」　を選択しました

![Screen Shot 2020-08-23 at 17.53.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142910/49d4d4f8-0104-fa6a-af96-c61f8895e48a.png)

リージョンなどが選択でき、見積もり金額も表示されるのですが、今回は試したらすぐインスタンスを削除するのでデフォルトの設定のままで「作成」を押しました

![Screen Shot 2020-08-23 at 18.03.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142910/872d9ea4-db4c-ab07-1ab4-f06a73686d7b.png)

「JUPYTERLAB を開く」をクリック

![Screen Shot 2020-08-23 at 18.10.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142910/d51954d9-11ef-6996-7bc8-9cc09f47ec4e.png)

JupyterLabが開く

![Screen Shot 2020-08-23 at 19.14.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142910/79d645ee-3e8c-9a9e-1d6a-302031fed3f8.png)

---

最初bigqueryのデータを取得しようとした時に、

`"UserWarning: Cannot create BigQuery Storage client, the dependency google-cloud-bigquery-storage is not installed."`

とエラーになったので先に`google-cloud-bigquery-storage`をインストールしておく

「コンソール」をクリック

![Screen Shot 2020-08-23 at 19.12.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142910/7fc1d7b5-87c8-0970-a724-855141733ea9.png)

`google-cloud-bigquery-storage` をインストールする

```console
$ pip install google-cloud-bigquery-storage
```

![Screen Shot 2020-08-23 at 19.09.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142910/94890474-fb64-4aef-231d-46ec5d808391.png)

---

Python3を押して新しいノートブックを作成

![Screen Shot 2020-08-23 at 18.55.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142910/3d6e4442-8934-6b8e-2efc-df92cac926b5.png)


JupyterLabのデフォルトで`/tutorials/bigquery/BigQuery basics.ipynb`と言うファイルがありわかりやすい説明もありましたので、その辺を参考に簡単にbigqueryからのデータ取得の処理を作成してみました

```py
from google.cloud import bigquery

client = bigquery.Client(location="US")

query = """
    select *
    from test_data_set.t
    order by i
"""

query_job = client.query(
    query,
    # Location must match that of the dataset(s) referenced in the query.
    location="US",
)  # API request - starts the query

dv = query_job.to_dataframe()
print(df)
df.plot()
```

「▷」を押して実行

![Screen Shot 2020-08-23 at 19.33.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142910/f5da3852-00f3-bd7b-5a4b-e9f428338020.png)

最初に作ったbigqueryのデータをグラフ表示することができました！

---

最後に料金がかかるので、「停止」で停止しておく

![Screen Shot 2020-08-23 at 19.41.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142910/8a2e29df-393c-a3a8-8134-0fc126145e03.png)

---

最後まで見ていただいてありがとうございましたm(_ _)m