DAX-operaattoreiden käyttäminen
DAX-kaavasi voivat operaattoreiden avulla luoda lausekkeita, jotka suorittavat aritmeettisia laskutoimituksia, vertailevat arvoja, toimivat merkkijonojen kanssa tai testaavat ehtoja.
Vihje
Monet DAX-operaattorit ja käsittelyjärjestys ovat samoja kuin Excelissä.
Aritmeettiset operaattorit
Seuraavassa taulukossa on luettelo aritmeettisista operaattoreista.
Operaattori | Kuvaus |
---|---|
+ | Yhteenlasku |
- | Vähennyslasku |
* | Kertolasku |
/ | Jakolasku |
^ | Potenssiin korotus |
Muista, että kun jaat kaksi lauseketta ja nimittäjä voi palauttaa nollan tai BLANK, DAX-funktion DIVIDE
käyttö on tehokkaampaa ja turvallisempaa.
Vertailuoperaattorit
Seuraavassa taulukossa on luettelo vertailuoperaattoreista, joita käytetään kahden arvon vertailuun. Tulos on joko TRUE tai FALSE.
Operaattori | Kuvaus |
---|---|
= | Yhtä suuri kuin |
== | Täsmälleen yhtä suuri kuin |
> | Suurempi kuin |
< | Pienempi kuin |
>= | Suurempi tai yhtä suuri kuin |
<= | Pienempi tai yhtä suuri kuin |
<> | Eri suuri kuin |
Kaikki vertailuoperaattorit paitsi täsmälleen yhtä suuri kuin (==) käsittelevät BLANK-arvoa nollana, tyhjänä merkkijonona (""), päivämääränä 30.12.1899 tai FALSE-arvona. Se tarkoittaa, että lauseke [Revenue] = 0
on TRUE, kun kohteen arvo [Revenue]
on joko nolla tai TYHJÄ. Sen sijaan arvo on TRUE vain, [Revenue] == 0
kun :n [Revenue]
arvo on nolla.
Tekstin yhdistämisoperaattori
Et-merkin (&) avulla voidaan yhdistää kaksi tekstiarvoa yhdeksi jatkuvaksi tekstiarvoksi. Katso esimerkiksi seuraavaa lasketun sarakkeen määritystä:
Model Color = 'Product'[Model] & "-" & 'Product'[Color]
Loogiset operaattorit
Käytä loogisia operaattoreita yhdistämään lausekkeita, jotka tuottavat yksittäisen tuloksen. Seuraavassa taulukossa on luettelo kaikista loogisista operaattoreista.
Operaattori | Kuvaus |
---|---|
&& | Luo kahden totuusarvon tuottavan lausekkeen välille AND-ehdon. Jos molemmat lausekkeet palauttavat arvon TRUE, myös lausekkeiden yhdistelmä palauttaa arvon TRUE. Muussa tapauksessa yhdistelmä palauttaa arvon FALSE. |
|| (tuplaputki) | Luo TAI-ehdon kahden loogisen lausekkeen välille. Jos jompikumpi lauseke palauttaa arvon TRUE, tulos on TRUE. Vain kun kummankin lausekkeen arvo on FALSE, tulos on FALSE. |
IN | Luo loogisen OR-ehdon kunkin taulukkoon verrattavan rivin välille. Huomautus: Taulukon konstruktorin syntaksissa käytetään hakasulkeita. |
NOT | Muuttaa ehtolausekkeen tilan päinvastaiseksi (tilasta FALSE tilaksi TRUE ja päinvastoin). |
Esimerkki loogisen operaattorin IN
käytöstä on ANZ Revenue - mittarin määritelmä, jossa DAX-funktiota käytetään CALCULATE
valvomaan tiettyä suodatinta kahdessa maassa: Australiassa ja Uudessa-Seelannissa.
Huomautus
Tutustut tehokkaaseen CALCULATE
funktioon, kun opit muokkaamaan suodatinkontekstia.
ANZ Revenue =
CALCULATE(
[Revenue],
Customer[Country-Region] IN {
"Australia",
"New Zealand"
}
)
Operaattoreiden käsittelyjärjestys
Kun DAX-kaava sisältää useita operaattoreita, DAX määrittää sääntöjen avulla arviointijärjestyksen, jota kutsutaan operaattoreiden käsittelyjärjestykseksi. Toiminnot järjestetään seuraavan taulukon mukaisesti.
Operaattori | Kuvaus |
---|---|
^ | Potenssiin korotus |
- | Etumerkki (kuten luvussa -1) |
* ja / | Kertolasku ja jakolasku |
NOT | NOT |
+ ja - | Yhteenlasku ja vähennyslasku |
& | Kahden tekstimerkkijonon ketjutus |
=,==,<,>,<=,>=,=,<> | Vertailu |
Kun operaattoreilla on sama käsittelyjärjestysarvo, ne järjestetään vasemmalta oikealle.
Yleensä operaattoreiden käsittelyjärjestys on sama kuin Excelissä. Jos haluat ohittaa arviointijärjestyksen, ryhmittele operaattorit sulkeiden avulla.
Katso esimerkiksi seuraavaa lasketun sarakkeen määritystä:
Extended Amount = Sales[Order Quantity] * Sales[Unit Price] * 1 - [Unit Price Discount Pct]
Tässä esimerkissä lasketun sarakkeen määritys tuottaa virheellisen tuloksen, koska kertolasku suoritetaan ennen vähennyslaskua. Seuraavassa kelvollisessa lasketun sarakkeen määrityksessä käytetään sulkeita sen varmistamiseksi, että vähennyslaskut suoritetaan ennen kertolaskuja.
Extended Amount = Sales[Order Quantity] * Sales[Unit Price] * (1 - [Unit Price Discount Pct])
Vihje
Operaattoreiden käsittelyjärjestystä koskevia sääntöjä voi olla vaikea muistaa, erityisesti aloiteltaessa DAX-kielen käyttöä. Tämän vuoksi on suositeltavaa testata kaavoja perusteellisesti. Jos kaavat eivät tuota oikeaa tulosta virheellisen arviointijärjestyksen vuoksi, voit tehdä kokeiluja lisäämällä sulkeita arviointijärjestyksen muuttamiseksi. Voit lisätä sulkeita myös parantamaan kaavojen luettavuutta.
Lisätietoja DAX-operaattoreista ja käsittelyjärjestyksestä on kohdassa DAX-operaattorit.
Implisiittinen muunto
Kirjoitettaessa DAX-kaavaa, jossa käytetään operaattoreita yhdistämään eri tietotyyppejä, tyyppejä ei tarvitse muuntaa erikseen. Yleensä DAX tunnistaa viitattujen malliobjektien tietotyypit automaattisesti ja suorittaa implisiittisen muunnon tarvittaessa määritetyn toiminnon viimeistelyä varten.
Muunnettavissa oleviin arvoihin voi kuitenkin liittyä joitakin rajoituksia. Jos arvon tai sarakkeen tietotyyppi ei ole yhteensopiva nykyisen toiminnon kanssa, DAX palauttaa virheen. Jos esimerkiksi yritetään kertoa päivämääräarvolla, järjestelmä palauttaa virheen, koska tämä ei ole loogista.
BLANK-arvo käsitellään eri tavalla sen mukaan, mitä operaattoria käytetään. Se käsitellään samalla tavalla kuin BLANK Excelissä, mutta eri tavalla kuin NULL tietokannoissa (SQL). BLANK-arvo käsitellään nollana, kun sitä käytetään aritmeettisten operaattoreiden yhteydessä, ja tyhjänä merkkijonona, kun se liitetään merkkijonoon.
Vihje
BLANK-kaavan käsittelytapaa voi olla vaikea muistaa, erityisesti aloiteltaessa DAX-kielen käyttöä. Tämän vuoksi on suositeltavaa testata kaavoja perusteellisesti. Kun tyhjäarvot luovat odottamattomia tuloksia, harkitse - ja ISBLANK
DAX-funktioiden käyttämistä IF
tyhjäarvojen testaamiseen ja vastaa sitten asianmukaisella tavalla.