我有一个包含 2157 条记录的表,假设有 3 列(A、B、C),我知道在 A 列中有 2154 个不同的值。
使用连接到 BigQuery 的 Tableau Desktop(及其自身的功能),我得到了这些结果:
- 计数(A) --> 2157
- CountD(A) --> 2180(超过 Count!!!)
如果我在 Big Query 控制台中使用查询运行相同的计算,我得到:
- 计数 --> 2157
- CountD --> 2154(右)
这怎么可能?
顺便说一句,如果使用同一个表的 CSV 文件,并且我使用 Tableau Public(无桌面)将其用作数据源,我会得到与 Big Query 中一样的正确结果。
提前致谢
最佳答案
如果您使用 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
关于count - 桌面 : Count Distinct returns higher value than Count (if connected to Google Big Query),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32989276/