BigQuery COUNT DISTINCT 估计错误

Posted

技术标签:

【中文标题】BigQuery COUNT DISTINCT 估计错误【英文标题】:BigQuery COUNT DISTINCT estimation error 【发布时间】:2016-03-08 16:58:17 【问题描述】:

我了解 BigQuery 提供了 COUNT DISTINCT 的估计值,但是否有任何信息说明错误有多大以及它取决于什么样的参数?

谢谢

【问题讨论】:

也许您可以多次将其与 count(unique()) 进行比较。如果数据太大以至于 count(unique()) 甚至不起作用,那么这种方法可能不起作用。我认为是经验性的而不是理论性的。 您也可以改用 EXACT_COUNT_DISTINCT。 cloud.google.com/bigquery/query-reference#exact_count_distinct 【参考方案1】:

COUNT DISTINCT 估计的准确性取决于 distict 值的实数。如果它很小 - 算法非常准确(对于小值,它通常返回精确值),但不同值的数量越大 - 它可能变得越不准确。请注意, COUNT(DISTINCT) 采用第二个参数,它以内存换取准确性,即它将使用更多内存,但更准确。例如:

SELECT COUNT(DISTINCT x, 100000) FROM T

如果 distict 值的总数小于 100,000,将返回相当准确的结果。

COUNT distinct 估计的准确算法各不相同,但不同的变体具有相似的误差估计 - 大约 1/SQRT(N),其中 N 是第二个参数。默认值为 1000,对应的误差约为 3%。如果碰到 10000 则误差约为 1%。

【讨论】:

估计误差实际上就是我要问的——我们想知道误差有多大,比如

以上是关于BigQuery COUNT DISTINCT 估计错误的主要内容,如果未能解决你的问题,请参考以下文章

BigQuery Google Analytics sessionWithEvent 指标

Bigquery 活跃用户计数不准确(谷歌分析)

Google Analytics 与 BigQuery 中的会话 - 差异

BigQuery 上每周/每月滚动的活跃用户数

BigQuery 新的标准 SQL 语法是不是与“计数不同”完全一致?

BigQuery SQL / GIS:扩展半径直到计数大于/等于“N”