2016-03-08 87 views
3

我知道BigQuery提供了COUNT DISTINCT的估计,但是有没有关于错误有多大以及它依赖于哪种参数的信息?BigQuery COUNT DISTINCT估计错误

谢谢

+0

也许你可以比较它以计数(唯一())多次。如果数据太大以致count(unique())甚至不能工作,那么这种方法可能不起作用。我认为更多的是经验理论。 – andrewm4894

+0

您也可以使用EXACT_COUNT_DISTINCT。 https://cloud.google.com/bigquery/query-reference#exact_count_distinct – YABADABADOU

回答

4

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

SELECT COUNT(DISTINCT x, 100000) FROM T 

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

COUNT不同估计的精确算法会有所不同,但不同的变化会有类似的误差估计 - 约1/SQRT(N),其中N是第二个参数。默认值是1000,相当于大约3%的错误。如果碰到10000,则会有大约1%的错误。

+0

估计错误实际上就是我所要求的 - 我们想要了解错误会有多大,比如<= 1%? – Fardream

+0

我更新了答案以给出估计 –