bigquery是否给出了聚合的精确值?

nzrxty8p  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(460)

我已经读到apacheimpala和prestodb在进行大型聚合时都不能给出100%的准确结果(除非在查询中手动指定)。bigquery是否也对大型聚合进行估计,或者这些数字是否精确?
如果它能够实现精确性,那么这是如何做到的(为什么impala、presto或elasticsearch不能给出它们的聚合的精确值?)
以下是我所说的近似与精确的意思:https://www.elastic.co/guide/en/elasticsearch/guide/current/_approximate_aggregations.html.

szqfcxe2

szqfcxe21#

在bigquery的标准sql方言中,所有近似聚合函数都有适当的名称,每个函数都以 APPROX_ 前缀(参见https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-and-operators#approximate-聚合函数)。聚合函数没有 APPROX_ 标准sql中的前缀都是精确的。
p、 在浮点上操作的函数,如大多数统计函数,通常可能会有与浮点相关的精度损失。

i1icjdpr

i1icjdpr2#

在大多数情况下,是的,结果是准确的。如果您想了解更多有关要使用的聚合函数的信息,可以参考bq文档来确认函数的行为。
作为统计近似函数的一个例子,我们有 count(distinct field) . 如果你想知道确切的数字,那么你应该使用 exact_count_distinct(field) (这在文件中也有解释)。
这是通过牺牲性能来实现的。如果你有一些大的数据集,你可以运行两者 count(distinct) 以及 exact_count_distinct 作为一个例子,您将看到响应时间之间的巨大差异。
大多数情况下,尽管bigquery非常快,所以根据数据的大小,您可以使用精确的操作,并且响应仍在秒范围内。

相关问题