sql - 显示来自在其 session 中看到 X 页的用户的交易

标签 sql google-analytics google-bigquery

我正在使用 BigQuery 中的 Google Analytics(分析)数据。

我想显示在 session 中访问网站上特定页面的用户的交易 ID 列表,我已取消嵌套 hits.page.pagepath为了识别特定页面,但由于我不知道实际事务 ID 将出现在哪一行,我无法返回有意义的结果。

我的代码看起来像这样,但返回 0 结果,因为所有事务 Id 都是 NULL 值,因为它们不会发生在页面路径满足 AND hits.page.pagePath LIKE "%clear-out%" 的行上。健康)状况:

SELECT hits.transaction.transactionId AS orderid
FROM `xxx.xxx.ga_sessions_20*` AS t
  CROSS JOIN UNNEST(hits) AS hits
WHERE parse_date('%y%m%d', _table_suffix) between 
DATE_sub(current_date(), interval 1 day) and
DATE_sub(current_date(), interval 1 day)
AND totals.transactions  > 0
AND hits.page.pagePath LIKE "%clear-out%"
AND hits.transaction.transactionId IS NOT NULL

例如,如何返回用户查看的所有 session 的事务 ID AND hits.page.pagePath LIKE "%clear-out%" ?

最佳答案

交叉加入时,您会为每次点击重复整个 session 。每次点击使用此嵌套信息来查找您的页面 - 而不是交叉连接的点击。
不幸的是,你给了两个相同的名字。最好将它们分开 - 这就是它的样子:

SELECT
  h.transaction.transactionId AS orderId
  --,ARRAY( (SELECT AS STRUCT hitnumber, page.pagePath, transaction.transactionId FROM t.hits ) ) AS hitInfos -- test: show all hits in this session
FROM
  `google.com:analytics-bigquery.LondonCycleHelmet.ga_sessions_20130910` AS t 
  CROSS JOIN t.hits AS h
WHERE
  totals.transactions > 0 AND h.transaction.transactionId IS NOT NULL
  AND
  -- use the repeated hits nest (not the cross joined 'h') to check all pagePaths in the session
  (SELECT LOGICAL_OR(page.pagePath LIKE "/helmets/%") FROM t.hits )
LOGICAL_OR()OR 的聚合函数- 所以如果任何命中匹配它返回的条件TRUE
(这个查询使用了谷歌公开可用的 GA 数据。它有点旧但很好玩。)

关于sql - 显示来自在其 session 中看到 X 页的用户的交易,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48925942/

相关文章:

sql - sql-server 的 dbext 连接字符串

java - Java Web 应用程序中的 Oracle 10g 数据库集成

google-analytics - 谷歌分析中非常奇怪的浏览量

android - 生产应用上的 Google Analytics 问题

python - Cloud Dataflow 写入 BigQuery Python 错误

google-bigquery - BigQuery 标准 SQL 自动将左连接中的 null 替换为零

mysql - 左连接复制并计算所有行

sql - 从时间间隔数据绘制每小时条形图的优雅方法?

javascript - 从跟踪代码中删除管道字符?

sql - 对 BigQuery 中的所有列应用函数