LoginSignup
2
2

More than 1 year has passed since last update.

Google AnalyticsのデータをCloud Storageにエクスポートする

Posted at

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 のリンク」をクリックします。
GA管理ページ.PNG

「BigQuery のリンク」パネルが開くので、「リンク」ボタンをクリックします。
GA_BQへのリンク.PNG

「BigQuery プロジェクトを選択」からエクスポート先の Google Cloud プロジェクトを選択し、「次へ」ボタンをクリックします。
GA_リンクの設定.PNG

[データ ストリームとイベント]はデフォルトのまま設定します。
[頻度]について、今回は「毎日」を選択し、「次へ」ボタンをクリックします。
GA_構成の設定.PNG

設定に問題がなければ「送信」ボタンをクリックします。これでエクスポートの設定は完了です。

エクスポートされる 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 ...) でエクスポートするカラムとテーブルを指定します。

クエリを自動実行する

クエリタブ上部の「スケジュール」から「スケジュールされたクエリを新規作成」をクリックします。
クエリ新規作成.PNG

クエリの名前とスケジュールオプションを設定し、「保存」ボタンをクリックします。
Google Analytics のエクスポートデータを見ると、最終更新時刻が17時などの夕方なので、クエリ実施の時刻は夜遅くに設定しました。
新たにスケジュールされたクエリ.PNG

保存したスケジュールされたクエリは、 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

以上です。
参考になれば幸いです。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2