Share via


DAX-operaattorit

Data Analysis Expression (DAX) -kieli luo operaattoreiden avulla lausekkeita, jotka vertaavat arvoja, suorittavat aritmeettisia laskutoimituksia tai käyttävät merkkijonoja.

Operaattoreiden tyypit

Laskentaoperaattoreita on neljää eri tyyppiä: aritmeettinen, vertailu-, tekstin yhdistämis- ja looginen operaattori.

Aritmeettiset operaattorit

matemaattisten perustoimintojen, kuten yhteenlaskun, vähennyslaskun tai kertolaskun, suorittamiseen yhdistä numeroita; ja tuottaa numeerisia tuloksia, käytä seuraavia aritmeettisia operaattoreita.

Aritmeettinen operaattori Merkitys Esimerkki
+ (plusmerkki) Yhteenlasku 3+3
– (miinusmerkki) Vähennyslasku tai merkki 3–1–1
* (tähti) Kertolasku 3*3
/ (vinoviiva) Osasto 3/3
^ (varoen) Potenssiin korotus 16^4

Muistiinpano

Plusmerkki voi toimia sekä binaarioperaattorina että unaarioperaattorina. Binaarioperaattori edellyttää lukuja operaattorin molemmin puolin ja suorittaa yhteenlaskun. Kun käytät DAX-kaavan arvoja binaarioperaattorin molemmin puolin, DAX yrittää muuntaa arvot numeerisiin tietotyyppeihin, jos ne eivät ole vielä lukuja. Unaarioperaattoria voidaan sen sijaan käyttää missä tahansa argumenttityypissä. Plusmerkki ei vaikuta tyyppiin tai arvoon ja se yksinkertaisesti ohitetaan, kun taas miinusoperaattori luo negatiivisen arvon, jos sitä käytetään numeerisissa arvoissa.

Vertailuoperaattorit

Voit verrata kahta arvoa seuraaviin operaattoreihin. Kun kahta arvoa verrataan näiden operaattoreiden avulla, tulos on looginen arvo, joko TRUE tai FALSE.

Vertailuoperaattori Merkitys Esimerkki
= Sama kuin [Region] = "USA"
== Täsmälleen yhtä suuri kuin [Region] == "USA"
> Suurempi kuin [Sales Date] > "tammikuu 2009"
< Pienempi kuin [Sales Date] < "1. tammikuuta 2009"
>= Suurempi tai yhtä suuri kuin [Summa] >= 20000
<= Pienempi tai yhtä suuri kuin [Summa] <= 100
<> Eri kuin [Region] <> "USA"

Kaikissa vertailuoperaattoreissa operaattoria == lukuun ottamatta BLANK-arvo on yhtä suuri kuin 0, tyhjä merkkijono "", DATE(1899, 12, 30) tai FALSE. Tämän seurauksena [Column] = 0 on true, kun kohteen [Column] arvo on joko 0 tai BLANK. Sen sijaan [Column] == 0 on true vain, kun kohteen [Column] arvo on 0.

Tekstin yhdistämisoperaattori

Et-merkin (&) avulla voit tuottaa yhden tekstin yhdistäessään vähintään kaksi tekstimerkkijonoa.

Tekstioperaattori Merkitys Esimerkki
& (et-merkki) Näyttöyhteys kaksi arvoa yhden jatkuvan tekstiarvon tuottamiseksi. [Region] & ", " & [City]

Loogiset operaattorit

Loogisten operaattoreiden (&&) ja (||) avulla voit tuottaa yhden tuloksen yhdistämällä lausekkeita.

