2017-03-06 47 views
1

BigQuery表示近似集合函数可根据内存使用情况和时间进行扩展,但会生成近似结果而不是精确结果。什么算法用于在BigQuery中实现APPROX_TOP_COUNT?

我在钻取或配置单元中找不到像这样的任何函数。 通过集群计算,我们可以轻松获得确切的结果,为什么以及何时应该使用此APPROX_FUNC? 我也希望有人能告诉我在APPROX_TOP_COUNT中使用了哪种算法? THX!

回答

1

近似函数可能有用的一个示例是分析Firebase事件日志(在StackOverflow中有关于BigQuery/Firebase的许多问题)。例如,如果您只想了解访问量排名前10的最常访问的网页,则可以使用APPROX_TOP_COUNT执行分析,这通常会比COUNT(*)GROUP BYORDER BY ... LIMIT ...更快。

从实现的角度来看,你可以想象,如果你只对最常访问的前10个页面感兴趣,那么可能不需要在内存中保留状态,以避免不经常访问的页面的长尾,因为它只是稍后将被丢弃。

您可以在纸张,如阅读近似算法:

+0

THX你的答案,我已经使用的BigQuery上测试BigQuery的publicdata的APPROX_TOP_COUNT(1108779463行) 。结果是APPROX_TOP_COUNT和COUNT(*),GROUP BY和ORDER BY ... LIMIT都用了2秒。你能告诉我关于这两个查询性能的一些例子吗? – cxco