DAX-operaattoreiden käyttäminen

Valmis

DAX-kaavat voivat operaattoreiden avulla luoda lausekkeita, jotka suorittavat aritmeettisia laskutoimituksia, vertaavat 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ä DAX-funktion käyttäminen on tehokkaampaa ja turvallisempaa, kun jaat kaksi lauseketta ja nimittäjä voi palauttaa nollan DIVIDE tai TYHJÄ.

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 -arvo [Revenue] on joko nolla tai TYHJÄ. Sen sijaan arvo on TRUE vain, [Revenue] == 0 kun -arvo [Revenue] 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ääritys, joka käyttää CALCULATE DAX-funktiota 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 käytetystä operaattorista riippuen. 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 BLANK-kaavat luovat odottamattomia tuloksia, harkitse TYHJÄ-testin IFISBLANK testaamista DAX-funktioilla ja reagoimalla sitten asianmukaisella tavalla.