Tekstioperaattori Merkitys Esimerkit
&& (kaksinkertainen et-merkki) Luo AND-ehdon kahden lausekkeen välille, joissa kummassakin on tuloksena totuusarvo. Jos molemmat lausekkeet palauttavat arvon TRUE, myös lausekkeiden yhdistelmä palauttaa arvon TRUE. Muussa tapauksessa yhdistelmä palauttaa arvon FALSE. ([Region] = "Ranska") && ([BikeBuyer] = "kyllä"))
|| (kaksinkertainen putkisymboli) Luo OR-ehdon kahden loogisen lausekkeen välille. Jos jompikumpi lauseke palauttaa arvon TRUE, tulos on TRUE. vain, kun molemmat lausekkeet ovat FALSE, tulos on FALSE. (([Region] = "Ranska") || ([BikeBuyer] = "kyllä"))
IN Luo loogisen TAI-ehdon kunkin rivin välille, jota verrataan taulukkoon. Huomautus: taulukkokonstruktorin syntaksissa käytetään kaarisulkeita. 'Product'[Color] IN { "Punainen", "Sininen", "Musta" }

Operaattorit ja käsittelyjärjestys

Joissakin tapauksissa laskutoimituksen käsittelyjärjestys voi vaikuttaa palautusarvoon. Siksi on tärkeää ymmärtää, miten järjestys määritetään ja miten voit muuttaa järjestystä halutun tuloksen saamiseksi.

Laskentajärjestys

Lauseke arvioi operaattorit ja arvot tietyssä järjestyksessä. Kaikki lausekkeet alkavat aina yhtäläisyysmerkillä (=). Yhtäläisyysmerkki ilmaisee, että sitä seuraavat merkit muodostavat lausekkeen.

Yhtäläisyysmerkin jälkeen ovat lasketut elementit (operandit), jotka erotetaan toisistaan laskentaoperaattoreilla. Lausekkeet luetaan aina vasemmalta oikealle, mutta elementtien ryhmittelyjärjestystä voidaan hallita jonkin verran käyttämällä sulkeita.

Operaattoreiden käsittelyjärjestys

Jos yhdistät useita operaattoreita yhteen kaavaan, toiminnot järjestetään seuraavan taulukon mukaisesti. Jos operaattoreilla on sama käsittelyjärjestysarvo, ne järjestetään vasemmalta oikealle. Jos lauseke sisältää esimerkiksi sekä kertolasku- että jakolaskuoperaattorin, ne arvioidaan siinä järjestyksessä, jossa ne näkyvät lausekkeessa vasemmalta oikealle.

Operator Kuvaus
^ Potenssiin korotus
Merkki (kuten –1)
*Ja/ Kertolasku ja jakolasku
+ ja – Yhteenlasku ja vähennyslasku
& Näyttöyhteys kaksi tekstimerkkijonoa (yhdistäminen)
=,==,<,>,<=,>=,<>,IN Vertailu
NOT NOT (unaarioperaattori)

Laskentajärjestyksen hallinta sulkeiden avulla

Jos haluat muuttaa arviointijärjestystä, sisällytä sulkeisiin se kaavan osa, joka on laskettava ensin. Esimerkiksi seuraavan kaavan arvo on 11, koska kertolasku lasketaan ennen yhteenlaskua. Kaava kertoo 2 luvulla 3 ja lisää sitten tulokseen 5.

=5+2*3  

Sen sijaan jos käytät sulkeita syntaksin muuttamiseen, järjestystä muutetaan siten, että 5 ja 2 lasketaan yhteen ja tulos kerrotaan luvulla 3, jolloin tuloksena on 21.

=(5+2)*3  

Seuraavassa esimerkissä kaavan ensimmäisen osan ympärillä olevat sulkeet pakottavat laskutoimituksen arvioimaan lausekkeen (3 + 0.25) ensin ja sitten jakamaan tuloksen lausekkeen tuloksella, (3 - 0.25).

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

Seuraavassa esimerkissä potenssiin eksponentiointioperaattoria käytetään ensin operaattoreiden käsittelyjärjestyssääntöjen mukaisesti, ja sen jälkeen käytetään merkkioperaattoria. Tämän lausekkeen tulos on -4.

=-2^2  

Jos haluat varmistaa, että merkkioperaattoria käytetään ensin numeerisissa arvoissa, voit käyttää sulkeita ohjaamaan operaattoreita seuraavassa esimerkissä esitetyllä tavalla. Tämän lausekkeen tulos on 4.

