GA4で取得したデータは、探索レポートやLooker Studioで閲覧できるようになるまでに半日〜1日のタイムラグがあります。
収益が大きく動くリスティング施策では、このタイムラグはなかなか厄介です。
(なお、UAではもっと早く表示されていました。)
この記事では、GA4で取得したデータを、15分刻みでLooker Studioに表示する方法について解説します。
本記事は本職のデータベースエンジニアが作成した記事ではありません。
余計な手順が含まれている場合や、誤った記載がある可能性があります。
誤りに気がついた方は、お手数ですが問い合わせフォームよりご指摘いただけますと大変助かります。
目次
データの流れの概要
GA4データを15分刻みでLooker Studioで表示するために、以下の図のようなGA4→BIgQuery→Looker Studioのデータパイプラインを作成します。
Google Cloudプロジェクトの作成
こちらの記事に従って、プロジェクトを作成します。
GA4とビッククエリを連携
以降は、GoogleAnalytics4での設定になります。
GA4の左サイドバーの「管理」→「BigQueryのリンク」をクリック
右上の「リンク」をクリック
先ほど作成したプロジェクトを選択し、確認をクリックします。
ここで注意点なのですが、
「デフォルトのデータセット作成先ロケーション」
は「US(米国)」のままにしてください。
東京 (asia-northeast1)
を選択することもできるのですが、東京にすると、後の設定でなぜかエラーが出ます。
次へをクリックします。
エクスポート タイプにて、「ストリーミング」を選択します。
(選択できない状態になっている場合、こちらの記事で解説したクレジットカードの登録がされていません。GoogleCloudの「お支払い」タブから、クレジットカードの登録を確認してください。)
ユーザーデータについては、デフォルトの設定(チェックなし)のままでOKです。
最後に「送信」をクリックして、GA4での設定は終了です。
※なお、ストリーミングでエクスポートする場合、データが欠損することがあります。
正確なデータを取得したい場合は「毎日」の方法でエクスポートすべきなので、今回お伝えするする方法には向いていません。
クエリの定期実行環境を構築
GA4の設定から、最長で24時間すると
プロジェクト名_analytics_XXXXXXXXXというテーブルが自動的に作成されています。
例:bluegoat.analytics_276440588
更新用データセットとテーブルの作成
このGA4から取得したデータセットから、15分間隔で特定のデータを取得し、更新用のテーブルに書き込む処理を作成します。
データセットの作成
まずは、書き込み先のテーブルを作成します。
プロジェクト名の横にある3点リーダーから、「データセットの作成」をクリック
データセット IDに
frequenty_update
などのデータセット名を入力し、「データセットを作成」をクリックします。
テーブルの作成
作成したデータセット名の横にある3点リーダーから、「テーブルの作成」をクリックします。
テーブル名に
15min_update
などのわかりやすいテーブル名を入力し、テーブルを作成をクリックします。
スケジュールされたクエリの作成
左サイドバーから、スケジュールされたクエリを選択します。
クエリの新規作成画面で、以下のSQL文を入力して、テスト実行します。
EXECUTE IMMEDIATE 'CREATE OR REPLACE TABLE bluegoat.frequenty_update.15min_update AS SELECT event_timestamp,event_name, event_params FROM `bluegoat.analytics_276440588.' || CONCAT('events_intraday_', FORMAT_DATE('%Y%m%d', CURRENT_DATE())) || '` WHERE event_name = "内部リンククリック" LIMIT 100';
状況に応じて、2箇所変更する必要があります。
テーブルIDの修正
bluegoat.analytics_276440588
の部分ですが、
- bluegoat → プロジェクト名
- analytics_276440588 → analytics_GA4によって作成されているデータセットID
に変更してください。
データセットIDは、GA4からストリーミング送信が成功していれば、自動的に作成されています。
イベント名の修正
WHERE event_name = "内部リンククリック" LIMIT 100';
こちらの"内部リンククリック"についてですが、こちらも取得したいイベント名(GA4で集計されている)を入力してください。
今回は日本語になっていますが、本来イベント名は半角英数字で記載するのが通例です。
(outbound_linkやpage_viewなど)
クエリの意味
それぞれのクエリの意味をざっくりと解説します。
EXECUTE IMMEDIATE
EXECUTE IMMEDIATEは、動的SQLを実行するために使用されるコマンドです。
動的SQLとは、SQL文が実行時に生成または変更されるものを指します。
これは、静的SQL(コードに固定されたSQL文)と対比されます。
また、EXECUTE IMMEDIATEの中で生成されたSQL文の連結には||を使用します。
CREATE OR REPLACE TABLE bluegoat.frequenty_update.15min_update
書き込み(上書き)先のテーブルを
bluegoat
>frequenty_update
>15min_update
に指定しています。
SELECT event_timestamp,event_name, event_params
指定したテーブルから、
- event_timestamp
- event_name
- event_params
のデータを取得することを指定しています。
`bluegoat.analytics_276440588.' || CONCAT('events_intraday_', FORMAT_DATE('%Y%m%d', CURRENT_DATE())
BigQueryにおいて、GA4のデータは
プロジェクト名
>analytics_ID
>events_intraday_YYYYMMDD
という名称のテーブル(events_intraday_YYYYMMDD)に保存されています。
最新のデータを取得するためには、YYYYMMDDが最新のテーブルから、データを取得する必要があります。
FORMAT_DATE('%Y%m%d', CURRENT_DATE())
の部分で、クエリが実行された時点の日付を取得し、SQLに組み込んでいます。
WHERE event_name = "内部リンククリック" LIMIT 100';
イベント名(event_name)が「内部リンククリック」となっているデータのみ抽出し、上限は100行としています。
クエリ画面から、スケジュールボタンをクリック
以下のポップアップが表示されるので「APIを有効にする」をクリック
「スケジュールされたクエリの名前」に
15分ごとにクリックデータを取得
など、わかやすい名前を入力します。
スケジュールオプションにて、
- 繰り返しの頻度=分
- 繰り返しの間隔=15
を入力します。
クエリ結果の書き込み先
保存をクリックします。
※「クエリ結果の書き込み先」は、設定する必要はありません。
以上で、定期実行されるクエリの設定は終了です。
15分ほど待ってみて、実行時にエラーが出ないか確認しておきましょう。
Looker Studioでデータを取得
データリソースの追加
ツールバーの「リソース」
→「追加済みデータソースの管理」
→「データソースを追加」をクリック
「BigQuery」を選択し、今回作成したテーブルを選択します。
データの更新頻度の変更
先ほどと同じく
ツールバーの「リソース」
→「追加済みデータソースの管理」
→「データソースを追加」をクリック
より、該当のBigQueryデータの「編集」をクリック
「データの更新頻度」をクリックして
更新頻度を15分に設定します。
データ整理と表示
BigQueryのデータリソースには
- event_name(イベント名)
- event_params.key(パラメーター名)
- event_params.value.string_value(パラメーターの文字列の中身)
- event_timestamp(発生時刻)
などの7つディメンションと
- Record Count(個数)
の1つの指標で構成されています。
これらのデータから、欲しいデータによってデータをフィルタリングし、目的とするテーブルを作成します。
たとえば「リンククリックの発生時刻、発生ページ、クリックテキストが早く知りたい」という目的で作成する場合、以下のような表が理想的です。
出力したい表
このテーブルを出力するためには
- 「event_params.key」が「timestamp」のデータ
- 「event_params.key」が「page_location」のデータ
- 「event_params.key」が「click_text_click_url」のデータ
これらのデータをフィルタリングしつつ、テーブル結合する必要があります。
具体的には、以下のようなテーブル結合を行います。
- 2つ目のテーブルのフィルター:「event_params.key」が「timestamp」と一致
- 2つ目のテーブルのフィルター:「event_params.key」が「page_location」と一致
- 3つ目のテーブルのフィルター:「event_params.key」が「click_text_click_url」と一致
※timestampやclick_text_click_urlは、私がよくタグマネージャーを使って取得しているパラメータです。取得には事前に設定しておく必要があります。
以上で、設定は終了です。
だいぶ雑な解説となり恐縮ですが、設定のハードルが高いと感じつつも、どうしても設定したい方は、弊社で設定の代行も行っております。
問い合わせフォームよりご相談ください。