根据来自 2 个不同命中级别数据 Bigquery 的值选择 VISITID
Posted
技术标签:
【中文标题】根据来自 2 个不同命中级别数据 Bigquery 的值选择 VISITID【英文标题】:Select VISITID based on values from 2 different hit level data Bigquery 【发布时间】:2019-11-19 22:23:34 【问题描述】:我的表中有一个 FULLVISITORID,有 2 个不同的访问 ID。
每个visitid 都有多个命中。我想选择一个 hits.page.pagepath = 'somepage' 的 visitid 和另一个 hits.eventInfo.eventCategory = 'some event'。对于同一个访问 ID,这两种情况都应该发生。
例如:
从my_table
中选择 *,其中 FullVisitorid = '1'
FullVisitorid Visitid ........... hits.page.pagepath .....hits.event.eventCategory
1 123 A abc
B cde
c efg
1 147 somePage ggg
D fff
E SomeEvent
我希望结果是 VistiID = 147,因为 visitid 同时具有 pagepath = 'somepage' 和 eventcategory = 'someevent'
感谢您的帮助!
【问题讨论】:
【参考方案1】:使用 CTE,您可以使用简单的连接逻辑来获得结果。
with unnested as (
-- Get the fields you care about
select FullVisitorid, Visitid, h.page.pagepath, h.event.eventCategory
from `dataset.table`
left join unnest(hits) h
),
somepage as (
-- Get somepage hit Visitids
select FullVisitorid, Visitid
from unnested
where pagepath = 'somepage'
group by 1,2
),
someevent as (
-- Get someevent hit Visitids
select FulVisitorid, Visitid
from unnested
where eventCategory = 'someevent'
group by 1,2
),
joined as (
-- Join the CTEs to get common Visitids
select FulVisitorid, Visitid
from somepage
inner join someevent using(FullVisitorid, Visitid)
)
select * from joined
【讨论】:
感谢您的帮助!但我收到一些页面的错误“无法识别的名称:页面路径”。 尝试小写pagepath
。我试图保持与您的示例相同的大小写。
说到大写,我在您的标准中使用了小写 somepage
和 someevent
,尽管您的示例数据有 somePage
和 SomeEvent
。请相应调整以上是关于根据来自 2 个不同命中级别数据 Bigquery 的值选择 VISITID的主要内容,如果未能解决你的问题,请参考以下文章
BigQuery 在同一查询中展平 GA 会话和命中级别字段
BigQuery 视图可以引用来自不同数据集/项目的其他表和视图吗?