2017-02-16 15 views
0

私はApache ImpalaとPrestoDBの両方が、大規模な集計を行う際に(クエリで手動で指定されていない限り)100%正確な結果を出さないと読んでいます。 BigQueryは大規模な集計についても見積もっていますか、それとも数字は正確ですか?BigQueryは集計に正確な値を与えますか?

これがどのように行われるか、正確を達成することが可能である場合には(そして、なぜインパラ、プレスト、またはElasticSearchがその集計上の正確な値を与えないでしょうか?)

ここでは、私は正確なおおよその対によって何を意味するかです:https://www.elastic.co/guide/en/elasticsearch/guide/current/_approximate_aggregations.html

+0

あなたが読んだことをあなたのソースに挙げてください。 Impala!= Presto!= Elastic –

+0

https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-and-operators#approximate-aggregate-functions –

答えて

2

ほとんどの場合、結果は正確です。使用する集約関数の詳細を知りたい場合は、BQ docsを参照して、関数の動作を確認してください。

統計近似関数の例として、count(distinct field)があります。正確な番号を取得したい場合は、exact_count_distinct(field)(これはドキュメントでも説明されています)を使用してください。

これは単にパフォーマンスを犠牲にして行われます。大規模なデータセットを持っている場合は、count(distinct)exact_count_distinctの両方を実行すると、応答時間にかなりの違いが見られます。

ほとんどの場合、BigQueryは非常に高速ですが、データのサイズによっては正確な操作を使用でき、秒の範囲で応答があります。

+0

偉大な答えでしょうか。 –

+0

そのCOUNT(DISTINCT) #standardSQLでは正確ですが、#legacySQLではおおよそのものでした –

2

BigQueryの標準SQLダイアレクトでは、すべての近似集計関数の名前が適切に指定されており、いずれも接頭辞(https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-and-operators#approximate-aggregate-functions参照)で始まります。 標準SQLにAPPROX_の接頭辞が付いていない集計関数はすべて正確です。

P.S.ほとんどの統計関数などの浮動小数点で動作する関数は、通常の浮動小数点に関連する精度の低下を伴う場合があります。

関連する問題