Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel werden Syntax und Anforderungen für die DAX Formelausdrucksprache beschrieben.
Syntaxanforderungen
Eine DAX Formel beginnt immer mit einem Gleichheitszeichen (=). Nach dem Gleichheitszeichen können Sie einen beliebigen Ausdruck angeben, der in einen Skalar ausgewertet wird, oder einen Ausdruck, der in einen Skalar konvertiert werden kann. Dazu gehören folgende:
Eine skalare Konstante oder ein Ausdruck, der einen skalaren Operator verwendet (
+,-,*,/,>=,...,&&, ...)Verweise auf Spalten oder Tabellen. Die DAX Sprache verwendet immer Tabellen und Spalten als Eingaben für Funktionen, niemals ein Array oder einen beliebigen Wertesatz.
Operatoren, Konstanten und Werte, die als Teil eines Ausdrucks bereitgestellt werden.
Das Ergebnis einer Funktion und der erforderlichen Argumente. Einige DAX Funktionen geben eine Tabelle anstelle eines Skalars zurück und müssen in eine Funktion eingeschlossen werden, die die Tabelle auswertet und einen Skalar zurückgibt. Es sei denn, die Tabelle ist eine einzelne Spalte, eine einzelne Zeilentabelle, dann wird sie als Skalarwert behandelt.
Die meisten DAX Funktionen erfordern ein oder mehrere Argumente, die Tabellen, Spalten, Ausdrücke und Werte enthalten können. Einige Funktionen, z. B. PI, erfordern zwar keine Argumente, benötigen jedoch immer Klammern, um das Null-Argument anzugeben. Zum Beispiel müssen Sie immer PI(), nicht PI eingeben. Sie können Funktionen auch in andere Funktionen schachteln.
Ausdrücke: Ein Ausdruck kann eine oder alle der folgenden Elemente enthalten: Operatoren, Konstanten oder Verweise auf Spalten.
Im Folgenden sind beispielsweise alle gültigen Formeln aufgeführt.
| Formel | Ergebnis |
|---|---|
= 3 |
3 |
= "Sales" |
Umsatz |
= 'Sales'[Amount] |
Wenn Sie diese Formel in der Tabelle "Vertrieb" verwenden, erhalten Sie den Wert der Spalte "Betrag" in der Tabelle "Umsatz" für die aktuelle Zeile. |
= (0.03 *[Amount])=0.03 * [Amount] |
Drei Prozent des Werts in der Spalte "Betrag" der aktuellen Tabelle. Obwohl diese Formel zum Berechnen eines Prozentsatzes verwendet werden kann, wird das Ergebnis nicht als Prozentsatz angezeigt, es sei denn, Sie wenden formatierungen in der Tabelle an. |
= PI() |
Der Wert der Konstanten pi. |
Formeln können sich je nach Verwendung unterschiedlich verhalten. Sie müssen sich immer über den Kontext und die Art und Weise bewusst sein, wie die daten, die Sie in der Formel verwenden, mit anderen Daten verknüpft sind, die in der Berechnung verwendet werden können.
Benennungsanforderungen
Ein Datenmodell enthält häufig mehrere Tabellen. Zusammen bestehen die Tabellen und deren Spalten aus einer Datenbank, die im Speicheranalysemodul (VertiPaq) gespeichert ist. Innerhalb dieser Datenbank müssen alle Tabellen eindeutige Namen haben. Die Namen von Spalten müssen auch innerhalb jeder Tabelle eindeutig sein. Bei allen Objektnamen wird die Groß-/Kleinschreibung nicht beachtet; Die Namen "SALES " und " Sales " würden beispielsweise dieselbe Tabelle darstellen.
Jede Spalte und jedes Measure, die Sie einem vorhandenen Datenmodell hinzufügen, muss zu einer bestimmten Tabelle gehören. Sie geben die Tabelle entweder implizit an, wenn Sie eine berechnete Spalte innerhalb einer Tabelle erstellen, oder explizit, wenn Sie ein Maß erstellen und den Namen der Tabelle angeben, in der die Maßdefinition gespeichert werden soll.
Wenn Sie eine Tabelle oder Spalte als Eingabe für eine Funktion verwenden, müssen Sie den Spaltennamen in der Regel qualifizieren . Der vollqualifizierte Name einer Spalte ist der Tabellenname, gefolgt vom Spaltennamen in eckigen Klammern. Beispiel: U.S. Sales[Products]. Ein vollqualifizierter Name ist immer erforderlich, wenn Sie in den folgenden Kontexten auf eine Spalte verweisen:
Als Argument für die Funktion,
VALUESAls Argument für die Funktionen
ALLoderALLEXCEPTIn einem Filterargument für die Funktionen
CALCULATEoderCALCULATETABLEAls Argument für die Funktion,
RELATEDTABLEAls Argument für jede Zeitintelligenzfunktion
Ein nicht qualifizierter Spaltenname besteht nur aus dem in eckigen Klammern eingeschlossenen Spaltennamen. Beispiel: [Umsatzbetrag]. Wenn Sie beispielsweise auf einen Skalarwert aus derselben Zeile der aktuellen Tabelle verweisen, können Sie den nicht qualifizierten Spaltennamen verwenden.
Wenn der Name einer Tabelle Leerzeichen, reservierte Schlüsselwörter oder unzulässige Zeichen enthält, müssen Sie den Tabellennamen in einfache Anführungszeichen setzen. Sie müssen auch Tabellennamen in Anführungszeichen setzen, wenn der Name Zeichen außerhalb des alphanumerischen Zeichenbereichs ANSI enthält, unabhängig davon, ob das Gebietsschema den Zeichensatz unterstützt oder nicht. Wenn Sie beispielsweise eine Arbeitsmappe öffnen, die Tabellennamen enthält, die in kyrillischen Zeichen geschrieben wurden, z. B. "Таблица", muss der Tabellenname in Anführungszeichen eingeschlossen werden, auch wenn er keine Leerzeichen enthält.
Anmerkung
Verwenden Sie für eine einfachere Eingabe von vollqualifizierten Spaltennamen die Funktion „AutoVervollständigen“ im Formel-Editor.
Tabellen
Tabellennamen sind immer dann erforderlich, wenn die Spalte aus einer anderen Tabelle als der aktuellen Tabelle stammt. Tabellennamen müssen innerhalb der Datenbank eindeutig sein.
Tabellennamen müssen in einfache Anführungszeichen eingeschlossen werden, wenn sie Leerzeichen, andere Sonderzeichen oder nicht englische alphanumerische Zeichen enthalten.
Measures
Maßnahmenbezeichnungen müssen immer in Klammern stehen.
Maßnahmennamen können Leerzeichen enthalten.
Jeder Maßnahmenname muss innerhalb eines Modells eindeutig sein. Daher ist der Tabellenname vor einem Maßnahmennamen optional, wenn auf eine bereits vorhandene Maßnahme verwiesen wird. Wenn Sie jedoch ein Measure erstellen, müssen Sie immer eine Tabelle angeben, in der die Measuredefinition gespeichert wird.
Spalten
Spaltennamen müssen im Kontext einer Tabelle eindeutig sein. Andere Tabellen dürfen jedoch denselben Spaltennamen enthalten, da durch den Tabellennamen eine eindeutige Zuordnung erreicht wird.
In der Regel können Spalten ohne Verweis auf die Basistabelle, zu der sie gehören, referenziert werden, es sei denn, es besteht die Möglichkeit eines Namenskonflikts, der gelöst werden muss, oder bei bestimmten Funktionen, die erfordern, dass Spaltennamen vollständig qualifiziert sind.
Reservierte Schlüsselwörter
Wenn der Name, den Sie für eine Tabelle verwenden, mit einem reservierten Analysis Services-Schlüsselwort identisch ist, wird ein Fehler ausgelöst, und Sie müssen die Tabelle umbenennen. Sie können jedoch Schlüsselwörter in Objektnamen verwenden, wenn der Objektname in eckige Klammern (für Spalten) oder Anführungszeichen (für Tabellen) eingeschlossen ist.
Anmerkung
Anführungszeichen können je nach Anwendung durch mehrere verschiedene Zeichen dargestellt werden. Wenn Sie Formeln aus einem externen Dokument oder einer Webseite einfügen, überprüfen Sie unbedingt den ASCII-Code des Zeichens, das zum Öffnen und Schließen von Anführungszeichen verwendet wird, um sicherzustellen, dass sie identisch sind. Andernfalls kann DAX die Symbole möglicherweise nicht als Anführungszeichen erkennen, wodurch der Verweis ungültig wird.
Sonderzeichen
Die folgenden Zeichen und Zeichentypen sind in den Namen von Tabellen, Spalten oder Measures ungültig:
Führende oder nachfolgende Leerzeichen; es sei denn, die Leerzeichen werden durch Namenstrennzeichen, Klammern oder einzelne Apostrophe eingeschlossen.
Steuerzeichen
Die folgenden Zeichen, die in den Namen von Objekten ungültig sind:
.,;':/\\*|?&%$!+=()[]{}<>
Beispiele für Objektnamen
Die folgende Tabelle enthält Beispiele für einige Objektnamen:
| Objekttypen | Beispiele | Kommentieren |
|---|---|---|
| Tabellenname | Umsatz | Wenn der Tabellenname keine Leerzeichen oder andere Sonderzeichen enthält, muss der Name nicht in Anführungszeichen eingeschlossen werden. |
| Tabellenname | 'Umsätze Kanada' | Wenn der Name Leerzeichen, Tabstopps oder andere Sonderzeichen enthält, schließen Sie den Namen in einfache Anführungszeichen ein. |
| Vollqualifizierter Spaltenname | Umsätze[Betrag] | Der Tabellenname steht vor dem Spaltennamen, und der Spaltenname wird in Klammern eingeschlossen. |
| Vollqualifizierter Maßnahmenname | Umsatz[Gewinn] | Der Tabellenname steht vor dem Maßnahme-Namen, und der Maßnahme-Name wird in eckigen Klammern eingeschlossen. Ein vollständig qualifizierter Name ist in bestimmten Kontexten immer erforderlich. |
| Nicht qualifizierter Spaltenname | [Betrag] | Ein nicht qualifizierte Name besteht nur aus dem Spaltennamen in eckigen Klammern. Kontexte, in denen Sie den nicht qualifizierten Namen verwenden können, enthalten Formeln in einer berechneten Spalte innerhalb derselben Tabelle oder in einer Aggregationsfunktion, die über dieselbe Tabelle überprüft wird. |
| Vollqualifizierte Spalte in Tabelle mit Leerzeichen | 'Umsätze Kanada'[Betrag] | Der Tabellenname enthält Leerzeichen, daher muss er von einfachen Anführungszeichen umgeben sein. |
Weitere Einschränkungen
Die für jede Funktion erforderliche Syntax und der Typ des vorgangs, der ausgeführt werden kann, variiert je nach Funktion stark. Im Allgemeinen gelten jedoch die folgenden Regeln für alle Formeln und Ausdrücke:
DAX Formeln und Ausdrücke können einzelne Werte in Tabellen nicht ändern oder einfügen.
Sie können keine berechneten Zeilen mithilfe von DAX erstellen. Sie können nur berechnete Spalten und Kennzahlen erstellen.
Beim Definieren von berechneten Spalten können Sie Funktionen in jeder beliebigen Ebene schachteln.
DAX verfügt über mehrere Funktionen, die eine Tabelle zurückgeben. In der Regel verwenden Sie die von diesen Funktionen zurückgegebenen Werte als Eingabe für andere Funktionen, die eine Tabelle als Eingabe erfordern.
DAX Operatoren und Konstanten
In der folgenden Tabelle sind die Operatoren aufgeführt, die von DAXunterstützt werden. Weitere Informationen zur Syntax einzelner Operatoren finden Sie unter DAX-Operatoren.
| Operatortyp | Symbol und Verwendung |
|---|---|
| Klammeroperator |
() Rangfolge und Gruppierung von Argumenten |
| Arithmetische Operatoren |
+ (Addition)- (Subtraktion)* (Multiplikation)/ (Division)^ (Potenzierung) |
| Vergleichsoperatoren |
= (ist gleich)> (größer als)< (kleiner als)>= (größer oder gleich)<= (kleiner oder gleich)<> (nicht gleich) |
| Operator für Textverkettung |
& (Verkettung) |
| Logikoperatoren |
&& (und)|| (oder) |
Datentypen
Sie müssen den Datentyp einer Spalte oder eines Werts, die Sie in einer DAX Formel verwenden, nicht umwandeln, konvertieren oder anderweitig angeben. Wenn Sie Daten in einer DAX-Formel verwenden, erkennt DAX automatisch die Datentypen in den referenzierten Spalten sowie den von Ihnen eingegebenen Werten. Bei Bedarf führt es implizite Konvertierungen durch, um die angegebene Operation abzuschließen.
Wenn Sie z. B. versuchen, einem Datumswert eine Zahl hinzuzufügen, interpretiert das Modul den Vorgang im Kontext der Funktion und konvertiert die Zahlen in einen gemeinsamen Datentyp, und stellt dann das Ergebnis im beabsichtigten Format ein Datum dar.
Es gibt jedoch einige Einschränkungen für die Werte, die erfolgreich konvertiert werden können. Wenn ein Wert oder eine Spalte einen Datentyp aufweist, der mit dem aktuellen Vorgang nicht kompatibel ist, DAX wird ein Fehler zurückgegeben. DAX stellt außerdem keine Funktionen bereit, mit denen der Datentyp von Daten, die Sie bereits in ein Datenmodell importiert haben, explizit geändert, konvertiert oder umgewandelt werden kann.
Wichtig
DAX unterstützt die Verwendung des Variant-Datentyps nicht. Wenn Sie Also Daten in ein Datenmodell laden oder importieren, wird erwartet, dass die Daten in jeder Spalte im Allgemeinen einen konsistenten Datentyp aufweisen.
Einige Funktionen geben skalare Werte zurück, einschließlich Zeichenfolgen, während andere Funktionen mit Zahlen, ganzzahlen und reellen Zahlen oder Datums- und Uhrzeitwerten arbeiten. Die für die einzelnen Funktionen erforderlichen Datentypen werden unter DAX-Funktionen beschrieben.
Sie können Tabellen mit mehreren Spalten und mehreren Datenzeilen als Argument für eine Funktion verwenden. Einige Funktionen geben auch Tabellen zurück, die im Arbeitsspeicher gespeichert sind und als Argumente für andere Funktionen verwendet werden können.
Datum und Uhrzeit
DAX Speichert Datums- und Uhrzeitwerte mithilfe des von Microsoft SQL Server verwendeten Datentyps "datetime". Das Datetime-Format verwendet eine Gleitkommazahl, bei der Datumswerte dem ganzzahligen Teil entsprechen, der die Anzahl der Tage seit dem 30. Dezember 1899 darstellt. Zeitwerte entsprechen dem Dezimalteil eines Datumswerts, in dem Stunden, Minuten und Sekunden durch Dezimalbrüche eines Tages dargestellt werden. DAX Datums- und Uhrzeitfunktionen konvertieren implizit Argumente in den Datentyp "datetime".
Anmerkung
Der genaue maximal unterstützte DAX DateTime-Wert ist der 31. Dezember 9999 00:00:00.
Datums- und Uhrzeitliteral
Ab der Version vom August 2021 von Power BI Desktop können DAX Datums- und Uhrzeitwerte als Literal im Format dt"YYYY-MM-DD", dt"YYYY-MM-DDThh:mm:ss" oder dt"YYYY-MM-DD hh:mm:ss" angegeben werden. Bei Angabe als Literal sind die Verwendung von DATE, TIME, DATEVALUE, TIMEVALUE Funktionen im Ausdruck nicht erforderlich.
Der folgende Ausdruck verwendet die Funktionen DATE und TIME, um nach OrderDate zu filtern.
EVALUATE
FILTER (
FactInternetSales,
[OrderDate] > (DATE(2015,1,9) + TIME(2,30,0)) &&[OrderDate] < (DATE(2015,12,31) + TIME(11,59,59))
)
Derselbe Filterausdruck kann als Literal angegeben werden:
EVALUATE
FILTER (
FactInternetSales,
[OrderDate] > dt"2015-1-9T02:30:00" && [OrderDate] < dt"2015-12-31T11:59:59"
)
Anmerkung
Das DAX Datums- und Datums-/Uhrzeit-Typ-Literalformat wird in allen Versionen von Power BI Desktop, Analysis Services und Power Pivot in Excel nicht unterstützt. Neue und aktualisierte DAX Funktionen werden in der Regel zuerst in Power BI Desktop eingeführt und später in Analysis Services und Power Pivot in Excel enthalten.