Del via


DAX operatorer

Dataanalyseuttrykket (DAX) bruker operatorer til å opprette uttrykk som sammenligner values, utfører aritmetiske beregninger, or arbeide med strenger.

Operatortyper

Det finnes fire forskjellige typer beregningsoperatorer: aritmetisk, sammenligning, tekstsammenkjeding, and logisk.

Aritmetiske operatorer

Hvis du vil utføre grunnleggende matematiske operasjoner, for eksempel addisjon, subtraksjon, or multiplikasjon; kombinere tall; and produsere numeriske resultater, bruker du følgende aritmetiske operatorer.

Aritmetisk operator Betydning Eksempel
+ (pluss sign) Addisjon 3+3
- (minus sign) Subtraksjon orsign 3-1-1
* (stjerne) Multiplikasjon 3*3
/ (skråstrek) Divisjon 3/3
^ (caret) Eksponensiering 16^4

Notat

Pluss-sign kan fungere både som en binæroperatorand som en . En binær operator krever tall på begge sider av operatoren and utfører tillegg. Når du bruker values i en DAX formel på begge sider av binæroperatoren, prøver DAX å gi values numeriske datatyper if de allerede er not tall. Derimot kan den uary operatoren brukes på alle typer argumenter. Plusssymbolet påvirker not typen orvalueand ignoreres ganske enkelt, mens minusoperatoren oppretter en negativ value, if brukt på en numerisk value.

Sammenligningsoperatorer

Du kan sammenligne to values med følgende operatorer. Når to values sammenlignes ved hjelp av disse operatorene, er resultatet en logisk value, enten TRUEorFALSE.

Sammenligningsoperator Betydning Eksempel
= Lik [Region] = "USA"
== Nøyaktig lik [Område] == "USA"
> Større enn [Salg Date] > "Jan 2009"
< Mindre enn [Salg Date] < "1. januar 2009"
>= Større enn or lik [Beløp] >= 20000
<= Mindre enn or lik [Beløp] <= 100
<> Not lik [Region] <> "USA"

All sammenligningsoperatorer except == behandler BLANK som lik tall 0, tom streng "", DATE(1899, 12, 30), orFALSE. Som et resultat vil [Kolonne] = 0 være true når value av [Kolonne] er enten 0 orBLANK. I motsetning er [Kolonne] == 0 true bare når value av [Kolonne] er 0.

Tekstkoblingsoperator

Bruk ampersand (&) til å koble sammen, orconcatenate, to or flere tekststrenger for å produsere ett enkelt stykke tekst.

Tekstoperator Betydning Eksempel
& (ampersand) Kobler sammen, or kjeder sammen, to values for å produsere én kontinuerlig tekst value [Region] & ", " & [City]

Logiske operatorer

Bruk logiske operatorer (&&) and (||) til å kombinere uttrykk for å produsere ett enkelt resultat.

Tekstoperator Betydning Eksempler
&&(dobbel ampersand) Oppretter en AND betingelse mellom to uttrykk som hver har et boolsk resultat. If begge uttrykkene returnerer TRUE, returnerer kombinasjonen av uttrykkene også TRUE; Ellers returnerer kombinasjonen FALSE. ([Region] = "France") && ([BikeBuyer] = "yes"))
|| (dobbeltrørsymbol) Oppretter en OR betingelse mellom to logiske uttrykk. If begge uttrykkene returnerer TRUE, blir resultatet TRUE; bare når begge uttrykkene er FALSE er resultatet FALSE. (([Region] = "France") || ([BikeBuyer] = "yes"))
IN Oppretter en logisk OR betingelse mellom hver rad som sammenlignes med en tabell. Obs! Tabellkonstruktørsyntaksen bruker klammeparenteser. 'Product'[Color] IN { "Red", "Blue", "Black" }

Operatorer and prioritetsrekkefølge

I noen tilfeller kan rekkefølgen beregningen utføres i, påvirke Retur-value; Derfor er det viktig å forstå hvordan rekkefølgen bestemmes and hvordan du kan endre rekkefølgen for å oppnå de ønskede resultatene.

Beregningsrekkefølge

Et uttrykk evaluerer operatorene andvalues i en bestemt rekkefølge. All uttrykk begynner alltid med en lik sign (=). Likhetstegnet sign indikerer at de etterfølgende tegnene utgjør et uttrykk.

Etter lik sign er elementene som skal beregnes (operandene), som er atskilt med beregningsoperatorer. Uttrykk leses alltid fra left til right, men rekkefølgen elementene grupperes i, kan styres til en viss grad ved hjelp av parenteser.

Operatorprioritet

If du kombinerer flere operatorer i én enkelt formel, ordnes operasjonene i henhold til tabellen nedenfor. If operatorene har lik prioritet value, blir de bestilt fra left til right. For eksempel, if et uttrykk contains både en multiplikasjon and divisjonsoperator, evalueres de i den rekkefølgen de vises i uttrykket, fra left til right.

