見出し画像

GA4の日次データのうち、一定期間のデータをBigQueryの別プロジェクトに毎日コピーする方法

こんにちは!noteをお読みいただきありがとうございます。
BX事業本部(旧SMKT事業部)note運営の山口です。

BigQueryにGA4の日次データを毎日自動でコピーする手法は、データ管理を効率化してデータ分析の精度を高めるために重要です。

本記事では、GA4の一定期間のデータをBigQueryの別プロジェクトに自動的に転送する方法についてご紹介します。
 
BigQuery Data Transfer Serviceを使用して、以下のようなデータ転送を行う際の手順を具体的に解説しています。
✅️データセット単位でのデータ転送
✅️データテーブル単位でのデータ転送
✅️直近7日間のデータテーブルを別プロジェクトにコピー(データ転送)
 
以下のような方に、特におすすめしたい記事となっています。

  • GA4のデータ格納先のプロジェクトを移行したい方

  • 特定のプロジェクト間のデータ転送を自動化したい方

  • BigQuery Data Transfer Serviceの概要を学びたい方

  • データセットまたはデータテーブル単位でのデータ転送を行いたい方

  • GA4のデータの正確性を保つために直近7日間のデータを再評価したい方 

BigQuery Data Transfer Service概要

BigQuery Data Transfer Serviceとは

BigQuery Data Transfer Serviceとは、設定したスケジュールに基づいてBigQueryへのデータの転送を自動化する、GCPのマネージド サービスです。
 
コードの作成等は不要で、BigQuery のナビゲーションメニューで設定ができます。
転送可能なデータソースは、こちらから確認できます。

BigQuery Data Transfer Serviceのアクセス方法

BigQuery Data Transfer Serviceへのアクセス方法は、以下の3通りがあります。

  • Google Cloud コンソール

  • bq コマンドライン ツール

  • BigQuery Data Transfer Service API

今回は、BigQuery Data Transfer Service APIを使用します。
 
BigQuery のナビゲーションメニュー>データ転送>APIの有効化
から、APIを有効にすると転送の作成が可能になります。

 

BigQuery Data Transfer Serviceの料金体系

BigQuery Data Transfer Serviceの利用自体は無料ですが、転送するデータ量によって以下のコストが発生します。

ストレージコスト

ストレージコストは以下の通りです。

  • 10GBまでは無料

  • 10GBを超える分について、1GBあたり0.02ドル/月(米国リージョン)
    ※日本リージョンの場合、1GBあたり0.026ドル/月

例えばAプロジェクトからBプロジェクトに30GBのデータ転送を行った場合、Bプロジェクト側の所有者は、以下のストレージコストが発生し始めます。
 
(30GB-10GB)×0.02=0.4ドル/月(約60円/月)
 
ただし、これはBプロジェクト内に他のデータが存在しない場合であり、
すでに10GB以上のデータがある場合は30GB分のストレージコストが丸々発生します。
参考リンク

クエリ実行コスト

BigQueryで実行したSQLクエリが読み取ったデータサイズに応じて課金されます。
基本は0円ですが、クエリを書いてデータテーブル単位で転送する場合にはクエリ実行コストが発生します。
 
クエリ実行コストは以下の通りです。

  • 毎月1TBまで無料

  • 1TBを超える読み取りデータサイズに対して、1TBあたり5ドル(米国リージョン)
    日本リージョンの場合、1TBあたり6ドル/月

参考リンク

リージョン間データ転送コスト

以前まではリージョンをまたいでデータ転送を行うことはできませんでしたが、Data Transfer Serviceにより実現可能になりました。

なお、リージョンをまたいでデータ転送を行う場合は、リージョン間データ転送コストが発生します。
(同一リージョン内のデータ転送は無料)

 例)米国↔東京(asia-northeast-1)間でデータ転送する場合
最初の1TBまで0.12ドル/GB
┗1TB=1,024GBの場合は、約122.88ドル(約18,000円)
参考リンク

データセット単位で別プロジェクトにデータ転送する方法

データセットをコピーする方法は、以下の2通りがあります。

  1. BigQuery のコピー関数を使用する

  2. BigQuery Data Transfer Service を使用する

参考リンク

ただし、1.は以下の場合には使用できません。

  • スケジュール設定(定期的なデータ転送)を行う場合

  • VPCが異なるプロジェクト間でのデータ転送を行う場合

