見出し画像

2. BigQueryでGA4のevent_timestampを日時に変換する方法

この記事ではBigQueryでGoogleアナリティクス4のevent_timestampを日時に変換する方法をご紹介しています。

BigQueryやデータ分析に関するお仕事のご相談はTwitterLinkedinからお願いいたします。

event_timestampの変換例

BigQueryにエクスポートされたGoogleアナリティクスのevent_timestampはINTEGERで記録されています。

「YYYY-MM-DD」などの表示形式に変換する際のクエリ例をご紹介します。

-- データを取得する対象期間を設定
CREATE TEMPORARY FUNCTION fromDate() AS (DATE('2018-10-03'));
CREATE TEMPORARY FUNCTION toDate()  AS (DATE('2018-10-03'));

SELECT
 PARSE_DATE("%Y%m%d", event_date) AS date
 , timestamp_micros(event_timestamp) AS time_micro
 , TIMESTAMP_TRUNC(timestamp_micros(event_timestamp), SECOND) AS time_second
 , TIMESTAMP_TRUNC(timestamp_micros(event_timestamp), SECOND, "Asia/Tokyo") AS time_second_jst1
 , FORMAT_TIMESTAMP('%Y-%m-%d %H:%M:%S', TIMESTAMP_TRUNC(timestamp_micros(event_timestamp), SECOND), "Asia/Tokyo") AS time_second_jst2
FROM `firebase-public-project.analytics_153293282.events_*`
WHERE
_TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d', fromDate()) AND FORMAT_DATE('%Y%m%d', toDate())
LIMIT 1

実行結果が以下になります。

画像1

おすすめの変換方法

複数の変換方法を記載していますが、JSTでの表示形式に変換するには以下の変換を行う必要があります。

FORMAT_TIMESTAMP('%Y-%m-%d %H:%M:%S', TIMESTAMP_TRUNC(timestamp_micros(event_timestamp), SECOND), "Asia/Tokyo")

補足:表示形式

「SECOND」の部分は、表示形式にあわせてDAY・ISOWEEK・MONTH・YEARなどに書き換える必要があります。

補足:クエリで実行したテーブル

「FROM `analytics_XXXXXXXX.events_*`」のXXXXXXXの部分はご自身のGoogle AnalyticsのプロパティIDに置き換えてください。
今回はFirebaseデモプロジェクト(firebase-public-project、analytics_153293282.events_*)のデータを利用しています。

おまけ

TIMESTAMP型のUTC形式の時刻をJSTに変換する方法

例:2023-01-01 12:00:00 UTC → 2023-01-01 21:00:00

FORMAT_TIMESTAMP('%Y-%m-%d %H:%M:%S', カラム名, "Asia/Tokyo")


もし気に入っていただけたら、ぜひサポートお願いします!