如何返回满足特定条件的会话子集?

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 函数的查询,这看起来像是某种没有取消嵌套的子查询,但我猜我有点迷失了。我需要挖掘这个。谢谢。 STRUCTARRAY 实际上相反,它们用于创建(重复)记录。在会话/点击的情况下...每个hitSTRUCT(就像传统数据库中的行/记录)。 hits(必须unnest)实际上是STRUCTSARRAY,或者BQ 术语中的重复记录。 (您也可以有一个 ARRAY 的单个项目,它们不必是 STRUCTs。)

以上是关于如何返回满足特定条件的会话子集?的主要内容,如果未能解决你的问题,请参考以下文章

找到满足特定条件的子集

显示来自在其会话中看到X页面的用户的交易

如何在sql中插入记录时返回id(id为自动增长)

如何查找特定用户的 django 会话?

如何返回满足特定条件的行列表以及它之前的行?

跨两个应用服务器管理会话