【问题标题】:Getting unique categories over time range in BigQuery在 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) 来获取除分隔符之外的元素数。

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

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

【问题讨论】:

    标签: sql google-bigquery


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您的回复,米哈伊尔。问题不完全是近似值,而是如何处理此变量以通过几个步骤优化过程并避免按“fullVisitorId”之外的其他变量进行分组。问候,卢尔德
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多