gpt4 book ai didi

sql - BigQuery 计数不同的 ColX 不等于 ColX 的组计数

转载 作者:行者123 更新时间:2023-12-04 20:31:58 25 4
gpt4 key购买 nike

我的印象是,如果您要在某些列上执行 COUNT(DISTINCT xyz),它将等于 GROUP BY 的常规计数> 那一栏。

但是,当我在 BigQuery 中对一个非常大的数据集执行此操作时,在完全相同的条件下,它显示出很大的结果差异:

Query Type             Count
----------------------------------
- count(distinct ColX) > 7 million
- count(ColX)
... GROUP BY ColX ~ 6.5 million

这是为什么?我认为这两种不同版本的计算列中的唯一值应该返回相同的计数结果是错误的吗?

最佳答案

关于遗留 SQL。

如果您使用 DISTINCT 关键字,该函数将返回指定字段的不同值的数量。 请注意,DISTINCT 的返回值是统计近似值,不保证准确 - 文档对此也有明确说明。

如果您需要 COUNT(DISTINCT) 的更高准确性,您可以指定第二个参数 n,它给出了一个阈值,低于该阈值可以保证精确的结果。默认情况下,n 为 1000,但如果您提供更大的 n,您将获得 COUNT(DISTINCT) 的精确结果,直至该 n 值。但是,给定较大的 n 值会降低此运算符的可扩展性,并可能显着增加查询执行时间或导致查询失败。

要计算不同值的确切数量,请使用 EXACT_COUNT_DISTINCT。或者,对于更具可扩展性的方法,请考虑在相关字段上使用 GROUP BY,然后应用 COUNT(*)。 GROUP BY 方法更具可扩展性,但可能会导致轻微的前期性能损失。

https://cloud.google.com/bigquery/query-reference#aggfunctions

关于sql - BigQuery 计数不同的 ColX 不等于 ColX 的组计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32431490/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com