При выполнении контрольных показателей между Impala и PrestoDB мы заметили, что в Имапале довольно сложно построить сводные таблицы, потому что у нее нет операторов Cube, как это делает Presto. Вот два примера в Presto:Операторы куба на Impala
Оператор CUBE генерирует все возможные комплекты группировки (т. Е. Набор мощности) для заданного набора столбцов. Например, запрос: `
SELECT origin_state, destination_state, sum(package_weight)
FROM shipping
GROUP BY CUBE (origin_state, destination_state);
эквивалентно:
SELECT origin_state, destination_state, sum(package_weight)
FROM shipping
GROUP BY GROUPING SETS (
(origin_state, destination_state),
(origin_state),
(destination_state),
());
Другим примером является ROLLUP
оператором. Полная документация находится здесь: https://prestodb.io/docs/current/sql/select.html.
Это не синтаксический сахар, потому что PRESTO выполняет одно сканирование таблицы для всего запроса - поэтому, используя эти операторы, вы можете создавать сводную таблицу в одном запросе. Импала должна запускать 2-3 запроса.
Есть ли способ, которым мы можем сделать это с помощью одного запроса/таблицы-сканирования в Impala instaead 3? В противном случае производительность становится ужасной при создании любого типа сводной таблицы.
я не уверен, что погода это поможет вам или нет, но вы получите представление об аналитических функциях –
ссылка: https: //www.cloudera.com/documentation/enterprise/5-6-x/topics/ impala_analytic_functions.html # над –