显示来自在其会话中看到 X 页的用户的交易
Posted
技术标签:
【中文标题】显示来自在其会话中看到 X 页的用户的交易【英文标题】:Show transactions from a user who saw X page/s in their session 【发布时间】:2018-02-22 11:09:52 【问题描述】:我正在 BigQuery 中处理 Google Analytics(分析)数据。
我想显示在会话中访问网站上特定页面的用户的交易 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
我怎么说,例如,返回用户查看AND hits.page.pagePath LIKE "%clear-out%"
的所有会话的事务ID?
【问题讨论】:
【参考方案1】:交叉加入时,您会为每次点击重复整个会话。每次点击使用此嵌套信息来查找您的页面 - 而不是交叉连接的点击。 不幸的是,你给了两个相同的名字。最好将它们分开 - 这就是它的样子:
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
(此查询使用 Google 公开可用的 GA 数据。它有点旧但很好玩。)
【讨论】:
我认为您的查询中有语法错误,AS orderId
后面的逗号不应该存在
感谢您的指出 - 我将逗号移到了它所属的下一行以上是关于显示来自在其会话中看到 X 页的用户的交易的主要内容,如果未能解决你的问题,请参考以下文章
GA BigQuery - 购买产品 x 的用户也购买了产品 abc 然后仅过滤列出完整的交易,其中 x 是交易的一部分