如何在 Big Query 中获取测量协议命中数据?

Posted

技术标签:

【中文标题】如何在 Big Query 中获取测量协议命中数据?【英文标题】:How to get measurement protocol hit data in Big Query? 【发布时间】:2016-09-01 10:48:53 【问题描述】:

我们正在尝试通过measurement protocol 连接在线和离线行为。 它已被发送到Google Analytics,并带有以下参数(以及其他参数):

eventCategory= offline_transaction  
source= store  
medium= offline

数据已在Google Analytics 中正确注册,可在报告部分中找到。

我正在尝试通过这种方式让他们进入BigQuery

SELECT  
hits.eventInfo.eventCategory, trafficSource.source, trafficSource.medium  
FROM [XXX:YYY.ga_sessions_20160827]  
where hits.eventInfo.eventCategory="offline_transaction" 
and trafficSource.source="store" 
and trafficSource.medium="offline" 

输出是“查询返回零记录”。

知道我做错了什么吗? BigQuery 中是否提供来自 Measurement Protocol 的数据?

提前致谢。

【问题讨论】:

【参考方案1】:

我相信正在发生的事情是,trafficSource.source/medium 被记录在会话级别,而 hits.eventCategory 被记录在命中级别,因此它们永远不会一起包含在一行中,因此 0 行与您的查询匹配.试试下面的方法:

SELECT 
  MAX(IF (hits.eventInfo.eventCategory = "offline_transaction", hits.eventInfo.eventCategory,  NULL)) WITHIN RECORD AS eventCategory, 
  SUM(IF (hits.eventInfo.eventCategory = "offline_transaction", 1,  NULL)) WITHIN RECORD AS eventCnt,
  trafficSource.source, 
  trafficSource.medium  
FROM [XXX:YYY.ga_sessions_20160827]  
  where hits.eventInfo.eventCategory="offline_transaction" 
  and trafficSource.source="store" 
  and trafficSource.medium="offline"

这应该让您计算该事件在该会话中发生的次数。在不了解更多关于您的用例/您想要从表中提取的内容的情况下,我不知道还有什么可以提供帮助的。

我不得不经常使用 aggregate_function() WITHIN RECORD 语法来处理这些类型的问题。

【讨论】:

感谢您的回答,@andre622。它不起作用。也许链接到 BigQuery 项目的视图禁用了 UserId 的事实会影响这种行为? (命中与 UserId 值相关联)。 啊,是的;请参阅this answer 以进一步了解用户 ID。剧透警告:它不会从 GA 配置文件导出到 BigQuery。

以上是关于如何在 Big Query 中获取测量协议命中数据?的主要内容,如果未能解决你的问题,请参考以下文章

在 Big Query 中获取表创建时间

如何在 Google Big Query 中正确使用 GROUP BY 命令?

如何使用 Google Big Query 在 GROUP_CONCAT 上获取不同的值

Big Query-如何在 Big Query 中按浏览量、用户每周比较数据

如何通过 Google 表格中的二维数组通过 Apps 脚本插入 Big Query?

基于会话的 Google Big Query SQL 聚合数据