Aggr - Diagrammfunktion

Aggr() berechnet eine Reihe von Werten für die Formel aggregiert über die angegebene Dimension oder Dimensionen. Beispielsweise den maximalen Umsatzwert pro Kunde oder Region. Die Funktion Aggr wird für komplexe Aggregierungen verwendet, in denen die Funktion Aggr in einer weiteren Aggregierungsfunktion eingeschlossen ist. Dazu wird die Reihe von Ergebnissen der Funktion Aggr als Eingabe für die Aggregierung verwendet, in der sie verschachtelt ist.

Syntax:  

Aggr({SetExpression}[DISTINCT] [NODISTINCT ] expr, StructuredParameter{, StructuredParameter})

Return data type: dual

Arguments:  

Argument Beschreibung
expr

Eine aus einer Aggregierungsfunktion bestehende Formel. Standardmäßig berechnet sich die Aggregierungsfunktion über alle wählbaren Werte.

StructuredParameter

StructuredParameter besteht aus einer Dimension und optional aus Sortierkriterien im folgenden Format: (Dimension(Sort-type, Ordering))

Die Dimension ist ein Einzelfeld und kann keine Formel sein. Mithilfe der Dimension wird die Reihe der Werte festgelegt, für die die Formel Aggr berechnet wird.

Wenn Sortierkriterien enthalten sind, wird die Reihe der von der Aggr-Funktion erstellten und für die Dimension berechneten Werte sortiert. Dies ist wichtig, wenn die Sortierreihenfolge das Ergebnis der in der Aggr-Funktion eingeschlossenen Formel beeinflusst.

Details zur Verwendung der Sortierkriterien finden Sie unter Hinzufügen von Sortierkriterien zur Dimension im strukturierten Parameter.

SetExpression Standardmäßig berechnet sich die Aggregierungsfunktion über alle wählbaren Werte. Alternativ können Sie die der Berechnung zugrunde liegenden Werte über die Auswahlformel bestimmen.
DISTINCT

Wird dem Formelargument der Qualifizierer distinct vorangestellt oder wird gar kein Qualifizierer verwendet, generiert jede einzelne Kombination aus Dimensionswerten nur einen Rückgabewert. So werden Aggregationen normalerweise verwendet – jede distinct-Kombination aus Dimensionswerten ergibt eine Zeile im Diagramm.

NODISTINCT

Wird dem Formelargument der Qualifizierer nodistinct vorangestellt, kann jede Kombination aus Dimensionswerten abhängig von der zugrunde liegenden Datenstruktur mehrere Rückgabewerte generieren. Ist nur eine Dimension vorhanden, gibt die Funktion aggr ein Array mit so vielen Elementen zurück, wie Zeilen in den Quelldaten vorhanden sind.

Grundlegende Aggregierungsfunktionen wie Sum, Min und Avg geben einen einzelnen numerischen Wert zurück. Die Funktion Aggr() kann hingegen mit dem Erstellen einer temporären abgestuften Trefferliste (einer virtuellen Tabelle) verglichen werden, mit der eine weitere Aggregierung durchgeführt werden kann. Beispielsweise ergibt sich durch die Berechnung eines durchschnittlichen Verkaufswerts durch Addieren der Verkäufe pro Kunde in einer Aggr()-Anweisung und anschließender Berechnung des Durchschnitts der summierten Ergebnisse: Avg(TOTAL Aggr(Sum(Sales),Customer)).

Tipp: Verwenden Sie die Funktion Aggr() in berechneten Dimensionen, wenn Sie verschachtelte Diagrammaggregierungen auf mehreren Ebenen erstellen möchten.

Limitations:  

Jede Dimension in einer Aggr()-Funktion muss ein einzelnes Feld sein und darf keine Formel (berechnete Dimension) sein.

In seiner Grundform ist das Argument StructuredParameter in der Aggr-Funktionssyntax eine einzelne Dimension. Mit der Formel Aggr(Sum(Sales, Month)) wird der Gesamtumsatz für jeden Monat ermittelt. Bei Einschluss in einer anderen Aggregierungsfunktion kann es jedoch zu unerwarteten Ergebnissen kommen, sofern keine Sortierkriterien verwendet werden. Das liegt daran, dass manche Dimensionen numerisch, alphabetisch usw. sortiert werden können.

Im StructuredParameter-Argument in der Aggr-Funktion können Sie die Sortierkriterien für die Dimension in Ihrer Formel angeben. Auf diese Weise wenden Sie eine Sortierreihenfolge auf die virtuelle Tabelle an, die von der Aggr-Funktion erstellt wird.

Das Argument StructuredParameter weist die folgende Syntax auf:

(FieldName, (Sort-type, Ordering))

Strukturierte Parameter können verschachtelt werden:

(FieldName, (FieldName2, (Sort-type, Ordering)))

Der Sortiertyp kann NUMERIC, TEXT, FREQUENCY oder LOAD_ORDER sein.

Die mit jedem Ordnungstyp verknüpften Sortiertypen lauten wie folgt:

