【问题标题】:BigQuery: GA pageviews and events split by custom dimensions, content groups, and event category/action?BigQuery:按自定义维度、内容组和事件类别/操作划分的 GA 网页浏览和事件?
【发布时间】:2020-06-21 14:54:09
【问题描述】:

我正在尝试创建包含以下字段的视图:日期、自定义维度 X 的值、自定义维度 Y 的值、访问者 ID、综合浏览量、内容组 A 的值、内容组 B 的值、事件类别,事件操作

我知道这是很多领域,我很难真的想出一个解决方案。

现在,我创建了一个视图,其中包含日期、自定义维度 X 的值、自定义维度 Y 的值、访问者 ID、浏览量

然后我创建了第二个视图,其中包含日期、访客 ID、内容组 A 的值、内容组 B 的值、事件类别、事件操作

我在 日期访客 ID 加入了这两个。

-- 下面的代码--

CREATE VIEW `TEST_1`
AS

SELECT
date AS Date,
(SELECT value FROM UNNEST(customDimensions) WHERE index=2) AS Institution_ID,
(SELECT value FROM UNNEST(customDimensions) WHERE index=3) AS Institution_Name,
fullVisitorId AS Visitor_ID,
SUM(totals.pageviews) AS Pageviews
FROM
`ga_sessions_*`
GROUP BY
date,
Visitor_ID,
Institution_ID,
Institution_Name

CREATE VIEW `TEST_2`
AS

select 
DATE as DATE,
fullVisitorId AS Visitor_ID,
hits.contentGroup.contentGroup3 as Topic_Name,
hits.contentGroup.contentGroup5 as Topic_ID,
hits.eventInfo.eventCategory as Event_Category,
hits.eventInfo.eventAction as Event_Action
FROM
`ga_sessions_*`
, UNNEST (HITS) AS HITS


CREATE VIEW `TEST_3` AS
SELECT A.DATE, 
A.VISITOR_ID, 
Institution_ID, 
Institution_Name,  
Pageviews, 
Topic_Name, 
Topic_ID, 
Event_Category, 
Event_Action  
FROM `TEST_1` A 
JOIN `TEST_2` B ON A.DATE=B.DATE AND A.VISITOR_ID=B.VISITOR_ID

查询运行没有错误,但综合浏览量完全错误,远高于 GA 中报告的数量。我怀疑我在这里复制行的效率很低。

有人可以帮助我了解我做错了什么吗?非常感谢!

【问题讨论】:

  • 请提供样本数据、期望的结果以及您想要实现的逻辑的解释。非工作查询没有此信息。

标签: sql join google-analytics google-bigquery unnest


【解决方案1】:

article explains 是导入 BigQuery 的 Google Analytics 数据的格式和架构,here 是图形表示。

BigQuery cookbook 包含有关如何构建您导出到 BigQuery 的 Analytics 数据查询的示例。

请查看this,以便更深入地了解 UNNEST() 函数,该函数在“一对多关系”中用作“交叉连接”。

请记住,我不知道您的数据。话虽如此,在您的情况下,当您创建视图 3(视图 1 和视图 2 之间的连接)时,CROSS JOIN 可能发生在“多对多关系”中。 也许您应该尝试以下方法:

SELECT
date AS Date,
(SELECT value FROM UNNEST(hits.customDimensions) WHERE index=2) AS Institution_ID,
(SELECT value FROM UNNEST(hits.customDimensions) WHERE index=3) AS Institution_Name,
fullVisitorId AS Visitor_ID,
SUM(totals.pageviews) AS Pageviews,  
hits.contentGroup.contentGroup3 as Topic_Name,
hits.contentGroup.contentGroup5 as Topic_ID,
hits.eventInfo.eventCategory as Event_Category,
hits.eventInfo.eventAction as Event_Action
FROM
`bigquery-public-data.google_analytics_sample.ga_sessions_*`,
UNNEST (hits) AS hits
GROUP BY
date,
Visitor_ID,
Institution_ID,
Institution_Name,
hits.contentGroup.contentGroup3,
hits.contentGroup.contentGroup5,
hits.eventInfo.eventCategory,
hits.eventInfo.eventActio

【讨论】:

  • 我在 SELECT 子句中使用COUNT(*) as Total_Events 修改了此查询,以查看每种类型的事件类别发生了多少事件。令人困惑的是,即使 Event_Category 的某些行有空值,Total_Events 中有一个值大于 0。你知道这怎么可能吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多