在BigQuery

时间:2016-06-30 08:26:58

标签: sql google-bigquery

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

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

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

how to do nested SQL select count中的另一个选项,迫使我们除了'fullVisitorId'以'hits.product.v2ProductCategory'分组 和子查询中的'date',给出一个中间表,其行数与每个日期* fullVisitorId的类别一样多。

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

还有另一种更有效的方法吗?

提前致谢,
LourdesHernández

1 个答案:

答案 0 :(得分:0)

我知道你正试图解决这样一个事实:在BigQuery Legacy SQL中COUNT(DISTINCT)返回近似计数(统计近似值)并且不保证是准确的

要计算BigQuery Legacy SQL中的确切不同值,您可以使用EXACT_COUNT_DISTINCT

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