BigQueryテクニック集 – 一時テーブルを使って低コストで開発

BigQuery

 and,a株式会社 デジタルマーケティングエンジニア 佐藤洋太

GA4+BigQueryを利用していてこのようなエラーに出くわすことはありませんか?

エラーメッセージ:
Quota exceeded: Your project exceeded quota for free query bytes scanned. For more information, see https://cloud.google.com/bigquery/docs/troubleshoot-quotas

このエラーはサンドボックスモードを利用していて、プロジェクトの無料クエリ使用分の限界に達した際に発生するエラーです。
SQLを試したい時にこのエラーが出ると非常に厄介です。
有料にすれば解決では?と思いますが、Billing情報を登録してサンドボックスモードを解除したとしても、大きなクエリはお金がかかってしまうため、結局のところクエリコストを如何に減らせるかがキモになってきます。結局はコストを減らす点、クエリの効率化を行うという点からは逃れられません。

このような背景から、今回は開発時に簡単に使えるクエリコストの軽減テクニックを考えてみます。また、このテクニックは無料使用分でも使えるテクニックですのでご参考にどうぞ。

一時テーブルとは?

そこで登場するのが一時テーブルという機能です。

公式のアナウンス:
https://cloud.google.com/bigquery/docs/multi-statement-queries?hl=ja#temporary_tables

一時テーブルを使用すると、中間結果をテーブルに保存できます。この一時テーブルはセッション レベルで存在するため、データセット内での保存や管理の必要はありません。

複数ステートメント クエリで一時テーブルを作成して参照できます。一時テーブルが不要になったら、手動で削除するか、BigQuery が 24 時間後に削除されるのを待ちます。

https://cloud.google.com/bigquery/docs/multi-statement-queries?hl=ja#temporary_tables

一時テーブルはコピー&ペーストの際のクリップボードのような一時的な保存領域と覚えておきましょう。コスト低減以外にも様々なメリットがあるので必須のテクニックかと個人的には考えています。
公式のドキュメントにもSQLソースの記載はありますが、正直めんどくさい・・・という方向けに楽に作る方法をご紹介します。

実践

工程

1:準備

まずは、クエリエディタを開きます。

2:設定

クエリ設定から「一時テーブルにクエリ結果を保存」を選択し、保存します。

3:SQLの実行

任意のSQLをペーストし、実行します。
今回はごく簡単なSQLを実行します。

4:テーブルが作成されたかの確認

先ほどのクエリ結果画面からジョブ詳細を選択すると宛先テーブルの行にTemporary table という文字がハイライトされています。

Temporary table をクリックすると一時テーブルのスキーマ画面が開きます

ここからクエリを選択して開くとSQLが発行されます
このSQLを実行すると先ほどの結果と同じものが保存されていることが確認できます

画像内のFROM句の文字列が一時テーブルの所在になっています。

下記が一時テーブルの住所です。

`project_id._af0a1e64d3998259dfc43b27b34d1c5d90d1bdcd.anonfd8da7be_cd28_49e0_9c05_8e0f0be12a60`

以上で一時テーブルを作成する操作は終わりです。

画面の操作だけで完結するのでほぼ問題ないと思います。

実際にどれぐらい変わるの?

では実際にどれぐらいコスト低減効果があるのかを試してみます。
今回は140GBを超えるGA4のテーブルに直接アクセスして比較しました

結果:

・経過時間が10秒ほど短くなっている
・消費したスロット時間が大幅に減少

この2点が大きな違いです。
スロット時間の消費は料金に対して直接影響がある部分ですので減少は大きなメリットですね。

最後に

重いテーブルを何回もスキャンするなら一時テーブルに保存してからクエリを開発する形がベストと思います。もちろん中間テーブルを利用するのも有用だと思います。特に有料版ではスケジュールクエリなどを利用して中間テーブルを作成することを強くお勧めします。

関連記事

特集記事

コメント

この記事へのコメントはありません。

ランキング(週間)

  1. 1

    GA4 「ページ ロケーション」と「ページ パス と スクリーン クラス」何が違う?ドメインの有無以外にもパラメータの扱いに違いあり

  2. 2

    GA4 拡張計測機能の新顔「フォームの操作」 form_start, form_submit

  3. 3

    GA4 クロスドメイン設定では、リンク先に「_gl」パラメータが付く。勝手なパラメータを付けるとエラーになるページは要注意

  4. 4

    GA4のレポート画面の数値データは、イベント発生時から何時間後に確定するのか?

  5. 5

    GA4で設定したイベントの消し方(削除の仕方)

  6. 6

    「GA4【無料】オンラインセミナー」セミナーアーカイブ(登録不要)

  7. 7

    ZOOMでの オンラインセミナー 参加方法

  8. 8

    GA4の指標「総ユーザー数」VS「アクティブ ユーザー数」

  9. 9

    ECサイトのゴールデンルートを発見する方法 – Google Analytics 4とPythonを活用して(第2回)

  10. 10

    YouTubeの概要欄に貼られたリンクをクリックしてサイトを訪れたユーザーを計測するために

最近の記事

  1. 生成AIを調整してABテストを実装したら想像以上に早かった

  2. 無料で使えるABテストツールのバージョンアップを行いました

  3. 無料ABテストツール(and,B)のマニュアルを作成しました

カテゴリー

 
TOP