Operatør Beskrivelse
^ Eksponensiering
Sign (for eksempel –1)
* and / Multiplikasjon and divisjon
+ and Addisjon and subtraksjon
& Kobler sammen to tekststrenger (sammenkobling)
=,==,<,>,<=,>=,<>,IN Sammenligning
NOT NOT (unary operator)

Bruke parenteser til å kontrollere beregningsrekkefølgen

Hvis du vil endre rekkefølgen på evalueringen, bør du omslutte den delen av formelen som må beregnes first. Formelen nedenfor produserer for eksempel 11 fordi multiplikasjon beregnes før tillegg. Formelen multipliserer 2 med 3, and legger deretter til 5 i resultatet.

=5+2*3

I motsetning if du bruker parenteser til å endre syntaksen, endres rekkefølgen slik at 5 and 2 legges sammen, and resultatet multiplisert med 3 for å produsere 21.

=(5+2)*3

I eksemplet nedenfor tvinger parentesene rundt first delen av formelen beregningen til å evaluate uttrykket (3 + 0.25)firstand deretter divide resultatet av resultatet av uttrykket, (3 - 0.25).

=(3 + 0.25)/(3 - 0.25)

I eksemplet nedenfor brukes eksponentiasjonsoperatoren first, i henhold til regler for prioritet for operatorer, and deretter brukes operatoren sign. Resultatet for dette uttrykket er -4.

=-2^2

Hvis du vil sikre at operatoren sign brukes på den numeriske valuefirst, kan du bruke parenteser til å kontrollere operatorer, som vist i eksemplet nedenfor. Resultatet for dette uttrykket er 4.

= (-2)^2

Forenlighet

DAX håndterer enkelt and ulike datatyper, omtrent som Microsoft Excel. Den underliggende beregningsmotoren er imidlertid basert på SQL Server Analysis Services and gir flere avanserte funksjoner i et relasjonsdatalager, inkludert rikere støtte for dateandtime typer. I noen tilfeller kan derfor resultatene av beregninger or virkemåten til funksjoner not være den samme som i Excel. Videre støtter DAX flere datatyper enn Excel. Denne delen beskriver de viktigste forskjellene.

Tvinge datatyper av operander

Generelt sett bør de to operandene på leftandright sidene av en hvilken som helst operator være den samme datatypen. Men if datatypene er forskjellige, vil DAXconvert dem til en felles datatype for å bruke operatoren i noen tilfeller:

  1. Begge operandene konverteres til den største mulige felles datatypen.
  2. Operatoren brukes, if mulig.

Anta for eksempel at du har to tall du vil kombinere. Ett tallresultater fra en formel, for eksempel =[Price] * .20, and resultatet kan inneholde mange desimaler. Det andre tallet er et heltall som er angitt som en streng value.

I dette tilfellet vil DAXconvert begge tallene til reelle tall i en numerisk format, ved hjelp av den største numeriske format som kan lagre begge typer tall. Deretter bruker DAX multiplikasjonen.

Avhengig av datatypekombinasjonen kan typekontensjon not brukes for sammenligningsoperasjoner. Hvis du vil ha en fullstendig liste over datatyper som støttes av DAX, kan du se Datatyper som støttes i tabellmodellerandDatatyper i Power BI Desktop-.

Heltall, Reelt tall, Currency, Date/timeandBlank regnes som numerisk for sammenligningsformål. Blank evalueres til null når du utfører en sammenligning. Følgende kombinasjoner av datatyper støttes for sammenligningsoperasjoner.

Left sidedatatype Right sidedatatype
Numerisk Numerisk
Boolsk Boolsk
Streng Streng

Andre sammenligninger av blandet datatype returnerer en error. En formel som ="1" > 0 returnerer for eksempel en error som sier at DAX sammenligningsoperasjoner støtter not sammenligning av values av typen Tekst med values av typen Heltall.

Datatyper som brukes i DAX Datatyper som brukes i Excel
Tall (I8, R8) Tall (R8)
Streng Streng
Boolsk Boolsk
DateTime Variant
Currency Currency

Forskjeller i prioritetsrekkefølge

Prioritetsrekkefølgen for operasjoner i DAX formler er i utgangspunktet den samme som den som brukes av Microsoft Excel, men noen Excel-operatorer støttes not, for eksempel prosent. Områder støttes også not.

Når du kopierer and lime inn formler fra Excel, må du derfor passe på å se nøye gjennom formelen, ettersom noen operatorer or elementer i formlene kan not være gyldige. Når det er tvil om rekkefølgen operasjonene utføres i, anbefales det at du bruker parenteser til å kontrollere operasjonsrekkefølgen and fjerne tvetydighet om resultatet.

DAX syntaksDAX parameternavn