Heim  >  Artikel  >  Datenbank  >  OLAP: CUBE-, ROLLUP- UND GRUPPENSÄTZE

OLAP: CUBE-, ROLLUP- UND GRUPPENSÄTZE

WBOY
WBOYOriginal
2024-07-16 15:16:421025Durchsuche

OLAP: CUBE, ROLLUP, AND GROUPING SETS

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:

WÜRFEL

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.


ROLLUP

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.

GRUPPIERUNGSSÄTZE

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn