データポータルとBigQueryを連携したら、数十万課金してしまった

#はじめに
こんにちは！ロッククライミングをこよなく愛する「ぼるたまん」です。
弊社では、BigQueryを利用したデータ活用を幅広く行なっており、私のチームでも毎日のように利用しています。
このデータ活用において重要となってくるのが可視化の方法です。
どんなに素晴らしいデータであってもそれを可視化し、必要としている方々に届かなければ宝の持ち腐れになってしまいます。
可視化のためのBIツールはたくさん存在しますが、その中でも私たちのチームでは最近データポータルを使用することが増えました。
この資料では、データポータルを選定した理由と実際使ってみてハマった落とし穴（**＝BigQuery連携で数日で数十万課金してしまった件**）について紹介します。


#BIツールの選定

弊社ではこれまでレポーティングの方法として以下のサービスを主に使っていました。
それぞれのメリット・デメリットを記載しています。（※これは私の主観なので、ご参考までにお願いします。）

| ツール   |     メリット      | デメリット |
| --- | ----------- | ------- |
| PowerBI   　 | 知名度がある（弊社でも利用実績がある） <br>分析テンプレートが豊富<br>一元管理がしやすい| 権限管理が煩わしい<br>データの読み込みが遅い<br>PowerBI固有のDAX関数というものがある |
| Looker　　  　　　 | 分析結果を活用できる<br>一元管理がしやすい<br>BigQueryとの親和性が高い<br>セキュリティに強い | 権限管理が煩わしい<br>使用コストが高い<br>学習コストが高い|
| スプレッドシート　| 作成までの時間が短い<br>変更しやすい<br>共有しやすい　| 一元管理がしにくい<br>長期的なレポーティングとして利用しづらい　|

このようなメリット・デメリットを踏まえて、私たちのチームでは特に**「権限管理がしやすく、且つ一元管理がしやすいBIツール」**を必要としていました。（弊社内で毎度毎度必要なレポーティングに必要な権限を与える申請をするのが非常に手間であると感じていたため。）
そこで発見したのがデータポータルです。

##データポータルとは
データポータルは、さまざまなデータを容易に読み取ったり共有したりできるダッシュボードやレポートを作成するための**無料のツール**です。
データポータルの基本的な使い方に関しては，[こちら](https://support.google.com/datastudio/answer/6378181?hl=ja&ref_topic=6267740#zippy=%2C%E3%83%AC%E3%83%9D%E3%83%BC%E3%83%88-%E3%83%9B%E3%83%BC%E3%83%A0%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AE%E5%87%A1%E4%BE%8B
)を参照してください。

▶️データポータル概要

https://marketingplatform.google.com/intl/ja/about/data-studio/

##データポータルを選定した理由
データポータルの良いところはたくさんありますが、決め手となった理由は以下の3つです。

* **BigQueryとの連携が簡単**
* **社内共有がしやすい**
* **一元管理がしやすい**

これら3つについて少し詳しく紹介します。

###BigQueryとの連携が簡単
データポータルがGCPのサービスであることもあり、BigQueryとの連携も簡単にできます。
BigQueryとの連携方法として以下の4つがあります。

| 接続方法   |     説明                          |
| ---       | -------------------------------- | 
| 最近のプロジェクト   　 | 最近 GCP Cloud Console でアクセスしたプロジェクトを利用する方法 |
| マイプロジェクト   　 |アクセス権があるプロジェクトを利用する方法（課金プロジェクトとマイプロジェクトは同じ） |
| 共有プロジェクト   　 | アクセス権がある共有プロジェクトを利用する方法（課金プロジェクトと共有プロジェクトは別） |
| カスタムクエリ   　 | 独自のSQLクエリを利用する方法 |

個人的にはマイプロジェクトとカスタムクエリをよく使用します。
基本はマイプロジェクトを使用し、少し複雑なクエリが必要なときやカラムを絞りたいときにカスタムクエリを使用しています。

▶️詳細はこちら

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

https://support.google.com/datastudio/answer/6370296?hl=ja#zippy=%2C%E3%81%93%E3%81%AE%E8%A8%98%E4%BA%8B%E3%81%AE%E5%86%85%E5%AE%B9


###社内共有がしやすい
BIツールを使用する上で、**「権限付与の工程が大変」**という課題はどこの会社でもあると思います。
弊社でもPowerBIやLookerを利用するときは、個人で担当者に連絡して必要な権限を付与してもらっています。（これがわりと大変）
一方で、データポータルでの共有では以下が可能となります。

* **個々のユーザーまたはGoogleグループ単位**で、レポートとデータソースの閲覧・編集を許可することができる
* 組織内でドメインがあれば、**ドメイン内のユーザー全員（組織内のみ）を対象に権限付与ができる**
* 組織内だけでなくウェブ上の任意のユーザーに閲覧権限を付与できる