Sortiertyp Zulässige Ordnungstypen
NUMERIC ASCENDING, DESCENDING oder REVERSE
TEXT ASCENDING, A2Z, DESCENDING, REVERSE oder Z2A
FREQUENCY DESCENDING, REVERSE oder ASCENDING
LOAD_ORDER ASCENDING, ORIGINAL, DESCENDING oder REVERSE

Die Ordnungstypen REVERSE und DESCENDING sind gleichwertig.

Für den Sortiertyp TEXT sind die Ordnungstypen ASCENDING und A2Z gleichwertig und DESCENDING, REVERSE und Z2A sind gleichwertig.

Für den Sortiertyp LOAD_ORDER sind die Ordnungstypen ASCENDING und ORIGINAL gleichwertig.

Examples and results:  

Beispiel Ergebnis
Avg(Aggr(Sum(UnitSales*UnitPrice), Customer))

Die Formel Aggr(Sum(UnitSales*UnitPrice), Customer) findet den Gesamtwert der Verkäufe pro Customer und gibt eine Reihe von Werten zurück: 295, 715 und 120 für die drei Customer-Werte.

Wir haben die Werte temporär aufgelistet, ohne dass eine separate Tabelle oder Spalte mit diesen Werten erstellt wurde.

Diese Werte werden als Eingabe für die Avg()-Funktion genutzt, um den durchschnittlichen Verkaufswert zu ermitteln: 376,6667. (Dafür muss im Eigenschaftenfenster unter Präsentation die Option Gesamtwerte ausgewählt sein).

Aggr(NODISTINCT Max(UnitPrice), Customer)

Ein Wertepool: 16, 16, 16, 25, 25, 25, 19 und 19. Der Qualifizierer nodistinct bedeutet, dass die Werte ein Element für jede Zeile in den Quelldaten enthalten: jeder Wert ist der Maximalwert von UnitPrice für jeden Customer und jedes Product.

In Beispielen verwendete Daten:

Erstellen Sie eine Tabelle mit den Dimensionen Customer, Product, UnitPrice und UnitSales. Fügen Sie die Formel als Kennzahl zur Tabelle hinzu.

ProductData:

LOAD * inline [

Customer|Product|UnitSales|UnitPrice

Astrida|AA|4|16

Astrida|AA|10|15

Astrida|BB|9|9

Betacab|BB|5|10

Betacab|CC|2|20

Betacab|DD|25|25

Canutility|AA|8|15

Canutility|CC||19

] (delimiter is '|');

 

Examples and results: Strukturierte Parameter

Beispiel Ergebnis
Sum(Aggr( Rangesum(Above(Sum(Sales),0,12)), (Year, (Numeric, Ascending)), (Month, (Numeric, Ascending)) ))

Diese Kennzahl berechnet den Umsatz im Jahresverlauf für jeden Monat anhand von Sortierkriterien im Argument des strukturierten Paramters in der Formel.

Ohne Sortierkriterien hängt das Ergebnis der Formel Sum(Aggr( Rangesum(Above(Sum(Sales),0,12)), (Year), (Month) )) davon ab, wie die Dimensionen Year und Month sortiert sind. Das Ergebnis entspricht möglicherweise nicht unseren Anforderungen.

Durch das Hinzufügen von Werten für den Sortiertyp und den Ordnungstyp für die Dimension werden für den strukturierten Parameter Sortierkriterien bereitgestellt: (Year, (Numeric, Ascending)), (Month, (Numeric, Ascending)). Der Sortiertyp NUMERIC und der Ordnungstyp ASCENDING legen fest, dass Year und Month in aufsteigender numerischer Reihenfolge sortiert werden.

In Beispielen verwendete Daten:

Mit dem folgenden Ladeskript wird eine Tabelle mit Bestellungen und Bestellzeilen erstellt, die im Beispiel für strukturierte Parameter verwendet wird.

Set vNumberOfOrders = 1000; OrderLines: Load RowNo() as OrderLineID, OrderID, OrderDate, Round((Year(OrderDate)-2005)*1000*Rand()*Rand()*Rand1) as Sales While Rand()<=0.5 or IterNo()=1; Load * Where OrderDate<=Today(); Load Rand() as Rand1, Date(MakeDate(2013)+Floor((365*4+1)*Rand())) as OrderDate, RecNo() as OrderID Autogenerate vNumberOfOrders; Calendar: Load distinct Year(OrderDate) as Year, Month(OrderDate) as Month, OrderDate Resident OrderLines;

Sie können den Unterschied zwischen diesen Kennzahlen in einer Tabelle oder in getrennten Liniendiagrammen vergleichen:

  • Sum(Aggr( Rangesum(Above(Sum(Sales),0,12)), (Year), (Month) ))
  • Sum(Aggr( Rangesum(Above(Sum(Sales),0,12)), (Year, (Numeric, Ascending)), (Month, (Numeric, Ascending)) ))

Die zweite Kennzahl gibt die richtigen Umsätze im Jahresverlauf für jeden Monat an.