2017-03-06 41 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