在 BigQuery 中获取不同时间范围内的唯一类别

Posted

技术标签:

【中文标题】在 BigQuery 中获取不同时间范围内的唯一类别【英文标题】:Getting unique categories over time range in BigQuery 【发布时间】:2016-06-30 08:26:58 【问题描述】:

我们使用“hits.product.v2ProductCategory”按“date”和“fullVisitorId”分组来获取每个 date*fullVisitorId 组合访问的类别。 这包括重复的类别。

我们的目标是在时间范围内获得一个聚合变量(按“fullVisitorId”分组,这意味着每个只有一行),以及唯一类别的数量(如果可能,一步完成)。

Felipe Hoffa 创建与类别一样多的变量的解决方案 (BigQuery: SPLIT() returns only one value) 不可行,因为 它们的数量和动态性很高。

how to do nested SQL select count 中的另一个选项强制我们按除“fullVisitorId”之外的“hits.product.v2ProductCategory”进行分组 和子查询中的“日期”,为每个日期*fullVisitorId 提供一个包含与类别一样多的行的中间表。

我们已经尝试使用 GROUP_CONCAT(UNIQUE) 来获取字符串中的所有唯一类别,然后使用 LENGTH(REGEXP_REPLACE) 来获取除分隔符之外的元素数。

还有其他更有效的方法吗?

提前致谢, 卢尔德·埃尔南德斯

【问题讨论】:

【参考方案1】:

我了解您正在尝试解决在 BigQuery Legacy SQL 中 COUNT(DISTINCT) 返回近似计数(统计近似值)并且不能保证准确的事实

要在 BigQuery 旧版 SQL 中计算完全不同的值,您可以使用 EXACT_COUNT_DISTINCT

另请注意,在 BigQuery 标准 SQL COUNT(DISTINCT) 中返回精确计数

【讨论】:

感谢您的回复,米哈伊尔。问题不完全是近似值,而是如何处理此变量以通过几个步骤优化过程并避免按“fullVisitorId”之外的其他变量进行分组。问候,卢尔德

以上是关于在 BigQuery 中获取不同时间范围内的唯一类别的主要内容,如果未能解决你的问题,请参考以下文章

如何从 BigQuery 获取基于时间的结果?

BigQuery - 计算滑动时间范围内的事件数

通过数据范围抛出错误在 Bigquery 中查询多个 Google Analytics Raw 表

INNER JOIN 基于彼此范围内的公共时间戳的两个 BigQuery 表?

在 BigQuery 中获取所有时间唯一值

整个类范围内的 C++ 命名空间别名