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

在 Google Composer 中将 Bigquery 结果保存为 JSON

如何使用 AppScript 在 BigQuery 中将 Google 工作表持久化为表格