Mehrdimensionale Hive-Analyse
Der Frühlingsregen schockiert den klaren Talhimmel im Frühling, der Sommer ist voller Grannen und die Sommerhitze ist damit verbunden; der Tau im Herbst ist kalt und Frost fällt, und im Winter gibt es Schnee und im Winter eine kleine strenge Kälte. Heute ist die letzte Sonnenperiode des Jahres 2023: starker Schneefall. Nach dem starken Schneefest sanken die Temperaturen im ganzen Land deutlich und die kalte Luft im Norden wurde aktiver. Bitte achten Sie alle darauf, sich vor der Kälte warm zu halten
Um auf den Punkt zu kommen: In diesem Artikel werden hauptsächlich die Verbesserungen in den Abfrage-Engines Hive, Spark und Presto vorgestelltGROUP BY
und die zugehörige Syntax basierend auf Hive. Außerdem wird die verbesserte mehrdimensionale Aggregation ausführlich erläutert Syntax der drei Engines durch mehrdimensionale Szenario-Fallanalyse. Die Unterschiede zwischen ihnen sowie einige häufige Probleme bei der Verwendung
1. Überblick über die mehrdimensionale Analyse
In mehrdimensionalen Analyseszenarien können wir Aggregationsfunktionen höherer Ordnung verwenden, wie zum Beispiel GROUPING SETS
, CUBE
, ROLLUP
Warten. Engines wie Hive, Spark und Presto bieten alle ähnliche Aggregationsfunktionen höherer Ordnung, um Aggregationsstatistiken für Daten unter verschiedenen Kombinationen von Dimensionen durchzuführen
Hive nennt diese Analyse offiziell GROUP BY
Klausel-erweiterte Aggregation, Cube, Gruppierung und Zusammenfassung
Was sind also erweiterte Aggregation und mehrdimensionale Analyse?
Erweiterte Aggregation bezieht sich auf die Verwendung von GROUPING SETS
, CUBE
, ROLLUP
usw. bei der Verwendung von Gruppenaggregationsabfragen in SQL. Satz zu operieren. Gängige Abfrage-Engines unterstützen diese Syntax grundsätzlich, z. B. Hive, Spark, Presto, FlinkSQL usw. Die Verwendung der erweiterten Aggregation vereinfacht nicht nur den SQL-Code, sondern verbessert auch die Leistung von SQL-Anweisungen
Unter mehrdimensionaler Analyse versteht man die Analyse einer Kombination mehrerer Dimensionen und nicht die Analyse mehrerer Dimensionen. In mehrdimensionalen Analyseszenarien können Dimensionsspalten-Clusternamen unter beliebigen Dimensionskombinationen wiederhergestellt werden, um die demokratisierte Verwendung von Filtern in Diagrammen zu unterstützen.
Die mehrdimensionale Analyse wird hauptsächlich zur mehrdimensionalen Aggregation verwendet, d. h. zum Kombinieren und Aggregieren von Ergebnissen aus mehreren Dimensionen
2. GRUPPIERUNG Legt die mehrdimensionale Gruppierung fest
Die offizielle Beschreibung von HiveGROUPING SETS
lautet wie folgt:
GROUP BY
GROUPING SETS
Die -Klausel in -Klauseln können logisch dargestellt werdenGROUP BY
-Optionen im selben Recordset anzugeben. Alle ermöglicht es uns, mehrere -Abfragen, die durch verbunden sindGROUPING SET
UNION
GROUP BY
Hive-Funktion:https://cwiki.apache.org/confluence/display/Hive/Enhanced+Aggregation%2C+Cube%2C+Grouping+and+Rollup< /span>
Einfach ausgedrückt: Geben Sie mehrere Dimensionssätze als Gruppierungsregeln fürGROUP BY
an und kombinieren Sie dann die Ergebnisse. Seine Wirkung entspricht der ersten separaten Gruppierung dieser GruppendimensionenGROUP BY
und der anschließenden Kombination der ErgebnisseUNION
Zum Beispiel lauten dieGROUPING SET
-Abfrage und die entsprechendeGROUP BY
-Abfrage wie folgt:
-- 示例1:
SELECT a, b, SUM(c) FROM tab1 GROUP BY a, b GROUPING SETS ( (a,b) )
-- 等效于
SELECT a, b, SUM(c) FROM tab1 GROUP BY a, b
-- 示例2:
SELECT a, b, SUM( c ) FROM tab1 GROUP BY a, b GROUPING SETS ( (a,b), a)
-- 等效于
SELECT a, b, SUM( c ) FROM tab1 GROUP BY a, b
UNION
SELECT a, null, SUM( c ) FROM tab1 GROUP BY a
-- 示例3:
SELECT a,b, SUM( c ) FROM tab1 GROUP BY a, b GROUPING SETS (a,b)
-- 等效于
SELECT a, null, SUM( c ) FROM tab1 GROUP BY a
UNION
SELECT null, b, SUM( c ) FROM tab1 GROUP BY b
-- 示例4:
SELECT a, b, SUM( c ) FROM tab1 GROUP BY a, b GROUPING SETS ( (a, b), a, b, ( ) )
-- 等效于
SELECT a