2017-02-16 6 views
0

Я читал, что и Apache Impala, и PrestoDB не дают 100% точных результатов при больших скоплениях (если не указано вручную в запросе). Может ли BigQuery также оценивать большие скопления, или числа точны?Увеличивает ли BigQuery точные значения по агрегациям?

Если он способен достичь точности, как это делается (и почему бы не Impala, Presto или 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

В стандартном диалоговом диалоговом окне SQL Server BigQuery все приближенные агрегированные функции присвоены соответствующим образом, каждый из них начинается с префикса APPROX_ (см. https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-and-operators#approximate-aggregate-functions). Агрегатные функции без префикса APPROX_ в стандартном SQL все точны.

P.S. Функции, работающие с плавающей точкой, такие как большинство статистических функций, могут иметь обычные потери точности с плавающей точкой.

 Смежные вопросы

  • Нет связанных вопросов^_^