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.
Beschränkungen:
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.
Wenn Sie ein Element benennen, müssen Sie vermeiden, den gleichen Namen mehr als einem Feld, einer Variablen oder einer Kennzahl zuzuweisen. Beim Auflösen von Konflikten zwischen Elementen mit identischen Namen wird eine strikte Reihenfolge eingehalten. Diese Reihenfolge gilt auch bei allen Objekten oder Kontexten, in denen diese Elemente verwendet werden. Diese Reihenfolge lautet wie folgt:
-
Innerhalb einer Aggregierung hat ein Feld Vorrang vor einer Variablen. Kennzahlbezeichnungen sind in Aggregierungen nicht relevant und haben keine Priorität.
-
Außerhalb einer Aggregierung hat eine Kennzahlbezeichnung Vorrang vor einer Variablen, die wiederum Vorrang vor einem Feldnamen hat.
-
Zudem kann außerhalb einer Aggregierung eine Kennzahl wiederverwendet werden, indem ihre Bezeichnung referenziert wird, es sei denn, es handelt sich um eine berechnete Bezeichnung. In dieser Situation reduziert sich die Bedeutung der Kennzahl, um das Risiko eines Selbstbezugs zu verringern, und in diesem Fall wird der Name immer zuerst als Kennzahlbezeichnung interpretiert, an zweiter Stelle als Feldname und an dritter Stelle als Variablenname.
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 auch über eine Auswahlformel bestimmen.
Siehe: Aggregierung mit 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.
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.