2012-05-09 73 views
1

我們有一個問題來提高BigQuery的準確性,我們的使用情況如下,我們使用的是一張1,600萬條記錄,一張表對於我們的問題不是很大,我們正在嘗試找到唯一的用戶。Bigquery提高準確性問題

首先我們認爲要使用「count distinct」,但由於文檔告訴大量的數據,您可以獲得估計結果。爲了改善這一點,我們嘗試用「count + group by」代替「count distinct」語句。但是bigquery的結果是響應太大。我們首先按用戶ID進行分組,並且我們繼續這個想法,但是減少了數據的數量,選擇了特定的方案,大大減少了數據量。但結果是一樣的,反應太大。

有關如何獲取唯一用戶的任何想法或意見,使用bigQuery中的accuray?

回答

3

COUNT(DISTINCT field)返回一個近似的答案,就像你意識到的那樣。您可以通過將COUNT(DISTINCT field, n)用於N的大數值來提高精度。該值越大,結果的精確度越高,但如果設置得太高,可能會導致「結果太大」的錯誤。

您可以使用GROUP EACH BY得到確切的唯一計數。這可能會導致難以計算同一個查詢中的其他值,但GROUP EACH BY將可用於任何大小的表。例如:

select count(*) from (select field from dataset.table GROUP EACH BY field) 
+0

這是一個恥辱,不提高結果的準確性,也沒有確切的錯誤率函數。無論如何感謝您的幫助。 – Artemis

+1

Artemis - 自2012年最初回答以來,答案已經發生了變化。您現在可以獲得任意大的獨特結果。 –