【发布时间】:2017-03-06 12:34:16
【问题描述】:
BigQuery 表示 Approximate 聚合函数在内存使用和时间方面是可扩展的,但会产生近似结果而不是精确结果。
我在钻头或蜂巢中找不到这样的功能。 通过集群计算,我们可以很容易地得到准确的结果,为什么以及什么时候应该使用这个APPROX_FUNC? 也希望有人能告诉我APPROX_TOP_COUNT中使用的是什么算法?
【问题讨论】:
标签: google-bigquery approximation
BigQuery 表示 Approximate 聚合函数在内存使用和时间方面是可扩展的,但会产生近似结果而不是精确结果。
我在钻头或蜂巢中找不到这样的功能。 通过集群计算,我们可以很容易地得到准确的结果,为什么以及什么时候应该使用这个APPROX_FUNC? 也希望有人能告诉我APPROX_TOP_COUNT中使用的是什么算法?
【问题讨论】:
标签: google-bigquery approximation
近似函数有用的一个例子是分析 Firebase 事件日志(StackOverflow 上有许多关于 BigQuery/Firebase 的问题)。例如,如果您只想知道访问次数最多的前 10 个页面,则可以使用 APPROX_TOP_COUNT 进行分析,这通常比使用 GROUP BY 和 ORDER BY ... LIMIT ... 的 COUNT(*) 更快。
从实现的角度来看,您可以想象,如果您只对访问次数最多的前 10 个页面感兴趣,那么可能没有必要在内存中保存不常访问页面的长尾状态,因为它只会稍后丢弃。
您可以在以下论文中了解近似算法:
【讨论】: