此处描述了使用HLL.INIT(...)
和HLL.MERGE(...)
的精度:
https://cloud.google.com/bigquery/docs/reference/standard-sql/hll_functions
但是,我想知道是否有基数大小,在这种情况下,HLL可以保证是准确的。例如,如果我有10个不同的值,并且要在各个区域将它们“合并”在一起,那么每次的精度是100%,还是会受到HLL误差范围的影响?换句话说,HLL Precision
的每个级别是否都有保证的上限,在此上限下保证的准确性为100%?如果是这样,如何确定每个精度级别?
答案 0 :(得分:1)
如果我有10个不同的值,并且在各个区域将它们“合并”在一起,那么每次的精度是否会达到100%,还是会受到HLL误差范围的限制?
对于相同的输入,输出应相同。实际上,对于相同的输入,BigQuery可以使用缓存的结果,因此,如果一次精度为100%,则每次都可以。
HLL精度的每个级别是否都有保证的上限,在此上限下保证有100%的精度?如果是这样,如何确定每个精度级别?
不,HLL ++提供估算值。对于任何基数大小和/或精度级别,都无法保证100%的准确性。如果您要获得100%的精度,请使用COUNT(DISTINCT ...)