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 指标
Google Analytics 与 BigQuery 中的会话 - 差异