Google BigQuery

Tableau×BigQueryをコスパ良く使う方法

こんにちは、エクスチュア渡部です。

TableauでBigQueryに繋いで分析したりダッシュボードを作ることは、
BigQueryの強力な集計基盤とTableauの自由な分析・可視化体験がコラボする夢のような仕組みです。

ただ、BigQueryはご存知の通りクエリの都度課金なので、インスタンス課金のRedshiftのような感覚で使用していると、
知らない間にクエリが大量発行されて課金が嵩んでしまうケースもあります。

そこで、今回はそんなTableau×BigQueryのメリットを存分に享受できるよう、
事前に知っておくと役に立つ課金対策を紹介しようと思います。

==================================

(1)抽出で済むなら抽出を使う

クエリ都度課金は、BigQueryを「ライブ接続」で使用するからこそ起きる問題です。
データの接続を「抽出」にして使用すれば、抽出の更新時などを除き課金の心配は不要になります。
ただ、これは接続するデータがあまり大きくないことが前提になります。
抽出ファイルを作成するのに時間がかかりすぎてしまう or 事情により抽出を使用できない場合は次の対策を実行しましょう。

(2)Tableauのドラッグ&ドロップの度に課金される対策をする

ライブ接続でBigQueryに接続していると、キャッシュが使用される機会などを除き、
基本的にはTableauでのドラッグ&ドロップの度にBigQueryで課金されています。

行やマークに何か一つ置くたびにクエリが走り、Tableau上のクエリの実行をキャンセルしても
BigQueryで中止しない限りは最後まで実行され課金対象となってしまいます。
Tableauである程度操作をした後BigQueryのクエリ履歴を見ると大量にクエリが発行されている・・・という体験をしたこともある方も少なくないのではないでしょうか?

この対策として、「Tableauで狙った形での配置が終わるまでは、自動更新の一時停止を行う」という手段があります。
Tableauの上の方にあるデータソースの一時停止マークを押すだけです。

これをクリックすると、データソースの自動更新が一時停止され、
再度クリックを押すまではクエリを流す(課金が発生する)のを防ぐことができます。

(3)日付別テーブルではなく、Column-based-partitioning-fieldを使う

BQで日付別にテーブル名を分けて_table_suffixで集計したい日付範囲を指定する「日付別テーブル」を使用されている方も多いと思います。
ただ、この日付別テーブルは現状Tableauで接続すると、1日1日のテーブルが別々のテーブルとして認識されてしまいますね。

TableauでカスタムSQLとパラメーターを用いて任意の日付範囲を持ってくるということは出来なくはないですが、
正直扱いづらいですし日付範囲をパラメーターで指定するとなると、
ダッシュボードとしての展開する場合ユーザーに与えられる自由度も減ってしまいます。

そんな解決策として、まだβ版ですがリリースされている機能である
BigQueryのColumn-based-partitioning-fieldを使うという手があります。
https://cloud.google.com/bigquery/docs/creating-column-partitions

Column-based-partitioning-fieldとは、日付型やタイムスタンプ型の列をpartitioning-fieldとして指定することで、その日付の範囲でしかBigQueryで課金されない仕組みです。
これを使用することで、任意の日付の範囲での課金に済ませられるほか、ダッシュボードユーザーにも直感的な日付範囲でのフィルターを実現することができます。

ちなみに、column-based-partitioning-fieldはstandardSQLでしかサポートしていないので、
Tableauのデータソース画面上でレガシーSQLのチェックを外してから使用してください。

(4)不要な行と列は事前に取り除いたテーブルに接続する

BigQueryの課金は「選択されている列」と「その列に含まれるデータの容量」に依存します。
そのため、特にダッシュボードで表示する際の用途など、表示したい値が決まっている場合は、
不要な行や列をBigQuery上で事前に掃除しておくことで、Tableau上での課金を大幅に抑えることが可能です。

例えば、「日付別のユーザー数」を集計したい場合、下記の2つのデータソースではどちらが(課金的に)適しているでしょうか?

左側はタイムスタンプ×イベント×ユーザーID単位のレコードとなっているため、行数が余分に増えてしまいますね。
日付別のユーザー数が出したいのであれば事前に右の形のようにBigQueryで集計してしまう方が行数が少なくなります。
また、事前に集計することで不要な集計の手間を省けるのでダッシュボードのパフォーマンスも良くなるという一石二鳥なので、
極力データソースの最適化を行なってから接続しましょう。

ちなみに、これは「BQ上でビューを作成してそこに接続する」という意味ではありません。
BigQueryのビューでは結局元データにクエリが走ってしまうので課金対策にはなりません。
ビューではなく再集計したテーブルが出来上がるようにしましょう。

========================

エクスチュアは、技術力とデータ分析力を軸に企業のマーケティング課題の解決を行う企業です。
Tableau、Google Cloud、Adobe Marketing Cloudなどにおいてプロフェッショナル資格を持つスタッフ達が、
デジタルマーケティングからビッグデータ分析まで統合的にサポートします。

お問い合わせはこちらからどうぞ

ブログへの記事リクエストはこちらまで

ピックアップ記事

  1. 最速で理解したい人のためのIT用語集

関連記事

  1. Google Cloud Platform

    Vertex AI Embeddings for Text によるテキストエンベディングをやってみた…

    こんにちは、石原と申します。自然言語処理(NLP)は近年のA…

  2. Tableau

    【手順解説】MacでRedshiftに接続できない時の原因と対処法【Tableau経由】

    はじめに今回は、私(ヨナハ)が実際に業務でトラブったことをシェアした…

  3. Tableau

    Tableau ServerとTableau Onlineの違い【管理者向け】

    【基本のキ】Tableau ServerとTableau Online…

  4. Adobe Analytics

    Adobe Analytics: DWHレポートの日付列をBigQueryのDate型として扱う

    こんにちは、エクスチュアの權泳東(権泳東/コン・ヨンドン)です。…

  5. Tableau

    Tableau 2021.1 新機能紹介

    Tableau 2021.1 新機能紹介今回の2021.1は前回ま…

  6. Office365

    エクセルで「テーブル」を使うメリット① 「BIツールで使いやすい」

    データを扱ういろんな環境、ツールがありますが、今も現場で出番の多いエ…

カテゴリ

最近の記事

  1. Snowflake無料トライアルの始め方
  2. TROCCO入門
  3. コンポーザブルCDPにおけるSnowflakeのマルチモーダ…
  4. boxMCPサーバーを使ってみた
  5. #ai-datacloud勉強会でマルチモーダルに触れた日
  1. Tableau

    Tableau : IF文の「集計」「非集計」の混在を解決
  2. ObservePoint

    Webサイトのプライバシーポリシー検証(5/6):「個人情報の販売/共有禁止」リ…
  3. Canva

    Canva×生成AIで“映える”ダッシュボードモックを爆速で作っ…
  4. IT用語集

    ハードウェア(Hardware)、ソフトウェア(Software)って何?
  5. 海外カンファレンス

    Adobe Summit 1日目
PAGE TOP