▶️参考

https://support.google.com/datastudio/answer/6287179?hl=ja

###一元管理がしやすい
一元管理に関してはだいたいのBIツールでできますが、データポータルにおいては以下の特徴があります。

* 接続できる**データソースが豊富（450種類以上）**かつ接続が容易である
* [ページとナビゲージョン機能](https://support.google.com/datastudio/answer/6370267?hl=ja#zippy=%2C%E3%81%93%E3%81%AE%E8%A8%98%E4%BA%8B%E3%81%AE%E5%86%85%E5%AE%B9)がある
* GCPサービス内で1レポートを1ファイルのように扱える（検索機能もあり、どこにどのレポートがあるか見つけやすい）

#思わぬ落とし穴　
ここまでデータポータルの良いところばかり話してきましたが、実際に使用してみて落とし穴にハマったので紹介します。
ハマった落とし穴は以下です。

###  **「BigQuery連携で数日で数十万課金してしまった」**

## データポータル使用時のBigQueryの課金体制

* データポータルは無料だが、データポータル経由で BigQuery にアクセスすると、**BigQuery の利用料金が発生**する
* レポートの編集・閲覧中またはキャッシュ保存中に不定期に、BigQuery に対するクエリが発行される
* デフォルトで12時間ごとに BigQuery から非同期的にデータを取得しようとし、このたびに BigQuery の費用が発生する
* [キャッシュ](https://support.google.com/datastudio/answer/7020039#zippy=%2C%E3%81%93%E3%81%AE%E8%A8%98%E4%BA%8B%E3%81%AE%E5%86%85%E5%AE%B9)によって BigQuery の費用は最小限に抑えられるが、キャッシュを更新すると、BigQuery の費用が発生する可能性がある
* キャッシュはベストエフォート型であり、クエリレスポンスのサイズによっては利用できない可能性がある

##原因調査

* 接続クエリの更新頻度を12時間に設定していても、**編集や手動更新するとクエリが実行されていた** <font color="red">**←影響小**</font>
* ビュー側（利用者側）でディメンションを使用すると対応するグラフ数分クエリが実行されていた <font color="blue">**←影響大**</font>
    * 期間絞りは課金されなかった
* **接続クエリの使用量（GB）が大きいほどビューで使用されるディメンションクエリも大きくなっていた**
    * ex. 接続クエリ100GB × ディメンションによる更新グラフ20個 ＝ 2000GB が一度に使用されていることになる

##対応策

* **BigQuery側で中間テーブルを作成し、データポータルでは最小限のクエリを作成する**（参考：クエリあたりのデータ最小処理容量は10MB）
    * 基本的にjoinを用いた結合などをカスタムクエリで実行しない
* **安易にディメンションを作らない**
* **ページ単位でディメンションをつける**



## [参考] その他のメリット・デメリット

###メリット

* 編集がドラッグ＆ドロップでできる
* ドリルダウンでデータを絞り込めるinteraction機能がある
* 接続できるデータソースが豊富、且つ接続が容易にできる
* 複数人での編集作業ができる
* [テンプレート](https://inhouse-plus.jp/web-analytics/googledataportal/marketing-templates/)が豊富
* 操作方法のキャッチアップがそれほど難しくない
* GCPアカウントがあれば利用できる
* DMP（Data Management Platform）連携ができる

###デメリット

* デザインの詳細な自由度が低い
* 設定方法が少し特殊（BigQueryデータの指標やディメンションをそのまま選んだりする点）
* 更新頻度の自由度が低い（[参考](https://support.google.com/datastudio/answer/7020039?hl=ja#set-data-freshness-for-a-data-source&zippy=%2C%E3%81%93%E3%81%AE%E8%A8%98%E4%BA%8B%E3%81%AE%E5%86%85%E5%AE%B9%2C%E3%82%B3%E3%83%8D%E3%82%AF%E3%82%BF%E3%81%94%E3%81%A8%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E6%9B%B4%E6%96%B0%E9%A0%BB%E5%BA%A6)）
    * 更新頻度が**MAX12時間**であるため、デイリー更新ができない
* 1ページあたりに設定できるグラフの上限数は**50個**まで
* スマホアプリは未対応
* データ分析補助機能やデータ抽出機能（ETL）はない（他のBIツールにはよくある機能）
 
#まとめ
この記事では、データポータルの選定理由と実際に使用してみてハマった落とし穴について紹介してきました。
データポータルは数少ない無料のBIツールであり手軽に利用できる反面、外部サービス（特にBigQuery）と連携する際は、そちらの課金体制を知っておかないと知らぬ知らぬの間に多額の課金が発生してしまう恐れがあることを身に染みて感じました。
この記事を読んでいただいた方々が同じような落とし穴にはまらず、データポータルを利用していただければ幸いです。
ここまで読んでいただきありがとうございました。