Bei Benchmarks zwischen Impala und PrestoDB haben wir festgestellt, dass die Erstellung von Pivot-Tabellen in Imapala ziemlich schwierig ist, da es keine Cube-Operatoren wie Presto gibt. Hier sind zwei Beispiele in Presto:Cubeoperatoren auf Impala
Der CUBE-Operator generiert alle möglichen Gruppierungssätze (d. H. Einen Leistungssatz) für eine bestimmte Gruppe von Spalten. Zum Beispiel kann die Abfrage: `
SELECT origin_state, destination_state, sum(package_weight)
FROM shipping
GROUP BY CUBE (origin_state, destination_state);
entspricht:
SELECT origin_state, destination_state, sum(package_weight)
FROM shipping
GROUP BY GROUPING SETS (
(origin_state, destination_state),
(origin_state),
(destination_state),
());
Ein weiteres Beispiel ist der ROLLUP
Operator. Vollständige Dokumentation ist hier: https://prestodb.io/docs/current/sql/select.html.
Es ist nicht syntatic Zucker, weil PRESTO einen Tabellenscan für ganze Abfrage durchführt - so können Sie mithilfe dieser Operatoren Pivot-Tabelle in einer Anforderung erstellen Impala müssen 2-3 Abfragen ausführen.
Gibt es eine Möglichkeit, dies mit einer Abfrage/Tabelle-Scan in Impala Instaead von 3 zu tun? Andernfalls wird die Leistung beim Erstellen einer beliebigen Pivot-Tabelle schrecklich.
ich bin nicht sicher, Wetter dies wird Ihnen helfen oder nicht, aber Sie werden Idee über Analytic Funktionen –
Link zu erhalten: https: //www.cloudera.com/documentation/enterprise/5-6-x/topics/ impala_analytic_functions.html # over –