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



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

我们的目标是获得一个随时间范围的聚合变量(通过'fullVisitorId'分组,这意味着每个只有一行),具有唯一类别的数量(在一个步骤中,如果可能的话)。

Felipe Hoffa创建尽可能多的变量作为类别(BigQuery: SPLIT()只返回一个值)的解决方案是不可用的,因为数量多,动态性强。

如何嵌套SQL选择计数的另一个选项,强制我们按'hits.product '分组。v2ProductCategory'除了'fullVisitorId'和'date'在子查询中,给出一个中间表,每个日期*fullVisitorId的类别有尽可能多的行。

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

有没有其他更有效的方法?

提前感谢,
Lourdes Hernández

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

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

还需要注意的是,在BigQuery标准SQL中COUNT(DISTINCT)返回精确的计数

最新更新