适用于Google BigQuery的HLL + Precision

时间:2019-05-24 18:07:01

标签: google-cloud-platform google-bigquery hyperloglog

此处描述了使用HLL.INIT(...)HLL.MERGE(...)的精度:

https://cloud.google.com/bigquery/docs/reference/standard-sql/hll_functions

但是,我想知道是否有基数大小,在这种情况下,HLL可以保证是准确的。例如,如果我有10个不同的值,并且要在各个区域将它们“合并”在一起,那么每次的精度是100%,还是会受到HLL误差范围的影响?换句话说,HLL Precision的每个级别是否都有保证的上限,在此上限下保证的准确性为100%?如果是这样,如何确定每个精度级别?

1 个答案:

答案 0 :(得分:1)

  

如果我有10个不同的值,并且在各个区域将它们“合并”在一起,那么每次的精度是否会达到100%,还是会受到HLL误差范围的限制?

对于相同的输入,输出应相同。实际上,对于相同的输入,BigQuery可以使用缓存的结果,因此,如果一次精度为100%,则每次都可以。

  

HLL精度的每个级别是否都有保证的上限,在此上限下保证有100%的精度?如果是这样,如何确定每个精度级别?

不,HLL ++提供估算值。对于任何基数大小和/或精度级别,都无法保证100%的准确性。如果您要获得100%的精度,请使用COUNT(DISTINCT ...)