根据来自 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。我试图保持与您的示例相同的大小写。 说到大写,我在您的标准中使用了小写 somepagesomeevent,尽管您的示例数据有 somePageSomeEvent。请相应调整

以上是关于根据来自 2 个不同命中级别数据 Bigquery 的值选择 VISITID的主要内容,如果未能解决你的问题,请参考以下文章

BigQuery 在同一查询中展平 GA 会话和命中级别字段

返回根据嵌套对象过滤的 BigQuery 数据

BigQuery 会话和命中级别的理解

BigQuery 视图可以引用来自不同数据集/项目的其他表和视图吗?

满足其他列中的条件后,如何在 SQL BigQuery 中重置运行总计?

如何根据用户 ID 和 ID 访问的级别数使用 Google BigQuery 查找中位数?