在 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 中查询多个 Google Analytics Raw 表