= (-2)^2  

Yhteensopivuus

DAX käsittelee ja vertaa eri tietotyyppejä helposti Microsoft Excelin tapaan. Pohjana oleva laskentamoduuli perustuu kuitenkin SQL Server Analysis Servicesiin ja tarjoaa relaatiotietosäilön lisäominaisuuksia, mukaan lukien monipuolisemman tuen päivämäärä- ja aikatyypeille. Joissakin tapauksissa laskutoimitusten tulokset tai funktioiden toiminta eivät välttämättä ole samat kuin Excelissä. Lisäksi DAX tukee useampia tietotyyppejä kuin Excel. Tässä osiossa kuvataan tärkeimmät erot.

Operandien tietotyyppien pakottaminen

Yleensä operaattorin vasemmalla ja oikealla puolella olevan kahden operandin on oltava samaa tietotyyppiä. Jos tietotyypit ovat kuitenkin erilaiset, DAX muuntaa ne joissain tapauksissa yleiseksi tietotyypiksi operaattoria varten:

  1. Molemmat operandit muunnetaan suurimmaksi mahdolliseksi yleiseksi tietotyypiksi.
  2. Operaattoria käytetään, jos mahdollista.

Oletetaan esimerkiksi, että sinulla on kaksi lukua, jotka haluat yhdistää. Yksi luku on esimerkiksi kaavan, kuten =[Price] * .20, tulos, ja tulos voi sisältää useita desimaaleja. Toinen luku on kokonaisluku, joka on annettu merkkijonoarvona.

Tässä tapauksessa DAX muuntaa molemmat luvut reaaliluvuiksi numeerisissa muodoissa käyttämällä suurinta numeerista muotoa, joka voi tallentaa kummankin lukutyypin. Tämän jälkeen DAX käyttää kertolaskua.

Tietojen ja tyypin yhdistelmästä riippuen tyypin pakottamista ei välttämättä käytetä vertailuoperaatioissa. Täydellinen luettelo DAXin tukemista tietotyypeistä on tiedoissa Taulukkomallien tukemat tietotyypit ja Power BI Desktopin tietotyypit.

Kokonaisluku-, Reaaliluku-, Valuutta-, Päivämäärä/aika- ja Tyhjä-parametrit katsotaan numeerisina vertailutarkoituksessa. Tyhjä saa arvon nolla vertailua suoritettaessa. Seuraavia tietotyyppiyhdistelmiä tuetaan vertailuoperaatioissa.

Vasemmanpuoleinen tietotyyppi Oikeanpuoleinen tietotyyppi
Numeerinen Numeerinen
Totuusarvo Totuusarvo
Merkkijono Merkkijono

Muut tietojen ja tyypin yhdistelmät palauttavat virheen. Esimerkiksi kaava ="1" > 0 palauttaa virheen, jossa ilmoitetaan, että DAX-vertailutoiminnot eivät tue tyypin Teksti arvojen vertaamista tyypin Kokonaisluku arvoihin.

DAXissa käytetyt tietotyypit Excelissä käytetyt tietotyypit
Luvut (I8, R8) Luvut (R8)
Merkkijono Merkkijono
Totuusarvo Totuusarvo
DateTime Variantti
Valuutta Valuutta

Erot käsittelyjärjestyksessä

Toimintojen käsittelyjärjestys DAX-kaavoissa on periaatteessa sama kuin Microsoft Excelissä, mutta joitain Excel-operaattoreita, kuten prosenttia, ei tueta. Lisäksi alueita ei tueta.

Siksi aina kopioidessasi ja liittäessäsi kaavoja Excelistä muista tarkistaa kaava huolellisesti, koska jotkin kaavojen operaattorit tai elementit eivät ehkä ole kelvollisia. Jos toimintojen käsittelyjärjestys ei ole täysin epäselvä, on suositeltavaa käyttää sulkeita, jotta voit hallita toimintojen järjestystä ja jotta tuloksessa ei ole epäselvyyksiä.

DAX-syntaksi
DAX-parametrien nimeäminen