Begivenhed
31. mar., 23 - 2. apr., 23
Den ultimative Microsoft Fabric-, Power BI-, SQL- og AI-communityledede begivenhed. 31. marts til 2. april 2025.
Tilmeld dig i dagDenne browser understøttes ikke længere.
Opgrader til Microsoft Edge for at drage fordel af de nyeste funktioner, sikkerhedsopdateringer og teknisk support.
I denne artikel beskrives syntaks and krav til DAX formeludtrykssprog.
En DAX formel starter altid med en lige sign (=
). Når er lig med sign, kan du angive et hvilket som helst udtryk, der evalueres til en skalar, or et udtryk, der kan konverteres til en skalar. Disse omfatter følgende:
En skalarkonstant or udtryk, der bruger en skalaroperator (+,-,*,/,>=,...,&&, ...
)
Referencer til kolonner or tabeller. Det DAX sprog bruger altid tabeller and kolonner som input til funktioner, aldrig en matrix or vilkårligt sæt values.
Operatorer, konstanter andvalues angivet som en del af et udtryk.
Resultatet af en funktion and de påkrævede argumenter. Nogle DAX funktioner returnerer en tabel i stedet for en skalar, and skal ombrydes i en funktion, der evaluerer tabellen and returnerer en skalar. medmindre tabellen er en enkelt kolonne, en tabel med en enkelt række, behandles den som en skalar value.
De fleste DAX funktioner kræver ét or flere argumenter, som kan omfatte tabeller, kolonner, udtryk andvalues. Nogle funktioner, f.eks. PI, kræver dog not nogen argumenter, men kræver altid parenteser for at angive null-argumentet. Du skal f.eks. altid skrive PI(), notPI. Du kan også indlejre funktioner i andre funktioner.
Udtryk. Et udtryk kan indeholde en hvilken som helst orall af følgende: operatorer, konstanter or referencer til kolonner.
Følgende er f.eks. all gyldige formler.
Formel | Resultat |
---|---|
= 3 |
3 |
= "Sales" |
salg |
= 'Sales'[Amount] |
If du bruger denne formel i tabellen Sales, får du value af kolonnen Amount i tabellen Sales for den aktuelle række. |
= (0.03 *[Amount]) =0.03 * [Amount] |
Tre procent af value i kolonnen Amount i den aktuelle tabel. Selvom denne formel kan bruges til at calculate en procentdel, vises resultatet not som en procentdel, medmindre du anvender formatering i tabellen. |
= PI() |
Konstantens valuepi. |
Formler kan fungere anderledes, afhængigt af hvordan de bruges. Du skal altid være opmærksom på konteksten and, hvordan de data, du bruger i formlen, related til andre data, der kan bruges i beregningen.
En datamodel contains ofte flere tabeller. Tilsammen udgør tabellerne and deres kolonner en database, der er gemt i VertiPaq (In-Memory Analytics Engine). I databasen skal all tabeller have entydige navne. Navnene på kolonner skal også være entydige i hver tabel. All objektnavne skelner mellem store og små bogstaver i. Navnene f.eks. SALESandSales repræsenterer den samme tabel.
Hver kolonneandmeasure du føjer til en eksisterende datamodel, skal tilhøre en bestemt tabel. Du angiver den tabel, der contains kolonnen, enten implicit, når du opretter en beregnet kolonne i en tabel, or eksplicit, når du opretter en measureand angive navnet på den tabel, hvor measure definition skal gemmes.
Når du bruger en tabel or kolonne som input til en funktion, skal du generelt kvalificere kolonnenavnet. Det fuldt kvalificerede navn på en kolonne er tabelnavnet efterfulgt af kolonnenavnet i kantede parenteser, f.eks. 'US Sales'[Products]. Der kræves altid et fuldt kvalificeret navn, når du refererer til en kolonne i følgende kontekster:
Som et argument til funktionen VALUES
Som argument for funktionerne ALL
orALLEXCEPT
I et filter argument for funktionerne CALCULATE
orCALCULATETABLE
Som et argument til funktionen RELATEDTABLE
Som et argument til en hvilken som helst time intelligence-funktion
Et ikke-kvalificeret kolonnenavn er blot navnet på kolonnen, omsluttet af kantede parenteser, f.eks. [Salgsbeløb]. Når du f.eks. refererer til en skalar value fra den samme række i den aktuelle tabel, kan du bruge det ikke-kvalificerede kolonnenavn.
If navnet på en tabel contains mellemrum, reserverede nøgleord or tegn, der ikke er tilladt, skal tabelnavnet være omsluttet af enkelte anførselstegn. Du skal også sætte tabelnavne i anførselstegn if navnet contains tegn uden for det alfanumeriske ANSI-tegn range, uanset om landestandarden understøtter tegnsættet ornot. if du f.eks. åbner en projektmappe, der contains tabelnavne skrevet med kyrilliske tegn, f.eks. 'Таблица', skal tabelnavnet være omsluttet af anførselstegn, even selvom det not indeholder mellemrum.
Bemærk
Hvis du vil gøre det nemmere at angive de fuldt kvalificerede navne på kolonner, skal du bruge funktionen Autofuldførelse i formeleditoren.
Tabelnavne kræves, når kolonnen er fra en anden tabel end den aktuelle tabel. Tabelnavne skal være entydige i databasen.
Tabelnavne skal være omsluttet af enkelte anførselstegn, if de indeholder mellemrum, andre specialtegn or alfanumeriske tegn, der ikke er engelske.
Measure navne skal altid være i kantede parenteser.
Measure navne kan indeholde mellemrum.
Hvert measure navn skal være entydigt i en model. Tabelnavnet er derfor valgfrit foran et measure navn, når der refereres til en eksisterende measure. Når du opretter en measure skal du dog altid angive en tabel, hvor measure definition gemmes.
Kolonnenavne skal være entydige i en tabels kontekst. Flere tabeller kan dog have kolonner med de samme navne (flertydige udtryk følger med tabelnavnet).
Der kan generelt refereres til kolonner uden at referere til den basistabel, de tilhører, except når der kan være en navnekonflikt for at løse or med visse funktioner, der kræver, at kolonnenavnene er fuldt kvalificerede.
If det navn, du bruger til en tabel, er det samme som et reserveret Analysis Services-nøgleord, udløses der en error, and du skal omdøbe tabellen. Du kan dog bruge nøgleord i objektnavne if objektnavnet er omsluttet af kantede parenteser (for kolonner) or anførselstegn (til tabeller).
Bemærk
Anførselstegn kan repræsenteres af flere forskellige tegn, afhængigt af programmet. If du indsætter formler fra et eksternt dokument or webside, skal du kontrollere ASCII-koden for det tegn, der bruges til at åbne and afsluttende anførselstegn, for at sikre, at de er ens. Ellers kan DAX muligvis ikke genkende symbolerne som anførselstegn, hvilket gør referencen ugyldig.
Følgende tegn and tegntyper er not gyldige i navnene på tabeller, kolonner or målinger:
Foranstillede or efterstillede mellemrum; medmindre mellemrummene er omsluttet af navneafgrænsere, kantede parenteser or enkelte apostroffer.
Styretegn
Følgende tegn, der er not gyldige i navnene på objekter:
.,;':/\\*|?&%$!+=()[]{}<>
I følgende tabel vises eksempler på nogle objektnavne:
Objekttyper | Eksempler | Kommentar |
---|---|---|
Tabelnavn | salg | If tabelnavnet not indeholder mellemrum or andre specialtegn, skal navnet not være omsluttet af anførselstegn. |
Tabelnavn | "Canada Sales" | If navnet contains mellemrum, tabulatorer or andre specialtegn, omslutter navnet med enkelte anførselstegn. |
Fuldt kvalificeret kolonnenavn | Sales[Amount] | Tabelnavnet står foran kolonnenavnet, and kolonnenavnet er omsluttet af kantede parenteser. |
Fuldt kvalificeret measure navn | Sales[Profit] | Tabelnavnet står foran det measure navn, and det measure navn er omsluttet af kantede parenteser. I visse kontekster kræves der altid et fuldt kvalificeret navn. |
Ikke-kvalificeret kolonnenavn | [Beløb] | Det ikke-kvalificerede navn er kun kolonnenavnet i kantede parenteser. Kontekster, hvor du kan bruge det ikke-kvalificerede navn, indeholder formler i en beregnet kolonne i den samme tabel, or i en sammenlægningsfunktion, der scanner over den samme tabel. |
Fuldt kvalificeret kolonne i tabel med mellemrum | 'Canada Sales'[Qty] | Tabelnavnet contains mellemrum, så det skal være omgivet af enkelte anførselstegn. |
Den syntaks, der kræves for hver funktion, and den type handling, den kan udføre, varierer meget afhængigt af funktionen. Generelt gælder følgende regler dog for all formler and udtryk:
DAX formler and udtryk kan ikke ændre or indsætte individuelle values i tabeller.
Du kan ikke oprette beregnede rækker ved hjælp af DAX. Du kan kun oprette beregnede kolonner and målinger.
Når du definerer beregnede kolonner, kan du indlejre funktioner på et hvilket som helst niveau.
DAX har flere funktioner, der returnerer en tabel. Du bruger typisk de values, der returneres af disse funktioner, som input til andre funktioner, som kræver en tabel som input.
I følgende tabel vises de operatorer, der understøttes af DAX. Du kan få flere oplysninger om syntaksen for individuelle operatorer under DAX operatorer.
Operatortype | Symbol and brug |
---|---|
Parentesoperator |
() prioriteret rækkefølge and gruppering af argumenter |
Aritmetiske operatorer |
+ (tilføjelse)- (subtraktion)* (multiplikation)/ (division)^ (eksponentiering) |
Sammenligningsoperatorer |
= (lig med)> (større end)< (mindre end)>= (større end or lig med)<= (mindre end or lig med)<> (not lig med) |
Operatoren Tekstsammenkædning |
& (sammenkædning) |
Logiske operatorer |
&& (and)|| (or) |
Du skal notconvertor ellers angive datatypen for en kolonne orvalue, som du bruger i en DAX formel. Når du bruger data i en DAX formel, identificerer DAX automatisk datatyperne i kolonner, der refereres til, and af de values, du skriver i, and udfører implicitte konverteringer, hvor det er nødvendigt for at fuldføre den angivne handling.
if du f.eks. forsøger at føje et tal til en datevalue, fortolker programmet handlingen i funktionens kontekst, andconvert tallene til en fælles datatype, and derefter præsentere resultatet i den tilsigtede format, en date.
Der er dog nogle begrænsninger for values, der kan konverteres korrekt. If en valueor en kolonne har en datatype, der ikke er kompatibel med den aktuelle handling, returnerer DAX en error. DAX indeholder not også funktioner, som du kan bruge til eksplicit at ændre convertor konvertere datatypen for eksisterende data, som du har importeret til en datamodel.
Vigtigt
DAX understøtter not brugen af datatypen variant. Når du indlæser or importere data til en datamodel, forventes det derfor, at dataene i hver kolonne generelt er af en ensartet datatype.
Nogle funktioner returnerer skalar values, herunder strenge, mens andre funktioner arbejder med tal, både heltal and reelle tal, or datoer and klokkeslæt. Den datatype, der kræves for hver funktion, er beskrevet i afsnittet DAX funktioner.
Du kan bruge tabeller, der indeholder flere kolonner, and flere rækker med data som argument til en funktion. Nogle funktioner returnerer også tabeller, der er gemt i hukommelsen, and kan bruges som argumenter til andre funktioner.
DAX gemmer dateandtimevalues ved hjælp af datatypen datetime, der bruges af Microsoft SQL Server. Datetime-format bruger et flydende tal, hvor Datevalues svarer til heltalsdelen, der repræsenterer antallet af dage siden 30. december 1899. Time values svarer til decimaldelen af en datevalue, hvor Timer, minutter and sekunder repræsenteres af decimalbrøker af en day. DAX date and time funktioner convert implicit argumenter til datatypen datetime.
Bemærk
Den exact maksimale DateTime-value, der understøttes af DAX, er den 31. december 9999 kl. 00:00:00.
Fra og med august 2021-versionen af Power BI Desktop kan DAXdateand datetime-values angives som en konstant i formatdt"YYYY-MM-DD"
, dt"YYYY-MM-DDThh:mm:ss"
, ordt"YYYY-MM-DD hh:mm:ss"
. Når det er angivet som en konstant, er det not nødvendigt at bruge funktionerne DATE, TIME, DATEVALUETIMEVALUE i udtrykket .
Følgende udtryk bruger f.eks. DATEandTIME funktioner til at filter på OrderDate:
EVALUATE
FILTER (
FactInternetSales,
[OrderDate] > (DATE(2015,1,9) + TIME(2,30,0)) &&[OrderDate] < (DATE(2015,12,31) + TIME(11,59,59))
)
Det samme filter udtryk kan angives som en konstant:
EVALUATE
FILTER (
FactInternetSales,
[OrderDate] > dt"2015-1-9T02:30:00" && [OrderDate] < dt"2015-12-31T11:59:59"
)
Bemærk
Den DAXdateand konstant-format, der skrives datetime, understøttes not i all versioner af Power BI Desktop, Analysis Services andPower Pivot i Excel. Nye and opdaterede DAX funktioner introduceres typisk first i Power BI Desktop and senere inkluderet i Analysis Services andPower Pivot i Excel.
Begivenhed
31. mar., 23 - 2. apr., 23
Den ultimative Microsoft Fabric-, Power BI-, SQL- og AI-communityledede begivenhed. 31. marts til 2. april 2025.
Tilmeld dig i dag