如何返回满足特定条件的会话子集?
Posted
技术标签:
【中文标题】如何返回满足特定条件的会话子集?【英文标题】:How do I return a subset of sessions that meet specific conditions? 【发布时间】:2019-10-14 23:25:11 【问题描述】:我想一切都在标题中。或者以不同的方式问我的问题,如何在不取消嵌套的情况下返回满足特定条件的会话?
因此,例如返回发生购买的会话中的所有点击(嵌套)?
这可能吗?是否有意义?它可能与 STRUCK 或 ARRAY 有关,但仍然不太了解这一点。
【问题讨论】:
请给我们更多的细节。您在使用 Big Query GA 表或 Reporting API 吗?您尝试过的示例代码是什么? 【参考方案1】:如果没有特定的代码,此类问题的一般查询模式可能如下所示:
with selected_sessions as (
select distinct session_id
from dataset.sessions
left join unnest(hits) h
where h.event = 'purchase' -- insert your own logic here
)
select *
from dataset.sessions
inner join selected_sessions using(session_id)
【讨论】:
这就是我一直在寻找的答案......但这是否可以在不取消子查询中的匹配的情况下构建相同类型的查询? 并非如此。如果是重复记录(hits
通常是这样,您必须取消嵌套才能访问字段 (cloud.google.com/bigquery/docs/reference/standard-sql/…)。为什么对取消嵌套犹豫不决?
我不是。我看到一些使用 STRUCK 或 ARRAY 函数的查询,这看起来像是某种没有取消嵌套的子查询,但我猜我有点迷失了。我需要挖掘这个。谢谢。
STRUCT
和 ARRAY
实际上相反,它们用于创建(重复)记录。在会话/点击的情况下...每个hit
是STRUCT
(就像传统数据库中的行/记录)。 hits
(必须unnest
)实际上是STRUCTS
的ARRAY
,或者BQ 术语中的重复记录。 (您也可以有一个 ARRAY
的单个项目,它们不必是 STRUCT
s。)以上是关于如何返回满足特定条件的会话子集?的主要内容,如果未能解决你的问题,请参考以下文章