Zu Hauptinhalt springen

Aggregierungsfunktionen

Die als Aggregierungsfunktionen bezeichnete Funktionsgruppe besteht aus Funktionen, die mehrere Feldwerte als Input verwenden und ein einzelnes Ergebnis pro Gruppe ausgeben, wobei die Gruppierung von einer Diagrammdimension oder von einer group by-Bedingung in der Skriptanweisung definiert wird.

Aggregierungsfunktionen umfassen Sum(), Count(), Min(), Max() und viele weitere.

Die meisten Aggregierungsfunktionen können sowohl im Datenladeskript als auch in den Diagrammformeln verwendet werden, jedoch variiert die Syntax.

Aggregierungsfunktionen im Datenladeskript verwenden

Aggregierungsfunktionen können nur innerhalb von LOAD - und SELECT-Befehlen verwendet werden.

Aggregierungsfunktionen in Diagrammformeln verwenden

Die Parameter der Aggregierungsfunktion dürfen keine anderen Aggregierungsfunktionen enthalten, es sei denn, diese inneren Aggregierungen enthalten den Qualifizierer TOTAL. Für komplexere verschachtelte Aggregierungen verwenden Sie die erweiterte Funktion Aggr in Verbindung mit einer angegebenen Dimension.

Die Aggregierungsfunktion berechnet sich über alle wählbaren Werte. Alternativ können Sie die der Berechnung zugrunde liegenden Werte jedoch über eine Auswahlformel bestimmen.

Siehe: Aggregierung und Auswahlformeln

Berechnung von Aggregierungen

Eine Aggregierung geht in einer Schleife die Datensätze einer bestimmten Tabelle durch und aggregiert die enthaltenen Datensätze. Beispielsweise zählt Count(<Field>) die Anzahl der Datensätze in der Tabelle, in der sich <Field> befindet. Wenn Sie nur die distinkten Feldwerte aggregieren möchten, müssen Sie den distinct-Befehl verwenden, beispielsweise Count(distinct <Field>).

Wenn die Aggregierungsfunktion Felder aus verschiedenen Tabellen enthält, geht die Aggregierungsfunktion in einer Schleife die Datensätze des Kreuzprodukts der Tabellen der sie bildenden Felder durch. Dies beeinträchtigt die Leistung, und aus diesem Grund sollten derartige Aggregierungen vermieden werden, besonders wenn es sich um große Datenmengen handelt.

Aggregierung von Schlüsselfeldern

Die Art und Weise, wie Aggregierungen berechnet werden, bedeutet, dass keine Schlüsselfelder aggregiert werden können, da nicht klar ist, welche Tabelle für die Aggregierung verwendet werden sollte. Wenn zum Beispiel das Feld <Key> zwei Tabellen verknüpft, ist nicht klar, ob Count(<Key>) die Anzahl der Datensätze aus der ersten oder aus der zweiten Tabelle zurückgeben sollte.

Wenn Sie dagegen den distinct-Befehl verwenden, ist die Aggregierung korrekt definiert und kann berechnet werden.

Wenn Sie also ein Schlüsselfeld in einer Aggregierungsfunktion ohne den distinct-Befehl verwenden, gibt Qlik Sense eine Zahl zurück, die möglicherweise keinen Sinn ergibt. Die Lösung besteht darin, entweder den distinct-Befehl zu verwenden oder eine Kopie des Schlüssels zu verwenden, die sich nur in einer Tabelle befindet.

Beispielsweise ist in den folgenden Tabellen ProductID der Schlüssel zwischen den Tabellen.

ProductID-Schlüssel zwischen den Tabellen „Products“ und „Details“

Count(ProductID) kann entweder in der Tabelle Products (mit einem Datensatz pro Produkt – ProductID ist der primäre Schlüssel) oder in der Tabelle Details (die wahrscheinlich mehrere Datensätze pro Produkt enthält) gezählt werden. Um die Anzahl der unterschiedlichen Produkte zu ermitteln, sollten Sie Count(distinct ProductID) verwenden. Wenn Sie die Anzahl der Zeilen in einer bestimmten Tabelle zählen möchten, verwenden Sie den Schlüssel nicht.