如何使用 Google Analytics 数据在 Bigquery 中获取可用的日期时间字段
Posted
技术标签:
【中文标题】如何使用 Google Analytics 数据在 Bigquery 中获取可用的日期时间字段【英文标题】:How to get a usable datetime field in Bigquery using Google Analytics data 【发布时间】:2019-10-10 11:12:38 【问题描述】:我正在使用 BigQuery 查询 Google Analytics 并按时间提取交易 ID。我很难使用提供的列创建可用的日期时间字段。 使用下面的查询,我能得到的最接近的是“2019-02-11T19:00:00”,其中不包括分钟。 (秒不重要)
SELECT PARSE_DATETIME('%Y%m%d%H', newtime) AS datetime, orderid
FROM
(SELECT CONCAT(date, newhour, newminute) AS newtime
, Orderid
FROM
(SELECT date
, CAST(h.hour AS STRING) AS NewHour
, CAST(h.minute AS STRING) AS Newminute
, h.transaction.transactionId AS Orderid
FROM `analyticsdata*` LEFT JOIN UNNEST(hits) as h
WHERE h.transaction.transactionId!= ''))
目前我遇到的问题: 如果
以下是未格式化的数据:
|日期 |小时 |分钟 |订购|
|20191010 | 12 | 7 | 12345|
我希望它如何显示:
|日期时间 |订购 |
|2019-10-10T12:07:00 | 12345 |
【问题讨论】:
请提供样本数据和期望的结果。 【参考方案1】:我总是使用visitstarttime*1000 + hits.time
以毫秒为单位获取会话时间戳,并添加自会话开始以来的毫秒数。您可以将其输入TIMESTAMP_MILLIS()
以获取 UTC 时间戳,您可以将其重新格式化为具有您选择的时区的字符串。
这是一个运行示例:
SELECT
fullVisitorId -- identify user
,visitstarttime -- identify session per user
,hitnumber -- identify hit
,TIMESTAMP_MILLIS(visitstarttime*1000 + time) as hitTimeUTC -- type: timestamp
,FORMAT_TIMESTAMP('%c in %Z', TIMESTAMP_MILLIS(visitstarttime*1000 + time), 'Europe/Berlin') as hitTimeBerlin -- type: string
,DATETIME(parse_date('%Y%m%d',date),time(hour,minute,0)) localTime
FROM `bigquery-public-data.google_analytics_sample.ga_sessions_20170420`, UNNEST(hits) AS h
WHERE
ecommerceAction.action_type='6' -- is purchase
LIMIT 100
请务必注意hits.hour
和hits.minute
是本地 时间!意思是您在 Google Analytics(分析)界面的视图设置中设置的时间。所以如果你想比较来自不同时区的数据,你必须小心使用它。
【讨论】:
马丁做得非常好! ecommerceactiontype=6 没有返回任何结果,所以我重新应用了检查交易 id 的原始 WHERE 子句不为空 哦,我明白了。 action_type 仅用于增强型电子商务。那你在用旧的吗?【参考方案2】:您需要包括分钟:
SELECT PARSE_DATETIME('%Y%m%d%H%M', newtime) AS datetime, orderid
注意:这假设小时和分钟值是用零填充的,所以01
,而不是1
。
您可能只是想要:
SELECT DATETIME_ADD(PARSE_DATETIME('%Y%m%d', date), INTERVAL h.hour * 60 + h.minute minute) AS datetime
【讨论】:
以上是关于如何使用 Google Analytics 数据在 Bigquery 中获取可用的日期时间字段的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Google Analytics 数据导出到 Google GCS 存储桶或 BigQuery?
如何将用户的电子邮件/电话/地址上传到Google Analytics?
如何使用DTM将App事件发送到Google Analytics