Innere und äußere Auswahlformeln
Auswahlformeln können inner- und außerhalb von Aggregierungsfunktionen verwendet werden und sind in geschweifte Klammern eingeschlossen.
Wenn Sie eine Auswahlformel innerhalb einer Aggregierungsfunktion verwenden, kann dies so aussehen:
Beispiel: Innere Auswahlformel
Sum( {$<Year={2021}>} Sales )Verwenden Sie eine Auswahlformel außerhalb der Aggregierungsfunktion, wenn Sie Formeln mit mehreren Aggregierungen haben und vermeiden möchten, die gleiche Auswahlformel in jede Aggregierungsfunktion zu schreiben.
Wenn Sie eine äußere Auswahlformel verwenden, muss sie am Beginn des Geltungsbereichs platziert werden.
Beispiel: Äußere Auswahlformel
{<Year={2021}>} Sum(Sales) / Count(distinct Customer)Wenn Sie eine Auswahlformel außerhalb der Aggregierungsfunktion verwenden, können Sie sie auch auf vorhandene Master-Kennzahlen anwenden.
Beispiel: Auf Master-Kennzahl angewendete äußere Auswahlformel
{<Year={2021}>} [Master Measure]Eine Auswahlformel, die außerhalb von Aggregierungsfunktionen verwendet wird, wirkt sich auf die ganze Formel aus, es sei denn, sie wird in Klammern eingeschlossen. In diesem Fall definieren die Klammern den Geltungsbereich. In dem folgenden Beispiel für einen lexikalischen Geltungsbereich wird die Auswahlformel nur auf die Aggregierung innerhalb der Klammern angewandt.
Beispiel: Lexikalischer Geltungsbereich
( {<Year={2021}>} Sum(Amount) / Count(distinct Customer) ) – Avg(CustomerSales)Regeln
Lexikalischer Geltungsbereich
Die Auswahlformel wirkt sich auf die ganze Formel aus, es sei denn, sie ist in Klammern eingeschlossen. In diesem Fall definieren die Klammern den lexikalischen Geltungsbereich.
Position
Die Auswahlformel muss am Anfang des lexikalischen Geltungsbereichs platziert werden.
Kontext
Der Kontext ist die Auswahl, die für die Formel relevant ist. Traditionell war der Kontext immer der Standardzustand der aktuellen Auswahl. Wenn ein Objekt jedoch auf alternative Zustände festgelegt ist, ist der Kontext der alternative Zustand der aktuellen Auswahl.
Sie können einen Kontext auch in Form einer äußeren Auswahlformel definieren.
Erben
Innere Auswahlformeln haben Vorrang vor äußeren Auswahlformeln. Wenn die innere Auswahlformel einen Identifikator für Auswahlformeln enthält, überschreibt sie den Kontext, der in der äußeren Auswahlformel definiert ist. Andernfalls werden die innere und die äußere Auswahlformel beide ausgewertet.
Beispiel 1: Innere Auswahlformel mit Identifikator für Auswahlformeln
In der obigen Formel besteht die innere Auswahlformel Count({1} distinct OrderNumber) aus dem Identifikator für Auswahlformeln {1}. Wenn diese innere Auswahlformel ausgewertet wird, wird der in der äußeren Auswahlformel {<Year={2023}>} definierte Bereich nicht angewendet.
Beispiel 2: Innere Auswahlformeln ohne Identifikatoren für Auswahlformeln
In der obigen Formel enthalten die inneren Auswahlformeln Sum ({<Status={'Confirmed'}>} Sales_Stream1) und Sum ({<UpdatedStatus={'Confirmed'}>} Sales_Stream2) keine Identifikatoren für Auswahlformeln Daher werden die äußere Auswahlformel {<Year={2023}>} und die beiden inneren Auswahlformeln alle bei der Auswertung des Ergebnisses angewendet.
Elementsatzzuweisung
Die Elementsatzzuweisung bestimmt, wie die beiden Auswahlen zusammengeführt werden. Wenn ein normales Gleichheitszeichen verwendet wird, hat die Auswahl in der inneren Auswahlformel Vorrang. Andernfalls wird der implizite Operator für Auswahlformeln verwendet.
{<Field={value}>}: Diese innere Auswahl ersetzt alle äußeren Auswahlen in “Field”.
{<Field+={value}>}: Diese innere Auswahl wird mit der äußeren Auswahl in “Field” zusammengeführt, wobei der Verbindungsoperator verwendet wird.
{<Field*={value}>}: Diese innere Auswahl wird mit der äußeren Auswahl in “Field” zusammengeführt, wobei der Schnittoperator verwendet wird.
Erben in mehreren Schritten
Das Erben kann in mehreren Schritten stattfinden. Beispiele:
Aktuelle Auswahl → Sum(Amount)
Die Aggregierungsfunktion verwendet den Kontext, in diesem Fall die aktuelle Auswahl.
Aktuelle Auswahl → {<Set1>} Sum(Amount)
Set1 erbt von der aktuellen Auswahl, und das Ergebnis ist der Kontext für die Aggregierungsfunktion.
Aktuelle Auswahl → {<Set1>} ({<Set2>} Sum(Amount))
Set2 erbt von Set1, der wiederum von der aktuellen Auswahl erbt, und das Ergebnis ist der Kontext für die Aggregierungsfunktion.
Vererbung für Ketten innerer und äußerer Satzformeln
Es gibt zusätzliche Überlegungen zur Vererbung, wenn Sie mehrere Satzformeln in komplexen Ketten verwenden, insbesondere wenn einer äußeren Satzformel weitere äußere Satzformeln und/oder eine innere Satzformel folgen. Weitere Einzelheiten finden Sie unter Ketten aus mehreren äußeren und inneren Satzformeln.
Die Funktion Aggr()
Die Funktion Aggr() erstellt eine verschachtelte Aggregierung, die zwei unabhängige Aggregierungen enthält. Im Beispiel unten wird Count() für jeden Wert von Dim berechnet, und das sich ergebende Array wird anhand der Funktion Sum() aggregiert.
Beispiel:
Sum(Aggr(Count(X),Dim))Count() ist die innere Aggregierung und Sum() ist die äußere Aggregierung.
Die innere Aggregierung erbt keinen Kontext von der äußeren Aggregierung.
Die innere Aggregierung erbt den Kontext von der Funktion Aggr(), die eine Auswahlformel enthalten kann.
Sowohl die Funktion Aggr() als auch die äußere Aggregierungsfunktion erben den Kontext von einer äußeren Auswahlformel.
Ketten aus mehreren äußeren und inneren Satzformeln
Beachten Sie, dass es möglich ist, mehr als eine äußere Satzformel zu haben. In diesem Beispiel haben wir zwei äußere Satzformeln und eine innere:
Die Satzformeln werden von links nach rechts angewendet. Das bedeutet, dass im Fall, dass zwei Satzformeln in Konflikt stehende Sätze verwenden, die ganz rechts stehende Formel Vorrang hat.
Obwohl es keine Begrenzung für die Anzahl der auf diese Weise verketteten äußeren Satzformeln gibt, ist die Anzahl der inneren Satzformeln auf einen begrenzt. Wenn Sie mehr als eine innere Satzformel nebeneinander haben, wird kein Fehler auftreten, aber nur der ganz rechts stehende wird bei der Auswertung verwendet.
Vererbung von Satzformeln
Wenn eine Aggregationsformel mehr als eine Satzformel als Teil einer Kette enthält, werden die Satzformeln nacheinander von links nach rechts ausgewertet. Das Ergebnis einer jeden Satzformel ist eine Gruppe von Sätzen, möglicherweise eine für jede Dimension. Die Sätze werden an die nächste Satzformel übergeben, die weitere Änderungen vornehmen kann, bevor sie an den nächsten weitergegeben werden.
Solange die einzelnen Satzformeln für unterschiedliche Dimensionen funktionieren, gibt es keine Konflikte zwischen ihnen, und alle Sätze bleiben bis zum Ende der Kette erhalten (und werden bei der Aggregation angewendet). Es gibt eine Ausnahme von dieser Regel, die manchmal gilt, wenn eine Dimension in einer Satzformel einen leeren Satz ergeben hat. Im Folgenden finden Sie weitere Informationen:
Leere Auswahlsätze
Wenn eine Dimension in einer Satzformel ausgewertet wird, ist es möglich, dass der Satz keine Daten enthält. Dies wird ein leerer Satz genannt. Leere Sätze können in vielen Szenarien vorkommen, wie zum Beispiel:
Falsche Definition der Formel. Wenn Sie z. B. versuchen, einen Wert 2025 mit einer Satzformel {<OrderYear={‘2025’}>} zu suchen, wird die Formel als {<OrderYear={‘0025’}>} geschrieben.
Während der Analyse wird eine Auswahl in einer anderen Dimension getroffen als der, auf die in der Formel verwiesen wird. Diese Auswahl führt dann dazu, dass für die Satzformeldimension keine Daten verfügbar sind. Beispiel: Ein Benutzer trifft eine Auswahl für Region='Europe' und einen Satzformelfilter für {<ProductCategory={‘Shirts’}>} Sum (Sales). Wenn in Europa keine Hemden verkauft werden, enthält die Satzformel einen leeren Satz.
Der leere Satz wird explizit in der Formel definiert. Dies ist nicht üblich oder sinnvoll, aber technisch möglich. Zum Beispiel: {<Year={}>}
Implizites Löschen von Auswahlsätzen
Wenn das Ergebnis nach der Anwendung einer Satzformel den leeren Satz für eine der Dimensionen ist (siehe Leere Auswahlsätze) und danach eine weitere Satzformel angewendet wird, wird der Auswahlsatz für diese Dimension gelöscht (im vollständigen Satz wiederhergestellt), bevor die nächste Satzformel angewendet wird. Ein gelöschter Auswahlsatz bedeutet, dass alle Werte berücksichtigt werden. Beachten Sie jedoch, dass dieses Löschen nur erfolgt, wenn nach der Satzformel, bei der der leere Satz erzeugt wird, eine oder mehrere zusätzliche äußere Satzformeln angewendet werden.
Hier ein Beispiel dafür, wann ein gelöschter Auswahlsatz stattfindet:
{<Year={}>} {<Region={"Europe"}>} Sum( Sales )Year={} erstellt der leere Satz für die Dimension Year. Das bedeutet, dass das Auswahlset für Year gelöscht wird, wenn das Set an die nächste Satzformel weitergegeben wird, die Region={Europe} enthält. Beachten Sie, dass das Löschen der Auswahl nur für eine einzige Dimension erfolgt. Sätze in anderen Dimensionen — einschließlich Sätzen innerhalb derselben Satzformel — werden weiterhin unverändert weitergegeben.
Hier ein Beispiel dafür, wann ein gelöschter Auswahlsatz stattfindet:
{<Year={}, Product={"XI345"}>} {<Region={"Europe"}>} Sum(Sales)In dem obigen Beispiel geschieht Folgendes:
Die Auswahlsets Product={"XI345"} und Region={"Europe"} werden angewendet.
Year={} wird nicht angewendet. Das liegt daran, dass dieser Satz gelöscht wird, wenn die letzte Satzformel — {<Region={"Europe"}>} — angewendet wird.
Das Verschieben einer Satzformelkomponente in die letzte äußere Satzformel verhindert, dass implizites Löschen stattfindet. Nehmen Sie dieses Beispiel:
{<Product={"XI345"}>} {<Year={}, Region={"Europe"}>} Sum(Sales)Hier haben wir die Formel Year in die letzte Satzformel in der Kette verschoben. Dadurch wird das implizite Löschen verhindert, und der leere Satz für die Dimension Year wird tatsächlich für die Aggregation Sum verwendet.
In jedem Fall kann es beim Löschen von Auswahlsätzen zu unerwünschtem Verhalten kommen. Um die Analyseerfahrung zu verbessern und das Schreiben von Ketten von Satzformeln zu erleichtern, verwenden Sie das Flag zur Beibehaltung von leeren Sätzen. Weitere Informationen finden Sie unter Flag zur Beibehaltung von leeren Sätzen (äußere Satzformeln).
Flag zur Beibehaltung von leeren Sätzen (äußere Satzformeln)
Verwenden Sie das Symbol & (das Flag zur Beibehaltung von leeren Sätzen), um das Auswertungsmodell für äußere Satzformeln zu vereinfachen. Zum Beispiel:
{& <Year={}, Product={XI345}>} {<Region={Europe}>} Sum( Sales )In diesem Beispiel definiert Year={} einen leeren Auswahlsatz für Year. Ohne das Symbol & würde die Formel {<Region={Europe}>} dazu führen, dass der leere Auswahlsatz Year gelöscht wird, was dazu führt, dass alle Daten in der Aggregationsberechnung verwendet werden. Das Symbol & zwingt die Aggregation, den leere Auswahlsatz Year zu berücksichtigen, was zu einer verständlicheren Ausgabe führt.
Ausführliche Informationen über das Flag zur Beibehaltung leerer Sätze finden Sie unter Flag zur Beibehaltung leerer Sätze.