Skrive DAX-formler
Hver modellberegningstype, beregnede tabell, beregnede kolonne eller mål blir definert av navnet, etterfulgt av likhetstegnet (=), som deretter etterfølges av en DAX-formel. Bruk følgende mal for å opprette en modellberegning:
<Calculation name> = <DAX formula>
Definisjonen av den beregnede forsendelsesdatotabellen som dupliserer datotabelldataene , er for eksempel:
Ship Date = 'Date'
En DAX-formel består av uttrykk som returnerer et resultat. Resultatet er enten et tabellobjekt eller en skalarverdi. Beregnede tabellformler må returnere et tabellobjekt. beregnede kolonne- og målformler må returnere en skalarverdi (enkeltverdi).
Formler blir satt sammen ved å bruke:
- DAX-funksjoner
- DAX-operatorer
- Referanse til modellobjekter
- Konstante verdier, for eksempel tallet 24 eller litteralteksten «FY» (forkortelse for regnskapsåret)
- DAX-variabler
- Mellomrom
Tips
Når du skriver inn DAX-formler i Power BI Desktop, har du fordelen av IntelliSense. IntelliSense er et hjelpemiddel for kodefullføring som viser funksjoner og modellressurser. Når du velger en DAX-funksjon, gir det deg også en definisjon og en beskrivelse. Vi anbefaler at du bruker IntelliSense slik at du raskt kan bygge nøyaktige formler.
DAX-funksjoner
I likhet med Microsoft Excel er DAX et funksjonelt språk, noe som betyr at formler er avhengige av funksjoner for å oppnå bestemte mål. DAX-funksjoner har vanligvis argumenter som tillater overføring av variabler. Formler kan bruke mange funksjonskall, og nester ofte funksjoner i andre funksjoner.
I en formel må funksjonsnavn etterfølges av parenteser. Variablene blir angitt i parentesene.
Obs!
Noen funksjoner tar ikke argumenter, eller argumenter er valgfrie.
Arbeid med DAX-funksjoner blir beskrevet senere i denne modulen.
DAX-operatorer
Formler er også avhengige av operatorer som kan utføre aritmetiske beregninger, sammenligne verdier, arbeide med strenger eller testbetingelser.
DAX-operatorer blir beskrevet mer detaljert senere i denne modulen.
Referanse til modellobjekter
Formler kan bare referere til tre typer modellobjekter: tabeller, kolonner eller mål. En formel kan ikke referere til et hierarki eller et hierarkinivå. (Husk at et hierarkinivå er basert på en kolonne, så formelen din kan ikke referere til kolonner på hierarkinivå.)
Tabellreferanser
Når du refererer til en tabell i en formel, er tabellnavnet offisielt omsluttet av enkle anførselstegn. Legg merke til at datotabellen er omsluttet av enkle anførselstegn i følgende beregnede tabelldefinisjon.
Ship Date = 'Date'
Enkle anførselstegn kan likevel utelates når begge av følgende betingelser er oppfylte:
- Tabellnavnet har ikke innebygde mellomrom.
- Tabellnavnet er ikke et reservert ord som brukes av DAX. Alle navn på DAX-funksjoner og -operatorer er reserverte ord Dato er et DAX-funksjonsnavn, som forklarer hvorfor, når du refererer til en tabell kalt Dato, at du må omslutte den i enkle anførselstegn.
I følgende beregnede tabelldefinisjon er det mulig å utelate de enkle anførselstegnene når du refererer til flyplasstabellen :
Arrival Airport = Airport
Kolonnereferanser
Når du refererer til en kolonne i en formel, må kolonnenavnet stå i hakeparenteser. Du kan eventuelt ha tabellnavnet foran. For eksempel refererer følgende måldefinisjon til kolonnen Salgsbeløp.
Revenue = SUM([Sales Amount])
Fordi kolonnenavn er unike i en tabell, men ikke nødvendigvis unike i modellen, kan du skille ut kolonnereferansen ved å ha tabellnavnet foran. Denne entydige kolonnen er kjent som en fullstendig kvalifisert kolonne. Noen DAX-funksjoner krever overføring i fullt kvalifiserte kolonner.
Tips
For å forbedre lesbarheten i formlene dine, anbefaler vi at du alltid setter tabellnavnet til kolonnereferansen foran.
Det forrige eksempelet på måldefinisjon kan skriver på nytt som:
Revenue = SUM(Sales[Sales Amount])
Målreferanse
Når du refererer til et mål i en formel, for eksempel kolonnenavnreferanser, må målnavnet stå i hakeparenteser. For eksempel refererer følgende måldefinisjon til målene Omsetning og Kostnader.
Profit = [Revenue] - [Cost]
Hvis du er en DAX-nybegynner, kan det faktum at kolonne- og målreferanser alltid er omsluttet av hakeparenteser forårsake forvirring når du prøver å lese en formel. Etter hvert som du blir dyktig med det grunnleggende i DAX, kan du imidlertid bestemme hvilken type objekt det er, fordi i DAX-formler brukes kolonner og mål på forskjellige måter.
Tips
Det er mulig å sette tabellnavnet foran målreferansen. Mål er imidlertid et modellnivå-objekt. Selv om de er tilordnet til en hjemmetabell, er det bare en kosmetisk relasjon for å organisere mål logisk i Felt-ruten.
Vi anbefaler derfor at du alltid setter tabellnavnet til kolonnereferansen foran. Omvendt er sant for mål: Vi anbefaler at du aldri setter tabellnavnet foran målreferansen.
For mer informasjon kan du se Kolonne- og målreferanse.
DAX-variabler
Formler kan deklarere DAX-variabler for å lagre resultater.
Hvordan og når du skal bruke DAX-variabler blir beskrevet senere i denne modulen.
Mellomrom
Mellomrom refererer til tegn du kan bruke til å formatere formler på en måte som er rask og enkel å forstå. Mellomromstegn inkluderer:
- Mellomrom
- Tabulatortegn
- Returtegn
Det er valgfritt med mellomrom, og det endrer ikke formellogikken eller har negativ innvirkning på ytelsen. Vi anbefaler på det sterkeste at du tar i bruk en formatstil og bruker den konsekvent, og at du vurderer følgende anbefalinger:
- Bruk av mellomrom mellom operatorer.
- Bruk av tabulatortegn til å rykke inn nestede funksjonskall.
- Bruk av returtegn for å skille funksjonsargumentene, spesielt når de er for lange til å få plass på en enkelt linje. Formatering på denne måten gjør det enklere å feilsøke, spesielt når formelen mangler en parentes.
- Feil på siden av for mye mellomrom enn for lite.
Tips
Trykk på SKIFT+ENTER for å skrive inn et returtegn på formellinjen. Hvis du trykker enter alene, utføres formelen.
Vurder følgende måldefinisjon som er skrevet på en enkelt linje, og som inkluderer fem DAX-funksjonskall:
Revenue YoY % = DIVIDE([Revenue] - CALCULATE([Revenue], SAMEPERIODLASTYEAR('Date'[Date])), CALCULATE([Revenue], SAMEPERIODLASTYEAR('Date'[Date])))
Følgende eksempel er den samme måldefinisjonen, bare at den er formatert, noe som bidrar til å gjøre den enklere å lese og forstå:
Revenue YoY % =
DIVIDE(
[Revenue]
- CALCULATE(
[Revenue],
SAMEPERIODLASTYEAR('Date'[Date])
),
CALCULATE(
[Revenue],
SAMEPERIODLASTYEAR('Date'[Date])
)
)
Prøv å formatere målet på egenhånd. Åpne Adventure Works DW 2020 M02.pbix Power BI Desktop-filen, og utvid deretter Salg-tabellen i Felter-ruten, og velg deretter målet Omsetning per år i prosent. Bruk tabulator- og returtegn på formellinjen for å gi samme resultat som det forrige eksemplet. Når du legger til et returtegn, må du huske å trykke SKIFT+ENTER.
Denne måldefinisjonen kan forbedres ytterligere for lesbarhet og ytelse, som vil bli forklart senere i denne modulen.
Tips
DAX-formatering er et utmerket formateringsverktøy fra en annen kilde som hjelper deg å formatere beregningene dine. Med dette verktøyet kan du lime inn beregningen og formatere den. Deretter kan du kopiere den formaterte beregningen til utklippstavlen og lime den inn igjen i Power BI Desktop.