显示来自在其会话中看到 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 页的用户的交易的主要内容,如果未能解决你的问题,请参考以下文章

向客户视图显示交易 ID

在 Paypal IPN 交易期间存储会话变量的机制

BigQuery 超算交易

通过 API 获取 Android 订阅的用户历史交易记录

GA BigQuery - 购买产品 x 的用户也购买了产品 abc 然后仅过滤列出完整的交易,其中 x 是交易的一部分

BigQuery 中带有会话 ID 的 Google Analytics(分析)交易 ID