我有一个包含2157条记录的表,比方说有3列(A,B,C),我知道在A列中有2154个不同的值。
使用连接到BigQuery的Tableau Desktop(及其自己的分区),我得到了以下结果:
如果我在Big Query控制台中使用查询运行相同的计算,我得到:
这怎么可能?
顺便说一下,如果使用同一个表的CSV文件并使用Tableau Public(无桌面)将其用作数据源,我会得到与Big Query一样的正确结果。
提前致谢
答案 0 :(得分:1)
如果使用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
答案 1 :(得分:0)
尝试使用此公式的计算字段 - RAWSQLAGG_INT(“count(unique(%1))”,['your column'])
降低性能,所以只在您真正需要的时候使用。