BigQuery 中带有会话 ID 的 Google Analytics(分析)交易 ID
Posted
技术标签:
【中文标题】BigQuery 中带有会话 ID 的 Google Analytics(分析)交易 ID【英文标题】:Google Analytics Transactions Ids with Session Ids in BigQuery 【发布时间】:2018-06-20 14:40:44 【问题描述】:我正在使用 BigQuery 中的 Google Analytics(分析)数据,并尝试将会话 ID 与交易 ID 结合起来。我遇到了一些困难,因为我还不明白如何将会话 ID(与我在 WHERE 子句中使用的totals.visits = 1
的 GA UI 匹配)与事务 ID(UNNEST(hits)
)结合起来。条件:数据应与GA UI匹配。
期望的结果
日期 |会话 ID |交易 ID 2019-06-18 00:00:00.000 UTC | 400101010101 |啊啊啊 2019-06-18 00:00:00.000 UTC | 400202010102 | BBBBBBB 2019-06-18 00:00:00.000 UTC | 400303010103 |中国交建
用于检索时间戳和 SessionIds 的当前查询
#standardSQL
SELECT
TIMESTAMP(PARSE_DATE('%Y%m%d', date)) AS Date,
CONCAT(fullVisitorId, CAST(visitId AS STRING) ) AS SessionID
COUNT(DISTINCT CONCAT(fullVisitorId, CAST(visitId AS STRING) )) AS Sessions, /* verify match with GA UI*/
FROM
`ga-xxxxx.yyyyyyyy_sessions_20*`
WHERE
_TABLE_SUFFIX = '180618'
AND totals.visits = 1
GROUP BY
1,2
使用 TransactionID 进行的当前查询
当使用 hits.transaction.transactionId
和 UNNEST(hits)
扩展查询时,我得到的记录比在 GA UI 中更多。似乎查询正在计算 SessionID 和 TransactionID。
#standardSQL
SELECT
TIMESTAMP(PARSE_DATE('%Y%m%d', date)) AS Date,
CONCAT(fullVisitorId, CAST(visitId AS STRING) ) AS SessionID,
hits.transaction.transactionId AS transactionId,
COUNT(DISTINCT CONCAT(fullVisitorId, CAST(visitId AS STRING) )) AS Sessions, /* verify match with GA UI*/
FROM
`ga-xxxxx.yyyyyyyy_sessions_20*`,
UNNEST(hits) AS hits
WHERE
_TABLE_SUFFIX = '180618'
AND totals.visits = 1
GROUP BY
1,2,3
在数据与 GA UI 匹配的条件下,如何将 SessionID
和 hits.transaction.transactionId
放入查询中?
希望有人能帮帮我。
谢谢。
【问题讨论】:
【参考方案1】:要将 GA 用户界面中的会话数与 BigQuery 匹配,您可以像这样计算会话数:
CONCAT(CAST(fullVisitorId AS STRING),CAST(visitId AS STRING)) AS sessions
然后,如果您想查看会话 ID 和事务 ID,您可以执行以下操作:
SELECT Date,
CONCAT(CAST(fullVisitorId AS STRING),CAST(visitId AS STRING)) AS visit_ref,
hits.transaction.transactionID AS transaction_id
FROM `xxx.xxx.ga_sessions_20180619`
CROSS JOIN UNNEST(hits) AS hits
WHERE hits.transaction.transactionID IS NOT NULL
GROUP BY Date, visit_ref, transaction_id
请注意,我已经删除了所有未在上面进行交易的会话,但如果您希望它们存在,可以删除此 WHERE
子句。
如果您使用此方法获得更多行,那么请考虑您可能有用户下多个订单的会话,您可以通过使用STRING_AGG
在会话 ID 旁边列出所有事务 ID 来对此有所了解,在下面的示例中,我还计算了它们并按此计数排序:
SELECT Date,
CONCAT(CAST(fullVisitorId AS STRING),CAST(visitId AS STRING)) AS visit_ref,
STRING_AGG(hits.transaction.transactionID) AS transaction_id,
COUNT(DISTINCT hits.transaction.transactionId) AS orders
FROM `xxx.xxx.ga_sessions_20180619`
CROSS JOIN UNNEST(hits) AS hits
WHERE hits.transaction.transactionID IS NOT NULL
GROUP BY Date, visit_ref
ORDER BY orders DESC
【讨论】:
以上是关于BigQuery 中带有会话 ID 的 Google Analytics(分析)交易 ID的主要内容,如果未能解决你的问题,请参考以下文章
Spring Web 应用程序中带有 Ajax 轮询的会话超时
在 Google 跟踪代码管理器中使用 GA Bigquery 导出架构变量