Google BigQuery 为 visiId 和 visitStartTime 返回相同的值
Posted
技术标签:
【中文标题】Google BigQuery 为 visiId 和 visitStartTime 返回相同的值【英文标题】:Google BigQuery returns same value for visiId and visitStartTime 【发布时间】:2016-06-06 08:46:39 【问题描述】:我在 BigQuery 上运行了这个非常简单的查询,它返回了 visitId 值作为访问开始时间。代码如下,你也可以在这里看到截图:visitStartTime and visitId same value
SELECT visitStartTime, visitId FROM [83606741.ga_sessions_intraday_20160606] group by visitStartTime, visitId order by visitStartTime DESC;
如何让会话开始时间显示为 11:45,这两列具有相同值的原因是什么?
感谢您的回复!
【问题讨论】:
visitId 通常与 visitStartTime 相同,但它们可以得到不同的值,例如当用户在同一秒内启动两个不同的会话时。对于访问的开始,请务必使用 visitStartTime。 【参考方案1】:下面的函数会返回访问时间。
SELECT time(SEC_TO_TIMESTAMP(visitid)) as visit_time FROM [83606741.ga_sessions_intraday_20160606]
正如您所说,visitID 与 visitstarttime 相同。因此,visitid 不是会话的唯一引用。要创建唯一的 sessionid,您需要将其与 visitorid 连接:
concat(fullvisitorid, string(visitid)) as sessionid
【讨论】:
也许这个答案的一个有趣的版本是在这个博客中提供的(visitStarTime 和 visitId 之间的区别)。 conversionworks.co.uk/blog/2018/07/25/…【参考方案2】:如果您特别需要小时和分钟,一种方法是使用 FORMAT_UTC_USEC、HOUR 和 MINUTE 函数,如下所示。
SELECT
FORMAT_UTC_USEC(visitStartTime * 1000000) AS time,
HOUR(FORMAT_UTC_USEC(visitStartTime * 1000000)) AS hour,
MINUTE(FORMAT_UTC_USEC(visitStartTime * 1000000)) AS minute
FROM ...
访问https://cloud.google.com/bigquery/query-reference#datetimefunctions了解更多详情。
【讨论】:
以上是关于Google BigQuery 为 visiId 和 visitStartTime 返回相同的值的主要内容,如果未能解决你的问题,请参考以下文章
使用 Google BigQuery / Apps 脚本为插入 Google 表格的数据添加时间戳
从 bigquery 导入到 google 表格限制为 10k 行
Google BigQuery - 将数据流式传输到 BigQuery
google-bigquery 在查询结果中将日期格式设置为 mm/dd/yyyy