Tabellen-DAX-Ausdrücke
Meistens erstellen Sie in Power BI Tabellen, indem Sie Daten aus einer externen Datenquelle in das Modell importieren. Mit Tabellenfunktionen fügen Sie stattdessen neue Tabellen basierend auf den Daten hinzu, die Sie bereits in das Modell geladen haben.
Übersicht
Mit Tabellenfunktionen können Power BI-Benutzer eine Zwischentabelle erstellen, die im Datenmodell angezeigt wird und in anderen DAX-Ausdrücken verwendet werden kann. Tabellenfunktionen sind temporäre Tabellen, die Sie verwenden können. Sie sind jedoch nicht sichtbar, da sie nicht ausgegeben werden.
FILTER, VALUES und ALL sind einige gängige, häufig in DAX-Measures verwendete Zwischentabellen.
Anwenden der FILTER-Funktion
Die FILTER-Funktion legt den Filter für eine bestimmte Tabelle fest und verwendet dann eine verkürzte Version einer Tabelle in einer Berechnung. Anders ausgedrückt, gibt sie eine Tabelle zurück, die eine Teilmenge einer anderen Tabelle oder eines anderen Ausdrucks darstellt.
Angenommen, Sie verfügen über die folgende Datentabelle:
In der vorherigen Tabelle haben Sie einige Zeilen, die den Umsatz von Seattle hervorheben. Der Gesamtumsatz für Seattle im Jahr 2018 beträgt 30,13 (20,46 + 9,67). So erhalten Sie dieses Ergebnis mit der FILTER-Funktion:
2018 Sales = SUMX(
FILTER(
Sales,
YEAR( Sales[SalesDate] ) = 2018
),
[Price]*[Quantity]
)
Tipp
KORRELATION MIT TABLEAU: Um dieselbe Berechnung in Tableau zu erstellen, verwenden Sie die IF/THEN-Syntax: 2018 Sales = IF YEAR([SalesDate]) = 2018 THEN SUM([Price]*[Quantity]) END
Im vorherigen Codeausschnitt haben Sie zuerst die Daten für den Filterkontext abgerufen, bei dem es sich um die Faktentabelle „Sales“ handelt:
Als Nächstes haben Sie die Sales-Daten gefiltert, um nur die Umsätze für das Jahr 2018 einzuschließen.
Schließlich haben Sie den Ausdruck ausgewertet, jedoch nur für die Datensätze in der temporären Tabelle.
Anwenden der VALUES-Funktion
VALUES gibt eine Einspaltentabelle zurück, die die unterschiedlichen Werte aus der angegebenen Tabelle oder Spalte enthält. Doppelte Werte werden entfernt, und es werden nur eindeutige Werte zurückgegeben.
Sie haben z. B. gerade eine Aufgabe bekommen, bei der Sie zeigen müssen, bei welchem Spieler in einem Sportteam noch die Begleichung einer Geldstrafe aussteht.
Im Folgenden finden Sie die Datentabelle (mit dem Namen „Team Fine Details“), die Sie verwenden:
Sie müssen testen, ob es nur noch einen Spieler gibt, der seine Geldstrafe begleichen muss. Wenn ja, zeigen Sie seinen Namen an. Andernfalls wird die Meldung „more than one player“ (mehrere Spieler) angezeigt.
Sie können dies mit der VALUES-Funktion erreichen:
LastPlayer = IF(
COUNTROWS( VALUES( 'Team Fine Details'[SportsTeam] ) ) = 1,
VALUES( 'Team Fine Details'[PlayerName] ),
"More than one player"
)
Tipp
KORRELATION MIT TABLEAU: So würden Sie dieselbe Berechnung in Tableau durchführen: LastPlayer = IF COUNTD([SportsTeam]) = 1 THEN [PlayerName] ELSE "More than one player" END
Dieses Measure würde in etwa wie der folgende Bericht bzw. die folgende Visualisierung aussehen:
Anwenden der ALL-Funktion
Die ALL-Funktion weist Power BI an, eine bestimmte Tabelle zu betrachten, alle Werte daraus zu nehmen (nicht die Tabelle zu filtern) und diese Teilmenge von Werten in einem Ausdruck zu verwenden.
Die ALL-Funktion wird häufig verwendet, um den Prozentsatz der Summe eines aggregierten Measures zu erfahren.
Betrachten Sie z. B. das Geldstrafenbetrags-Szenario im Sportteam. Ihr Vorgesetzter ist mit Ihren Ergebnissen aus der vorherigen Aufgabe zufrieden, möchte aber wissen, bei welchem Team der Prozentsatz ausstehender Geldstrafenzahlungen am höchsten ist.
Im ersten Schritt wird ein Measure für die Gesamtsumme der ausstehenden Geldstrafenzahlungen erstellt:
TotalAllFineAmount = CALCULATE( [TotalFineAmount], ALL( 'Team Fine Details'[SportsTeam] ) )
Tipp
KORRELATION MIT TABLEAU: So würden Sie dieselbe Berechnung in Tableau mithilfe des FIXED LOD-Ausdrucks durchführen. Sie aggregieren die Gesamtsumme TotalFineAmount auf Tabellenebene: TotalAllFineAmount = { FIXED : SUM([TotalFineAmount]) }
Im zweiten und letzten Schritt wird der Prozentsatz des Gesamtmeasures mithilfe der DIVIDE-Funktion erstellt:
FineAmountPercentOfTotal = DIVIDE( [TotalFineAmount], [TotalAllFineAmount] )
Tipp
KORRELATION MIT TABLEAU: So würden Sie dieselbe Berechnung in Tableau durchführen: FineAmountPercentOfTotal = SUM([TotalFineAmount]) / SUM([TotalAllFineAmount])