参考リンク

そのため、今回は2.の方法での手順を解説します。

【Step1】[データ転送] ページに移動

<補足事項>
「転送元」ではなく、「転送先」のプロジェクト側で設定を行います。 

【Step2】[転送を作成] をクリック

 

【Step3】ソースタイプの[ソース]から[Dataset Copy] を選択 

【Step4】転送構成名の[表示名]に、転送実行の名前を入力(日本語も可)

【Step5】スケジュール オプションで、データ転送スケジュールを設定

<補足事項>
入力する時間は「UTC協定世界時」にする必要があります。(例:日本時間の15:00→UTCの6:00)
参考リンク
「すぐに開始」を選択すると、転送の作成を保存した後すぐに転送が開始されます。

【Step6】転送先の設定の[データセット]で、データ転送”先”のデータセットを選択

<補足事項>
既存のデータセットへの追加ではなく、新しいデータセットを作成することも可能です。

【Step7】[データソースの詳細] に、データ転送”元”の情報を入力

<補足事項>
[Overwrite destination table]に✔を入れると、同じデータテーブル名があった際に上書きされます。(データとスキーマの両方)

【Step8】[保存] をクリック

<注意点>
個人のGoogleアカウントを用いて転送が行われるため、転送実行者のアカウントにデータセットをコピーする権限が付与されているかを確認する必要があります。

データテーブル単位で別プロジェクトにデータ転送する方法

BigQueryにおけるデータ転送は、データセット単位では可能ですが、データテーブル単位で行うことはできません。

そのため、データテーブル単位で別プロジェクトにデータ転送するには、データ転送用の新しいデータセットを作る必要があります。 

以下よりデータ転送の手順をご説明します。

【Step1】クエリを実行

以下のクエリを実行します。
SELECT * FROM (データテーブル名)

【Step2】結果の保存>BigQueryテーブルをクリック

【Step3】データ転送用の新しいデータセット名とデータテーブル名を作成し、エクスポート

【Step4】「データセット単位で別プロジェクトにデータ転送する方法」のStep1から順に実行

Step3まででデータ転送用のデータセットとデータテーブルを作成できたので、前述した「データセット単位で別プロジェクトにデータ転送する方法」の手順に沿ってデータ転送を行います。

【実践】GA4の直近7日間のデータテーブルをBigQueryの別プロジェクトに毎日コピーする方法

GA4の日次データは、BigQuery上では「events_yyyymmdd」の形式で保存されます。
下記の例では、データセット(analytics_****)の中に337日分のデータテーブルが格納されている状態です。 


今回は、GA4の直近7日間のデータテーブルをBigQueryの別プロジェクトにデータ転送する方法をご紹介します。

【補足:直近7日間のデータテーブルをデータ転送する理由】
GA4のデータは、一度生成されても後日に再度更新されることがあります。
参考リンク

そのため、直近のデータを洗い替えることで、転送先のプロジェクトに格納されるデータの正確性を高めるために、このような手法を行っています。

データ転送手順は以下のとおりです。
なお、プロジェクト名は以下を前提にご説明します。

  • 転送元のプロジェクト:Aプロジェクト

  • 転送先のプロジェクト:Bプロジェクト

【Step1】直近7日分データだけのデータセットを作成

直近7日分のデータテーブルだけのデータセットを作成するために、以下のクエリを実行します。

DECLARE start_date DATE DEFAULT DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY);
DECLARE end_date DATE DEFAULT DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY);
CREATE TEMP TABLE date_range AS
SELECT day
FROM UNNEST(GENERATE_DATE_ARRAY(start_date, end_date)) AS day;
FOR day_record IN (SELECT day FROM date_range)
DO
EXECUTE IMMEDIATE FORMAT("""
CREATE OR REPLACE TABLE `(Aプロジェクトのプロジェクト名).(Aプロジェクトの新しいデータセット名).events_%s`
AS
SELECT * FROM `(Aプロジェクトのプロジェクト名). (Aプロジェクトの既存のデータセット名).events_%s`
""", FORMAT_DATE("%Y%m%d", day_record.day), FORMAT_DATE("%Y%m%d", day_record.day));
END FOR;

 これで、直近7日分のデータが新しいデータセット(dateset_oneweek)にコピーされました。

