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

    【UA→GA4】プロパティ 自動作成  2023.3.1 GA4 補完計画

  2. 2

    GA4 × ChatGPT 爆速!GA4 設定 & 解析 革命 第1回

  3. 3

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

  4. 4

    ユニバーサル アナリティクス終了 過去データはどうなる?

  5. 5

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

  6. 6

    GA4の探索で「ページ別訪問数」を見ることは可能か?

  7. 7

    GA4 レポート用識別子、user_id の活用

  8. 8

    GA4 & Looker Studio(旧データポータル) 「割り当てエラー」問題 原因と打開策「データの抽出機能」(2023年1月14日 修正)

  9. 9

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

  10. 10

    GA4で異なるドメイン(サブドメイン)の同一ページパスをドメイン付きで表示する

最近の記事

  1. GA4 × ChatGPT 爆速!GA4 設定 & 解析 革命 第1回

  2. ユニバーサル アナリティクス終了 過去データはどうなる?

  3. 【UA→GA4】プロパティ 自動作成  2023.3.1 GA4 補完計画

カテゴリー

 
TOP