Google bigquery BigQuery计数(不同值)与计数(值)
我在bigquery中发现了一个小故障/bug。 我们得到了一个基于银行统计数据的表格 starschema.net:clouddb:bank.Banks\u令牌 如果我运行以下查询:Google bigquery BigQuery计数(不同值)与计数(值),google-bigquery,Google Bigquery,我在bigquery中发现了一个小故障/bug。 我们得到了一个基于银行统计数据的表格 starschema.net:clouddb:bank.Banks\u令牌 如果我运行以下查询: SELECT count(*) as totalrow, count(DISTINCT BankId ) as bankidcnt FROM bank.Banks_token; 我得到以下结果: Row totalrow bankidcnt 1 9513 9903 我的问题是,
SELECT count(*) as totalrow,
count(DISTINCT BankId ) as bankidcnt
FROM bank.Banks_token;
我得到以下结果:
Row totalrow bankidcnt
1 9513 9903
我的问题是,如果我有9513行,如何得到9903行,这比表中的行数多390行。在BigQuery中,COUNT DISTINCT是大于1000的所有结果的统计近似值 您可以提供可选的第二个参数,以给出使用近似值的阈值。因此,如果在示例中使用COUNT(DISTINCT BankId,10000),您应该会看到确切的结果(因为实际行数小于10000)。但是,请注意,使用更大的阈值可能在性能方面代价高昂 请参见此处的完整文档:
2017年更新:
使用BigQuery时,standardSQL
COUNT(DISTINCT)
总是精确的。对于近似结果,请使用APPROX\u COUNT\u DISTINCT()
。为什么会有人使用近似结果 我使用了EXACT\u COUNT\u DISTINCT()作为获取确切唯一计数的方法。它比COUNT更干净、更通用(不同的值,n>numRows)
在这里可以找到:确切的\u COUNT\u DISTINCT()似乎只是遗留SQL()的一部分。也请看一下这篇文章底部史蒂夫·加内姆的笔记:?在standart中使用count与APPROX\u count\u DISTINCT时,成本仍然更高?或者功能被优化了