如何为 BigQuery 中的 GA 数据创建基于页面和事件的转化渠道
Posted
技术标签:
【中文标题】如何为 BigQuery 中的 GA 数据创建基于页面和事件的转化渠道【英文标题】:How to create a conversion funnel based on pages and events for GA data in BigQuery 【发布时间】:2021-09-06 09:11:04 【问题描述】:我在 BigQuery 中有以下数据:
date fullVisitorId sessionId hitNumber type url eventCategory eventAction eventLabel
20210101 973454546035798949 973454546035798949162783837520210101 1 PAGE homepage.com Null Null Null
20210101 973454546035798949 973454546035798949162783837520210101 2 EVENT homepage.com/purchase View Book Harry_Potter
20210101 973454546035798949 973454546035798949162783837520210101 3 EVENT homepage.com/purchase Purchase Book Harry_Potter
...
我想创建一个基于 URL 和事件的转化漏斗,不一定是顺序的。例如,我想计算不同用户数 (fullVisitorId
) 和不同会话数 (sessionId
),其中:
-
用户访问了主页 (
homepage.com
)。
然后触发了具有类别View
、操作Book
和标签Harry_Potter
的事件,
然后触发了具有类别Purchase
、操作Book
和标签Harry_Potter
的事件。
同样,命中不一定是连续的,这意味着对于这 3 个步骤,命中数可能分别为 1、4 和 8。此外,实际所需的步骤数超过 10 个。
理想情况下,最终结果应如下所示:
Type Date Step 1 Step 2 Step 3 Step 4
Users 01/01/2021 120 110 90 ...
Users 02/01/2021 130 80 70 ...
Sessions 01/01/2021 200 120 100 ...
Sessions 02/01/2021 220 80 70 ...
其中Step 1
、Step 2
和Step 3
表示完成特定步骤的用户数和会话数。
有什么想法吗?谢谢!
【问题讨论】:
【参考方案1】:您必须在 SQL 代码下方执行类似的操作。对于每个条件,你都可以有一个 CTE,然后加入。
WITH STEP1 AS
(
SELECT fullVisitorId, Date, SUM(hitNumber) AS STEP1
FROM `data-to-insights.ecommerce.all_sessions_raw`
WHERE STARTS_WITH(url, "homepage.com") AND fullVisitorId IS NOT NULL
GROUP BY fullVisitorId, Date
),
STEP2 AS
(
SELECT fullVisitorId, Date, SUM(hitNumber) AS STEP2
FROM `data-to-insights.ecommerce.all_sessions_raw`
WHERE eventCategory = 'View' AND eventAction = 'Book' AND eventLabel = 'Harry_Potter' AND fullVisitorId IS NOT NULL
GROUP BY fullVisitorId, Date
),
STEP3 AS
(
SELECT fullVisitorId, Date, SUM(hitNumber) AS STEP3
FROM `data-to-insights.ecommerce.all_sessions_raw`
WHERE eventCategory = 'Purchase' AND eventAction = 'Book' AND eventLabel = 'Harry_Potter' AND fullVisitorId IS NOT NULL
GROUP BY fullVisitorId, Date
),
JOINED_DATA AS
(
SELECT 'Users' AS Type,
coalesce(SUB_QUERY.Date,STEP3.Date),
STEP1.STEP1,
STEP2.STEP2,
STEP3.STEP3
FROM STEP3 FULL OUTER JOIN
(
SELECT coalesce(STEP1.fullVisitorId,STEP2.fullVisitorId) AS fullVisitorId,
coalesce(STEP1.Date,STEP2.Date) AS Date
FROM STEP1 FULL OUTER JOIN STEP2
ON STEP1.DATE = STEP2.DATE AND STEP1.fullVisitorId = STEP2.fullVisitorId
) AS SUB_QUERY
ON STEP3.fullVisitorId = SUB_QUERY.fullVisitorId AND STEP3.Date = SUB_QUERY.Date
)
SELECT * FROM JOINED_DATA
【讨论】:
请在您的回答中提供更多详细信息。正如目前所写的那样,很难理解您的解决方案。 是的,请提供更多详细信息。例如,将命中数相加的原因是什么? 詹姆斯,我对缺乏数据感到困惑。我们仍然可以使用相同的代码并使用 MAX 而不是 SUM。它应该解决目的。 在 JOINED DATA 中您选择了 STEP1.STEP1 和 STEP2.STEP2,但在 FROM 子句中没有 STEP1 或 STEP2。以上是关于如何为 BigQuery 中的 GA 数据创建基于页面和事件的转化渠道的主要内容,如果未能解决你的问题,请参考以下文章