DAX-Syntax
In diesem Artikel werden die Syntax and die Anforderungen für die Formelausdruckssprache DAX beschrieben.
Syntaxanforderungen
Eine DAX-Formel beginnt immer mit einem Gleichheitszeichen sign (=
). Nach dem Gleichheitszeichen sign können Sie einen beliebigen Ausdruck angeben, der einen Skalar ergibt or in einen Skalar konvertiert werden kann. Dazu gehören folgende:
Eine Skalarkonstante or ein Ausdruck, der einen Skalaroperator (
+,-,*,/,>=,...,&&, ...
) verwendet.Verweise auf Spalten or Tabellen. Die DAX-Sprache verwendet als Eingabe für Funktionen immer Tabellen and Spalten, keine Arrays or willkürliche values.
Operatoren, Konstanten andvalues, die als Teil eines Ausdrucks bereitgestellt werden.
Das Ergebnis einer Funktion and deren erforderlichen Argumente. Einige DAX-Funktionen geben anstelle eines Skalars eine Tabelle zurück and müssen in eine Funktion eingeschlossen werden, die die Tabelle auswertet and einen Skalar zurückgibt. Handelt es sich jedoch um eine Tabelle mit einer einzelnen Spalte und einer einzelnen Zeile, wird sie als Skalar-value behandelt.
Die meisten DAX-Funktionen erfordern ein or mehrere Argumente, dabei kann es sich um Tabellen, Spalten, Ausdrücke andvalues handeln. Einige Funktionen, wie etwa PI, erfordern jedoch not Argumente, sondern Klammern zur Angabe des NULL-Arguments. Sie müssen z. B. immer PI(), notPIeingeben. Sie können Funktionen auch in andere Funktionen schachteln.
Ausdrücke: Ein Ausdruck kann eines orall der folgenden Elemente enthalten: Operatoren, Konstanten or Verweise auf Spalten.
Die folgenden Formeln sind beispielsweise all zulässig:
Formel | Ergebnis |
---|---|
= 3 |
3 |
= "Sales" |
Umsatz |
= 'Sales'[Amount] |
If Sie diese Formel in der Tabelle „Umsätze“ verwenden, erhalten Sie den value der Spalte „Betrag“ für die aktuelle Zeile. |
= (0.03 *[Amount]) =0.03 * [Amount] |
Drei Prozent des value in der Spalte „Betrag“ der aktuellen Tabelle. Obwohl diese Formel zur calculate eines Prozentsatzes verwendet werden kann, wird das Ergebnis not als Prozentzahl angezeigt, wenn Sie die Tabelle entsprechend formatieren. |
= PI() |
Der value der Konstante pi. |
Formeln können sich je nach Verwendung unterschiedlich verhalten. Beachten Sie daher immer den Kontext and die related der Daten in der Formel zu anderen Daten, die möglicherweise in der Berechnung verwendet werden.
Benennungsanforderungen
Häufig contains ein Datenmodell mehrere Tabellen. Die Tabellen and ihre Spalten umfassen eine gemeinsame Datenbank, die in der In-Memory-Analyse-Engine (VertiPaq) gespeichert ist. In dieser Datenbank müssen all Tabellen eindeutige Namen haben. Die Namen von Spalten müssen auch innerhalb jeder Tabelle eindeutig sein. Bei All Objektnamen wird die Groß-/Kleinschreibung nicht beachtet. So stellen etwa die Namen UMSÄTZEandUmsätze dieselbe Tabelle dar.
Jede Spalte andmeasure, die Sie einem vorhandenen Datenmodell hinzufügen, muss zu einer bestimmten Tabelle gehören. Dabei geben Sie die Tabelle, die die Spalte contains, entweder implizit an, wenn Sie eine berechnete Spalte in einer Tabelle erstellen, or explizit, wenn Sie measureand erstellen und den Namen der Tabelle angeben, in der die measure-Definition gespeichert werden soll.
Wenn Sie eine Tabelle or Spalte als Eingabe für eine Funktion verwenden, muss der Spaltenname immer qualifiziert werden. 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,
VALUES
Als Argument für die Funktionen,
ALL
orALLEXCEPT
In einem filter-Argument für die Funktionen,
CALCULATE
orCALCULATETABLE
Als Argument für die Funktion,
RELATEDTABLE
Als Argument für jede time-Intelligenzfunktion
Ein nicht qualifizierter Spaltenname besteht nur aus dem in eckigen Klammern eingeschlossenen Spaltennamen. Beispiel: [Umsatzbetrag]. Sie können beispielsweise den nicht qualifizierten Spaltennamen verwenden, wenn Sie aus derselben Zeile der aktuellen Tabelle auf einen Skalar-value verweisen.
If ein Tabellenname Leerzeichen, reservierte Schlüsselwörter oder unzulässige or-Zeichen contains, müssen Sie den Tabellennamen in einfache Anführungszeichen einschließen. Tabellennamen müssen außerdem in Anführungszeichen gesetzt werden, if der Name contains Zeichen außerhalb des alphanumerischen ANSI-Zeichen-range, unabhängig davon, ob Ihr Gebietsschema den Zeichensatz unterstützt ornot. if Sie z. B. eine Arbeitsmappe öffnen, die Tabellennamen in kyrillischen Zeichen contains, wie etwa „Таблица“, muss der Tabellenname auch dann in Anführungszeichen eingeschlossen werden, even er not 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, if sie Leerzeichen, andere Sonderzeichen or nicht englische alphanumerische Zeichen enthalten.
Measures
Measure-Namen müssen immer in eckige Klammern gesetzt werden.
Measure-Namen können Leerzeichen enthalten.
Jeder measure-Name muss innerhalb eines Modells eindeutig sein. Wird auf ein vorhandenes measure verwiesen, ist die Angabe des Tabellennamens vor dem measure-Namen daher optional. Wenn Sie jedoch eine measure erstellen, müssen Sie immer eine Tabelle angeben, in der die measure Definition 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.
Im Allgemeinen können Sie auf Spalten verweisen, ohne auf die Basistabelle verweisen zu müssen, zu der sie gehören, except es liegt möglicherweise ein Namenskonflikt vor, der gelöst werden muss, or bei bestimmten Funktionen, die vollqualifizierte Spaltennamen benötigen.
Reservierte Schlüsselwörter
If der von Ihnen gewählte Tabellenname einem für Analysis Services reservierten Schlüsselwort, entspricht, wird ein error ausgelöst, and Sie müssen die Tabelle umbenennen. if der Objektname jedoch in eckige Klammern (für Spalten) or Anführungszeichen (für Tabellen) gesetzt ist, können Sie darin Schlüsselwörter verwenden.
Anmerkung
Anführungszeichen können je nach Anwendung durch mehrere verschiedene Zeichen dargestellt werden. If Sie eine Formel aus einem externen Dokument or einer Webseite den einfügen, überprüfen Sie den ASCII-Code des Zeichens, das für öffnende and schließende Anführungszeichen verwendet wird, und vergewissern Sie sich, dass diese identisch sind. Andernfalls kann DAX die Symbole möglicherweise nicht als Anführungszeichen erkennen, wodurch der Verweis ungültig wird.
Sonderzeichen
Die folgenden Zeichen and Zeichentypen sind in Tabellen-, Spalten- oder or-Namen not zulässig:
Voran- or nachgestellte Leerzeichen, sofern diese nicht in Trennzeichen, eckige Klammern or einzelne Apostrophe eingeschlossen werden.
Steuerzeichen
Die folgenden Zeichen, die in Objektnamen not zulässig sind:
.,;':/\\*|?&%$!+=()[]{}<>
Beispiele für Objektnamen
Die folgende Tabelle enthält Beispiele für einige Objektnamen:
Objekttypen | Beispiele | Kommentieren |
---|---|---|
Tabellenname | Umsatz | If der Tabellenname not Leerzeichen or andere Sonderzeichen enthält, muss der Name not in Anführungszeichen eingeschlossen werden. |
Tabellenname | 'Umsätze Kanada' | If der Name Leerzeichen, Tabstopps or andere Sonderzeichencontains, müssen Sie den Namen in einfache Anführungszeichen einschließen. |
Vollqualifizierter Spaltenname | Umsätze[Betrag] | Der Tabellenname wird dem Spaltennamen vorangestellt and der Spaltenname in eckige Klammern eingeschlossen. |
Vollqualifizierter measure-Name | Umsatz[Gewinn] | Der Tabellenname wird dem measure-Namen vorangestellt and der measure-Name ist in eckige 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. Nicht qualifizierte Namen können in Kontexten wie etwa Formeln in einer berechneten Spalte innerhalb derselben Tabelle or in einer Aggregationsfunktion zur Überprüfung derselben Tabelle verwendet werden. |
Vollqualifizierte Spalte in Tabelle mit Leerzeichen | 'Umsätze Kanada'[Betrag] | Der Tabellenname contains Leerzeichen und muss in einfache Anführungszeichen eingeschlossen werden. |
Weitere Einschränkungen
Die für eine Funktion erforderliche Syntax and der Typ des Vorgangs, der ausgeführt wird, variieren je nach Funktion erheblich. Die folgenden Regeln gelten jedoch für all Formeln and Ausdrücke:
Mit DAX-Formeln and -Ausdrücken können keine einzelnen values in einer Tabelle geändert or eingefügt werden.
Sie können keine berechneten Zeilen mithilfe von DAX erstellen. Es können nur berechnete Spalten and Measures erstellt werden.
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 values als Eingabe für andere Funktionen, die eine Tabelle als Eingabe erfordern.
DAX-Operatoren and -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 and Verwendung |
---|---|
Klammeroperator | () Rangfolge and Gruppierung von Argumenten |
Arithmetische Operatoren | + (Addition)- (Subtraktion)* (Multiplikation)/ (Division)^ (Potenzierung) |
Vergleichsoperatoren | = (ist gleich)> (größer als)< (kleiner als)>= (größer als or gleich)<= (kleiner als or gleich)<> (not gleich) |
Operator für Textverkettung | & (Verkettung) |
Logikoperatoren | && (and)|| (or) |
Datentypen
Sie müssen den Datentyp einer Spalte orvalue, die Sie in einer DAX-Formel verwenden, not umwandeln, convert or anderweitig angeben. Wenn Sie Daten in einer DAX-Formel verwenden, identifiziert DAX automatisch die Datentypen in Spalten, auf die verwiesen wird, and die Datentypen der von Ihnen eingegebenen values, and anschließend werden diese ggf. implizit konvertiert, um den angegebenen Vorgang abzuschließen.
if Sie beispielsweise versuchen, einem datevalue eine Zahl hinzuzufügen, interpretiert die Engine den Vorgang im Kontext der Funktion andconvert die Zahlen in einen gemeinsamen Datentyp, and stellt das Ergebnis dann im vorgesehenen format (date) dar.
Es können jedoch nicht alle values erfolgreich konvertiert werden. If ein valueor eine Spalte einen Datentyp aufweist, der mit dem aktuellen Vorgang nicht kompatibel ist, gibt DAX einen error zurück. Außerdem verfügt DAX not über Funktionen, mit denen Sie den Datentyp vorhandener Daten, die Sie in ein Datenmodell importiert haben, explizit ändern, convert or umwandeln können.
Wichtig
DAX unterstützt not die Verwendung des Variant-Datentyps. Wenn Sie also Daten in ein Datenmodell laden or importieren, wird für die Daten in den einzelnen Spalten immer ein konsistenter Datentyp erwartet.
Einige Funktionen geben Skalar-values zurück (darunter Zeichenfolgen), andere Zahlen (sowohl ganze als and reelle Zahlen or Datums- and Zeitangaben). Die für die einzelnen Funktionen erforderlichen Datentypen werden unter DAX-Funktionen beschrieben.
Sie können Tabellen mit mehreren Datenspalten and -zeilen als Argument für eine Funktion verwenden. Einige Funktionen geben auch Tabellen zurück, die im Arbeitsspeicher gespeichert and als Argumente für andere Funktionen verwendet werden können.
Date and time
DAX speichert dateandtimevalues mithilfe des von Microsoft SQL Server verwendeten Datetime-Datentyps. Datetime format verwendet eine Gleitkommazahl, wobei Datevalues dem ganzzahligen Teil entsprechen, der die Anzahl der Tage seit dem 30. Dezember 1899 darstellt. Timevalues entsprechen dem Dezimalteil eines datevalue, wobei Stunden, Minuten and Sekunden durch Dezimalstellen eines day dargestellt werden. DAX date and time-Funktionen convert Argumente implizit in den datetime-Datentyp.
Anmerkung
Der exact maximale DateTime-value, der von DAX unterstützt wird, ist der 31. Dezember 9999 00:00:00.
Date and time-Literal
Ab Power BI Desktop-Version August 2021 können DAXdateand- und Datum/Uhrzeit-values im formatdt"YYYY-MM-DD"
, dt"YYYY-MM-DDThh:mm:ss"
, ordt"YYYY-MM-DD hh:mm:ss"
als Literal angegeben werden. Bei Angabe als Literal ist die Verwendung der Funktionen DATE, TIME, DATEVALUE, TIMEVALUE im Ausdruck not erforderlich.
Im folgenden Ausdruck wird beispielsweise mit den Funktionen DATEandTIME nach OrderDate filter:
EVALUATE
FILTER (
FactInternetSales,
[OrderDate] > (DATE(2015,1,9) + TIME(2,30,0)) &&[OrderDate] < (DATE(2015,12,31) + TIME(11,59,59))
)
Derselbe filter-Ausdruck kann als Literal angegeben werden:
EVALUATE
FILTER (
FactInternetSales,
[OrderDate] > dt"2015-1-9T02:30:00" && [OrderDate] < dt"2015-12-31T11:59:59"
)
Anmerkung
Das DAXdateand-Literalformat-Format wird not in all-Versionen von Power BI Desktop, Analysis Services andPower Pivot in Excel unterstützt. Neue and aktualisierte DAX-Funktionen werden in der Regel first in Power BI Desktop eingeführt and später in Analysis Services andPower Pivot in Excel integriert.