【Step2】クエリのスケジュール設定

 Step1で作成したクエリを毎日スケジュール実行するために、「スケジュール」から設定を行います。

【Step3】クエリに任意の名前を設定

 「スケジュールされたクエリの名前」に、任意の名前を設定します。(create_one_weekなど)

【Step4】データテーブル作成のスケジュール設定

「スケジュール オプション」から、データ転送スケジュールを設定します。

<補足事項>
入力する時間は「UTC協定世界時」にする必要があります。(例:日本時間の15:00→UTCの6:00)
参考リンク
「すぐに開始」を選択すると、転送の作成を保存した後すぐに転送が開始されます。

【Step5】ロケーションタイプ(リージョン)の選択

 「クエリ結果の書き込み先」内にある「ロケーションタイプ」から、リージョンを選択します。
基本的には「自動ロケーションを選択」に✔が入っている状態で大丈夫ですが、データセットによって異なるリージョンを設定している場合は、✔を外して今回使用するデータセットのリージョンに変更する必要があります。

今回は、Aプロジェクト全体のリージョンはUSですが、使用するデータセットは東京(asia-northeast1)だったため、リージョンを個別に設定しました。

【Step6】転送のスケジュール設定

作成したcreate_data_oneweekを、Bプロジェクトのデータセット内に転送します。
手順は、データセット単位で別プロジェクトにデータ転送する方法と同様です。

【Step7】直近7日分のデータセット内のデータテーブルを削除 

直近7日分のデータセット(dateset_oneweek)には、翌日になると8日分のデータが格納されてしまいます。
毎日常に「直近7日分」のデータテーブルを保つためには、毎日dateset_oneweek内のデータテーブルを削除する必要があります。 

dateset_oneweek内のデータテーブルを削除するために、以下のクエリを実行します。
ただし、データセット(dateset_oneweek)自体は削除せず、あくまでデータセット内のデータテーブルのみを削除する点に注意が必要です。 

FOR table_record IN (SELECT table_id FROM `(Aプロジェクトのプロジェクト名).dataset_oneweek.__TABLES__`)
DO
EXECUTE IMMEDIATE FORMAT("DROP TABLE `(Aプロジェクトのプロジェクト名).dataset_oneweek.%s`", table_record.table_id);
END FOR;

これでデータセット内(dateset_oneweek)のデータテーブルが削除されました。

【Step8】データテーブル削除のスケジュール設定

Step7で作成したクエリを毎日スケジュール実行するために、「スケジュール」から設定を行います。
手順はデータテーブルを作成する時と同様ですので、Step2~5を参考にしてください。 

<補足事項>
「スケジュールされたクエリの名前」は、delete_dataset_oneweekなどとしておくと良いでしょう。 


以上の手順を実行することで、GA4の直近7日間のデータテーブルをBigQueryの別プロジェクトに毎日コピーすることができるようになります!

皆さんも実務で使う機会があった際は、ぜひこの記事を参考にデータ転送を行ってみてください。 


Tableau, Power BI, Looker Studioの無料テンプレート配布中

弊社公式サイトでは、各種BIツールの無料テンプレートを配布中です!
GA4レポート、ガントチャート、インサイドセールスの活動管理ダッシュボードなど、すぐに活用可能なサンプルを各種そろえております。
ダウンロードは下記URLよりお申し込みください。

●●●

弊社PBDなら、データドリブン経営を一気通貫でご支援可能です。

PBDでは、BI導入支援をはじめとした、データ活用支援サービスを提供させていただいております。
基盤構築から設計~開発~運用まで一気通貫で貴社のデータ活用をご支援。
PBDが得意とする伴走型支援で、導入後の活かし方までサポートいたします。
また、分析活動をお客様社内で実現いただけるよう、トレーニングのご相談も承っております。

「データ基盤構築」「BI人材育成」「データ可視化・分析」なら、パーソルビジネスプロセスデザインにご相談ください。

●●●
パーソルビジネスプロセスデザイン
ビジネストランスフォーメーション事業本部(セールスマーケティング)
では、幅広いポジションで一緒に働く仲間を募集しています!

●●●

サービスに関するお問い合わせ
パーソルビジネスプロセスデザイン BX事業本部
smkt_markegr_note@persol.co.jp