Heim >Datenbank >MySQL-Tutorial >OLAP: CUBE-, ROLLUP- UND GRUPPENSÄTZE
Im Bereich der Datenanalyse und Business Intelligence gilt OLAP (Online Analytical Processing) als Eckpfeilertechnologie, die die mehrdimensionale Analyse großer Datensätze ermöglicht. Mit OLAP können Benutzer Erkenntnisse aus Daten gewinnen, indem sie diese in mehreren Dimensionen analysieren und so einen umfassenden Überblick über Geschäftskennzahlen und -leistung erhalten.
Jetzt werden wir die drei Hauptfunktionen von OLAP besprechen, nämlich die Operatoren CUBE, ROLLUP und GROUPING SETS. Dies wird eine entscheidende Rolle bei der Zusammenfassung und Aggregierung von Daten auf verschiedene Weise spielen.
Besprechen wir zunächst das erste:
Der Würfel ist ein leistungsstarkes Werkzeug in OLAP, er kann alle möglichen Kombinationen von Dimensionen und deren Aggregat generieren. Es bietet eine umfassende mehrdimensionale Ansicht der Daten durch die Berechnung von Zwischensummen und Gesamtsummen für jede Kombination von Dimensionen und ermöglicht es Benutzern, Daten aus verschiedenen Perspektiven und Granularitätsebenen zu untersuchen.
Okay, es ist zunächst etwas technisch, aber Sie werden es sicherlich verstehen, wenn wir es in Abfragen verwenden.
Angenommen, wir möchten wissen, wie viele Personen in einem Land zur Miete wohnen und welches Geschlecht sie haben.
SELECT country, gender, COUNT(*) FROM rentals GROUP BY CUBE(country, gender) -- This one will group them by its country and gender.
Das Ergebnis wird also dieses sein
| country | gender | COUNT(*) | |------------|----------|----------| | USA | Male | 100 | | USA | Female | 150 | | UK | Male | 120 | | UK | Female | 130 | | NULL | Male | 220 | <-- Subtotal for Male across all countries | NULL | Female | 280 | <-- Subtotal for Female across all countries | USA | NULL | 250 | <-- Subtotal for USA across all genders | UK | NULL | 250 | <-- Subtotal for UK across all genders | NULL | NULL | 500 | <-- Grand total
Sehen Sie sich an, dass jede Zeile eine einzigartige Kombination aus „Land“ und „Geschlecht“ darstellt. Das ist die Verwendung von CUBE. Es generiert alle möglichen Kombinationen basierend auf dem, was Sie aggregieren. Wir haben für jede Kategorie eine Zwischensumme und die Gesamtsumme.
Der ROLLUP-Operator wird zum Generieren hierarchischer Rollup-Daten verwendet. Es berechnet Zwischensummen für eine vordefinierte Hierarchie von Dimensionen und bewegt sich dabei typischerweise von der detailliertesten zur am wenigsten detaillierten Granularitätsebene. Es generiert Zwischensummen für jede Ebene der Hierarchie und erzeugt einen Ergebnissatz, der Zwischensummen für jede Kombination der angegebenen Spalten sowie Gesamtsummen enthält. Es geht darum, mehr zu organisieren, als noch einmal ein Beispiel zu geben.
SELECT country, gender, COUNT(*) AS rental_count FROM rentals GROUP BY ROLLUP (country, gender);
Dann wird die Ausgabe so aussehen
| country | gender | rental_count | |----------|---------|--------------| | NULL | NULL | 8 | <-- Grand total | NULL | Male | 3 | <-- Subtotal for Male across all countries | NULL | Female | 5 | <-- Subtotal for Female across all countries | USA | NULL | 3 | <-- Subtotal for USA across all genders | USA | Male | 2 | | USA | Female | 1 | | UK | NULL | 3 | <-- Subtotal for UK across all genders | UK | Male | 1 | | UK | Female | 2 |
Sie sehen, dass nach der Zählung jeder Kategorie die Zwischensumme gedruckt wird und als nächstes die Gesamtsumme angezeigt wird. Möglicherweise stellen Sie fest, dass die Zwischensummen für jede Kategorie häufig neben den entsprechenden Kategoriezeilen angezeigt werden. Dies liegt daran, dass der ROLLUP-Operator so konzipiert ist, dass er eine intuitive und lesbare Ausgabe liefert und Zwischensummen in der Nähe der Daten platziert, die sie zusammenfassen.
Wir verwenden den Operator GROUPING SETS, um die Gruppierungen nach den Argumenten zu gruppieren, die wir in die entsprechende Gruppierung einfügen. Der Unterschied besteht jedoch darin, dass wir beliebig viele Gruppen darin einfügen können, beispielsweise
GROUP BY GROUPING SET ((Land, Geschlecht), (Land), (Geschlecht)) Wir können die Daten im ersten Argument nach einer Kombination aus Land und Geschlecht gruppieren und im zweiten Argument möchten wir sie auch nur nach Land usw. gruppieren das dritte Argument.
Es ist, als würden wir drei Gruppen in einer Abfrage kombinieren: Die erste ist (Land, Geschlecht), die zweite ist (Land) und die dritte ist (Geschlecht). Wenn Sie also das gleiche Ergebnis erzielen möchten, ohne die Gruppierungssätze zu verwenden, benötigen Sie dafür 3 Abfragen.
Lassen Sie uns mit dem Beispiel dieser Gruppierungssätze fortfahren, damit wir es verstehen können.
SELECT country, gender, COUNT(*) AS rental_count FROM rentals GROUP BY GROUPING SETS (country, gender, ());
Dann wäre die Ausgabe
| country | gender | rental_count | |----------|---------|--------------| | NULL | NULL | 8 | <-- Grand total | NULL | Male | 3 | <-- Subtotal for Male across all countries | NULL | Female | 5 | <-- Subtotal for Female across all countries | USA | NULL | 3 | <-- Subtotal for USA across all genders | USA | Male | 2 | | USA | Female | 1 | | UK | NULL | 3 | <-- Subtotal for UK across all genders | UK | Male | 1 | | UK | Female | 2 |
Die Erklärung hier ist also, dass jede eindeutige Kombination aus Land und Geschlecht in der Tabelle angezeigt wird. Dann fragen Sie sich, warum es () gibt. Dann ist das eine leere Klammer, was bedeutet, dass die gesamte Anzahl in der Tabelle summiert wird Ausgabe, aber wenn wir das entfernen, wird nur die Zwischensumme jeder Kategorie angezeigt.
Sie fragen sich, warum die WÜRFEL- und GRUPPENSÄTZE eine Ähnlichkeit haben, dann haben Sie Recht, aber der Würfel erhält alle möglichen Kombinationen, aber die Gruppierungssätze bedeuten, dass wir so viele in einer Abfrage gruppieren können, wie wir möchten.
Ich weiß, Leute, das ist eine Menge zu lernen, aber wenn Sie dies im Laufe der Zeit in Ihrer Abfrage verwenden, werden Sie alles verstehen. Vielen Dank :)
Das obige ist der detaillierte Inhalt vonOLAP: CUBE-, ROLLUP- UND GRUPPENSÄTZE. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!