【问题标题】:What algorithm is used to achieve APPROX_TOP_COUNT in BigQuery?BigQuery 中使用什么算法来实现 APPROX_TOP_COUNT?
【发布时间】:2017-03-06 12:34:16
【问题描述】:

BigQuery 表示 Approximate 聚合函数在内存使用和时间方面是可扩展的,但会产生近似结果而不是精确结果。

我在钻头或蜂巢中找不到这样的功能。 通过集群计算,我们可以很容易地得到准确的结果,为什么以及什么时候应该使用这个APPROX_FUNC? 也希望有人能告诉我APPROX_TOP_COUNT中使用的是什么算法?

【问题讨论】:

    标签: google-bigquery approximation


    【解决方案1】:

    近似函数有用的一个例子是分析 Firebase 事件日志(StackOverflow 上有许多关于 BigQuery/Firebase 的问题)。例如,如果您只想知道访问次数最多的前 10 个页面,则可以使用 APPROX_TOP_COUNT 进行分析,这通常比使用 GROUP BYORDER BY ... LIMIT ...COUNT(*) 更快。

    从实现的角度来看,您可以想象,如果您只对访问次数最多的前 10 个页面感兴趣,那么可能没有必要在内存中保存不常访问页面的长尾状态,因为它只会稍后丢弃。

    您可以在以下论文中了解近似算法:

    【讨论】:

    • 谢谢你的回答,我已经使用 bigquery 测试了 bigquery 的公共数据(1,108,779,463 行)上的 APPROX_TOP_COUNT。结果是 APPROX_TOP_COUNT 和 COUNT(*) with GROUP BY 和 ORDER BY ... LIMIT 都花了 2s .你能告诉我一些关于这两个查询性能的例子吗?
    猜你喜欢
    • 2014-07-12
    • 1970-01-01
    • 2016-09-20
    • 1970-01-01
    • 2010-11-09
    • 2014-10-06
    • 2015-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多