Google AnalyticsのデータをCloud Storageにエクスポートする
はじめに
Google Analytics のGA4を使うことで、Google Analytics のデータを BigQuery にエクスポートできます。
BigQuery にエクスポートして Google Analytics のデータを分析することができますし、
同じ Google Cloud のサービスである Cloud Storage にもエクスポートすることで、データの長期保存や他アプリケーションへ展開することができます。
今回は Google Analytics のデータを BigQuery を経由して Cloud Storage へエクスポートしてみました。
エクスポート方法
今回は、
① Google Analytics のデータを BigQuery にエクスポートする
② BigQuery のデータを Cloud Storage にエクスポートする
の2つの手順を実施します。
Google Analytics のデータを BigQuery にエクスポートする
BigQuery へのエクスポートは、Google Analytics の設定のみです。
データをエクスポートしたい Google Analytics のページを開き、画面左下の「管理」ボタン(歯車マーク)をクリックします。
[プロパティ]列の「BigQuery のリンク」をクリックします。
「BigQuery のリンク」パネルが開くので、「リンク」ボタンをクリックします。
「BigQuery プロジェクトを選択」からエクスポート先の Google Cloud プロジェクトを選択し、「次へ」ボタンをクリックします。
[データ ストリームとイベント]はデフォルトのまま設定します。
[頻度]について、今回は「毎日」を選択し、「次へ」ボタンをクリックします。
設定に問題がなければ「送信」ボタンをクリックします。これでエクスポートの設定は完了です。
エクスポートされる Google Analytics のデータについて
エクスポート先の BigQuery テーブル
Google Analytics のデータは、BigQuery の analytics_<Google Analytics のID>
というデータセットの、
events_YYYYMMDD
というテーブルにエクスポートされます。
データセットとテーブルは自動で作成されます。
エクスポートの頻度
エクスポート設定の[頻度]で「毎日」と「ストリーミング」が選択できます。
「毎日」の場合、Google Analytics のイベントデータがその次の日にエクスポートされます。
例)2022/8/9に起こったイベントのデータは、2022/8/10にevents_20220809
テーブルにエクスポートされます。
「ストリーミング」の場合、イベント発生ごとにデータが events_intraday_YYYYMMDD
という一時テーブルにエクスポートされます。
その後 events_YYYYMMDD
テーブルが作成され一時テーブルが削除されます。
例)2022/8/9に起こったイベントのデータは、生成されるたびに events_intraday_20220809
テーブルに書き込まれます。
2022/8/9のイベントの全データはのちにevents_20220809
テーブルに格納され、events_intraday_20220809
テーブルが削除されます。
詳細は Google Analytics のドキュメントを確認してください。
BigQuery のデータを Cloud Storage にエクスポートする
Cloud Storage へのエクスポートは、BigQuery のクエリを使います。
クエリをスケジュール登録し、日時で自動実行するためです。
DECLARE table_date STRING;
SET table_date = FORMAT_TIMESTAMP("%Y%m%d", DATE_ADD(current_date(), INTERVAL -1 DAY));
EXECUTE IMMEDIATE FORMAT("""
EXPORT DATA
OPTIONS (
uri = 'gs://<Cloud Storage のバケット名>/events_%s_*.json',
format = 'JSON',
overwrite = true
)
AS (
SELECT *
FROM `analytics_<Google Analytics の ID>.events_%s`
)
""", table_date, table_date);
クエリの詳細
DECLARE table_date STRING;
set table_date = FORMAT_TIMESTAMP("%Y%m%d", DATE_ADD(current_date(), INTERVAL -1 DAY));
DECLARE
で変数を宣言し、SET
で変数の値を設定します。
DATE_ADD(current_date(), INTERVAL -1 DAY)
でクエリ実行の前日の日付を取得し、
FORMAT_TIMESTAMP("%Y%m%d",...)
で日付の形式をテーブル名と同じ YYYYMMDD に変換します。
EXECUTE IMMEDIATE FORMAT("""
<中略>
""", table_date, table_date);
変数をテーブル名に使う場合は EXECUTE IMMEDIATE FORMAT("""<クエリ>""", <変数名>)
を使用します。
<クエリ>
内で変数の値で置き換えたい箇所を %s
と記載し、<変数名>
に置き換える変数名を記載します。
EXPORT DATA
OPTIONS (
uri = 'gs://<Cloud Storage のバケット名>/events_%s_*.json',
format = 'JSON',
overwrite = true
)
AS (
SELECT *
FROM `analytics_<Google Analytics の ID>.events_%s`
)
EXPORT DATA OPTIONS
で エクスポート先のURIとエクスポートフォーマットを設定します。
エクスポートされたデータが分割された場合に備えて、URIにワイルドカードを指定する必要があります。
また、Google Analytics のデータにはネストデータが含まれているため、そのままエクスポートするにはフォーマットを JSON に指定します。
(UNNEST() を使ってネストデータを展開すれば、CSVなどでもエクスポート可能です。)
AS (SELECT ...)
でエクスポートするカラムとテーブルを指定します。
クエリを自動実行する
クエリタブ上部の「スケジュール」から「スケジュールされたクエリを新規作成」をクリックします。
クエリの名前とスケジュールオプションを設定し、「保存」ボタンをクリックします。
Google Analytics のエクスポートデータを見ると、最終更新時刻が17時などの夕方なので、クエリ実施の時刻は夜遅くに設定しました。
保存したスケジュールされたクエリは、 BigQuery の左メニューの「スケジュールされたクエリ」から確認することができます。
参考にしたドキュメント・記事
https://cloud.google.com/bigquery/docs/reference/standard-sql/timestamp_functions?hl=ja#current_timestamp
https://cloud.google.com/bigquery/docs/reference/standard-sql/date_functions?hl=ja#date_add
https://cloud.google.com/bigquery/docs/reference/standard-sql/operators?hl=ja#concatenation_operator
https://cloud.google.com/bigquery/docs/exporting-data?hl=ja#exporting_data_into_one_or_more_files
https://apl-py.com/tec/bigquerysql%E5%86%85%E3%81%A7%E5%A4%89%E6%95%B0%E3%82%92%E5%AE%9A%E7%BE%A9%E3%81%97%E3%81%A6%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95declare%E3%81%A8set
https://zenn.dev/persona/articles/3d72642f12e461
以上です。
参考になれば幸いです。