count - 桌面 : Count Distinct returns higher value than Count (if connected to Google Big Query)

标签 count google-bigquery tableau-api

我有一个包含 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/

相关文章:

ruby-on-rails - PGError : ERROR: aggregates not allowed in WHERE clause on a AR query of an object and its has_many objects

带计数和大小写语句的SQL查询

tableau-api - 如何在Tableau中显示40+列?

google-bigquery - Google BigQuery 无法处理更大的结果集获取 "Response too large to return"或 "Resources exceeded during query execution"

tableau-api - 如何在 Tableau 中计算维度的不同计数?

sql-server - 如何将数据从本地 SQL Server 推送到 AWS 上的 Tableau Server

mysql - SQL SELECT 如何仅获取事件记录

php - 如何使用计数和比率对 MySQL 查询进行排序

google-bigquery - 尝试使用last_modified_time时TABLE_QUERY失败

google-analytics - bigQuery 和 GA-Premium 集成 : How to use IP filters in bigQuery (to exclude internal traffic) when exported data from unfiltered view in GA