BigQuery COUNT(DISTINCT值)vs COUNT(值)

Bal*_*ics 20 google-bigquery

我在bigquery中发现了一个小故障/错误.我们根据starschema.net:clouddb:bank.Banks_token下的银行统计数据得到了一张表

如果我运行以下查询:

SELECT count(*) as totalrow,
count(DISTINCT BankId ) as bankidcnt
FROM bank.Banks_token;
Run Code Online (Sandbox Code Playgroud)

我得到以下结果:

Row totalrow    bankidcnt    
1   9513    9903    
Run Code Online (Sandbox Code Playgroud)

我的问题是如果我有9513row我怎么能得到9903row,这比表中的rowcount多390个.

Jer*_*dit 33

在BigQuery中,COUNT DISTINCT是所有大于1000的结果的统计近似值.

您可以提供可选的第二个参数来给出使用近似值的阈值.因此,如果在示例中使用COUNT(DISTINCT BankId,10000),则应该看到确切的结果(因为实际的行数小于10000).但请注意,使用较大的阈值在性能方面可能成本较高.

请参阅此处的完整文档:https: //developers.google.com/bigquery/docs/query-reference#aggfunctions


2017年更新:

使用BigQuery #standardSQL COUNT(DISTINCT)总是精确的.对于近似结果使用APPROX_COUNT_DISTINCT().为什么有人会使用大约结果?看到这篇文章.


smn*_*ntx 28

我使用EXACT_COUNT_DISTINCT()作为获取确切唯一计数的方法.它比COUNT更清晰,更通用(DISTINCT值,n> numRows)

在此处找到:https://cloud.google.com/bigquery/query-reference#aggfunctions