DAX-syntaksi
Tässä artikkelissa kuvataan DAX kaavalausekkeen kielen syntaksi- and vaatimukset.
Syntaksivaatimukset
DAX kaava alkaa aina yhtä sign (=
). Kun yhtä suuri kuin sign, voit antaa minkä tahansa lausekkeen, joka antaa tulokseksi skalaariarvon, or lausekkeen, joka voidaan muuntaa skalaariarvoksi. Näitä ovat esimerkiksi seuraavat:
Skalaarivakio or lauseke, joka käyttää skalaarioperaattoria (
+,-,*,/,>=,...,&&, ...
)Viittaukset sarakkeisiin or taulukoissa. DAX kieli käyttää taulukoita and sarakkeista syötteinä funktioihin. Se ei koskaan ole koskaan matriisi, or mielivaltainen valuesjoukko.
Operaattorit, vakiot andvalues annettu osana lauseketta.
Funktion tulos and sen vaaditut argumentit. Jotkin DAX funktiot palauttavat taulukon skalaarin sijaan, and on käärittävä funktioon, joka arvioi taulukon and palauttaa skalaarin. ellei taulukko ole yksisarakkeinen, yksirivinen taulukko, sitä käsitellään skalaarisena value.
Useimmat DAX funktiot edellyttävät yhtä or useampia argumentteja, jotka voivat sisältää taulukoita, sarakkeita, lausekkeita andvalues. Jotkin funktiot, kuten PI, edellyttävät kuitenkin not argumentteja, mutta ne edellyttävät aina sulkeita tyhjäarvoargumentin ilmaisemiseksi. Sinun on esimerkiksi aina kirjoitettava PI(), notPI. Voit myös sijoittaa funktioita sisäkkäin muiden funktioiden sisällä.
Lausekkeita. Lauseke voi sisältää minkä tahansa seuraavista orall: operaattorit, vakiot or viittaukset sarakkeisiin.
Esimerkiksi seuraavat ovat all kelvollisia kaavoja.
Kaava | Tulos |
---|---|
= 3 |
3 |
= "Sales" |
Sales |
= 'Sales'[Amount] |
If käytät tätä kaavaa Sales-taulukossa, saat Summa-sarakkeen value Sales-taulukossa nykyiselle riville. |
= (0.03 *[Amount]) =0.03 * [Amount] |
Kolme prosenttia nykyisen taulukon Amount-sarakkeen value. Vaikka tämän kaavan avulla voidaan calculate prosenttiosuus, tulos not näytetään prosenttilukuna, ellet käytä muotoilua taulukossa. |
= PI() |
Vakion pivalue. |
Kaavat voivat käyttäytyä eri tavalla riippuen siitä, miten niitä käytetään. Sinun on aina oltava tietoinen kontekstista and se, miten kaavassa käyttämäsi tiedot related muihin tietoihin, joita laskennassa voidaan käyttää.
Nimeämisvaatimukset
Tietomalli contains usein useisiin taulukoihin. Yhdessä taulukot and niiden sarakkeet koostuvat tietokannasta, joka on tallennettu muistissa olevaan analytiikkamoduuliin (VertiPaq). Kyseisessä tietokannassa all taulukoilla on oltava yksilölliset nimet. Sarakkeiden nimien on myös oltava yksilöllisiä jokaisessa taulukossa. All objektien nimien kirjainkoko ei ole merkitsevä; Esimerkiksi SALES-andSales- nimet edustavat samaa taulukkoa.
Kaikkien aiemmin luotuun tietomalliin lisäämiesi andmeasure sarakkeiden on kuuluttava tiettyyn taulukkoon. Määrität taulukon, joka contains sarakkeen, joko implisiittisesti, kun luot lasketun sarakkeen taulukkoon, or eksplisiittisesti, kun luot measureand määrittää sen taulukon nimen, johon measure määritys tulee tallentaa.
Kun käytät taulukon or saraketta funktion syötteenä, sinun on yleensä hyväksyttävä sarakkeen nimi. Sarakkeen täydellinen nimi on taulukon nimi, jota seuraa sarakkeen nimi hakasulkeissa: esimerkiksi U.S. Sales'[Products]. Täydellinen nimi vaaditaan aina, kun viittaat sarakkeeseen seuraavissa konteksteissa:
Funktion argumenttina
VALUES
Funktioiden argumenttina
ALL
orALLEXCEPT
Funktioiden filter argumentissa
CALCULATE
orCALCULATETABLE
Funktion argumenttina
RELATEDTABLE
Minkä tahansa time tietofunktion argumenttina
tarkentamaton sarakkeen nimi on vain sarakkeen nimi hakasulkeissa: esimerkiksi [Sales Amount]. Jos esimerkiksi viittaat skalaariarvoon, joka on value nykyisen taulukon samalta riviltä, voit käyttää tarkentamatonta sarakkeen nimeä.
If taulukon nimen välilyöntejä, varattuja avainsanoja or ei-sallittuja merkkejä contains, sinun on kirjoitettava taulukon nimi puolilainausmerkkeihin. Taulukoiden nimet on kirjoitettava lainausmerkkeihin if nimi contains aakkosnumeeriseen ANSI-merkkiin kuulumattomat merkit range, riippumatta siitä, tukevatko aluekohtaiset asetukset merkistöä ornot. Jos esimerkiksi if avaat työkirjan, jossa contains kyrillisillä merkeillä kirjoitettuja taulukon nimiä, kuten "Таблиа", taulukon nimi on kirjoitettava lainausmerkkeihin even vaikka se not sisältää välilyöntejä.
Muistiinpano
Voit helpottaa sarakkeiden täydellistä nimien syöttämistä käyttämällä kaavaeditorin automaattista täydennystoimintoa.
Taulukot
Taulukon nimet vaaditaan, kun sarake on eri taulukosta kuin nykyinen taulukko. Taulukon nimien on oltava yksilöllisiä tietokannan sisäpuolella.
Taulukon nimet on sijoitettava heittomerkkien sisään, if ne sisältävät välilyöntejä, muita erikoismerkkejä or muita kuin englanninkielisiä aakkosnumeerisia merkkejä.
Toimenpiteet
Measure nimien on aina oltava hakasulkeissa.
Measure nimet voivat sisältää välilyöntejä.
Kunkin measure nimen on oltava yksilöllinen mallin sisäpuolella. Tämän vuoksi taulukon nimi on valinnainen measure nimen edessä viitattaessa aiemmin luotuun measure. Kun luot measure sinun on kuitenkin aina määritettävä taulukko, johon measure määritys tallennetaan.
Sarakkeet
Sarakkeiden nimien on oltava yksilöllisiä taulukon kontekstissa. Useilla taulukoilla voi kuitenkin olla sarakkeita, joilla on samat nimet (taulukon nimi sisältää selkeyden).
Yleensä sarakkeisiin voidaan viitata viittaamatta perustaulukkoon, johon ne kuuluvat, except silloin, kun voi olla nimiristiriita, joka ratkaisee or tietyillä funktioilla, jotka edellyttävät, että sarakkeiden nimet ovat täydellisiä.
Varatut avainsanat
If taulukolle käytettävä nimi on sama kuin Analysis Servicesin varattu avainsana, annetaan errorand taulukon nimeäminen uudelleen. Voit kuitenkin käyttää avainsanoja objektien nimissä if objektin nimi on hakasulkeissa (sarakkeille) or lainausmerkeissä (taulukoille).
Muistiinpano
Lainausmerkkejä voi esittää useilla eri merkeillä sovelluksen mukaan. If liität kaavoja ulkoisesta asiakirjasta or Web-sivulta, varmista, että tarkistat niiden merkkien ASCII-koodin, joita käytetään tarjousten avaamiseen and sulkevien lainausmerkkien avaamisessa, varmistaaksesi, että ne ovat samat. Muussa tapauksessa DAX ei välttämättä pysty tunnistamaan symboleja lainausmerkeiksi, mikä tekee viittauksesta virheellisen.
Erikoismerkkejä
Seuraavat merkkityypit and merkkityyppejä ovat not kelvollisia taulukoiden, sarakkeiden, or mittareiden nimissä:
välilyönnit alussa or lopussa. ellei välilyöntejä ole suljettu nimierikkeillä, hakasulkeilla or yksittäisillä heittomerkeillä.
Ohjausmerkit
Seuraavat merkit, jotka not kelvollisia objektien nimissä:
.,;':/\\*|?&%$!+=()[]{}<>
Esimerkkejä objektien nimistä
Seuraavassa taulukossa on esimerkkejä joidenkin objektien nimistä:
Objektityypit | Esimerkkejä | Kommentti |
---|---|---|
Taulukon nimi | Sales | If taulukon nimi sisältää not välilyöntejä or muita erikoismerkkejä, nimi ei not tarvitse olla lainausmerkkien sisällä. |
Taulukon nimi | Kanadan myynti - | If nimen välilyöntejä contains, välilehdet or muita erikoismerkkejä, kirjoita nimi puolilainausmerkkien sisään. |
Täydellinen sarakkeen nimi | Sales[Amount] | Taulukon nimi edeltää sarakkeen nimeä, and sarakkeen nimi on hakasulkeissa. |
Täydellinen measure nimi | Sales[Profit] | Taulukon nimi edeltää measure nimeä, andmeasure nimi on hakasulkeiden sisällä. Joissakin konteksteissa vaaditaan aina täydellinen nimi. |
Tarkentamaton sarakkeen nimi | [Summa] | Tarkentamaton nimi on vain sarakkeen nimi hakasulkeissa. Kontekstit, joissa voidaan käyttää tarkentamatonta nimeä, sisältävät lasketun sarakkeen kaavat samassa taulukossa, or koostamisfunktiossa, joka skannaa samaa taulukkoa. |
Täydellinen sarake taulukossa, jossa on välilyöntejä | 'Kanadan myynti'[Qty] | Taulukon nimi contains välilyöntejä, joten sen ympärillä on oltava heittomerkit. |
Muut rajoitukset
Kullekin funktiolle tarvittava syntaksi and sen suoritettavan toiminnon tyyppi vaihtelee suuresti funktion mukaan. Yleisesti ottaen kuitenkin seuraavat säännöt koskevat all kaavoja and lausekkeita:
DAX kaavat and lausekkeet eivät voi muokata or lisätä taulukoihin yksittäisiä values.
Et voi luoda laskettuja rivejä käyttämällä DAX. Voit luoda vain laskettuja sarakkeita mittarien and.
Kun määrität laskettuja sarakkeita, voit sijoittaa funktioita mihin tahansa tasoon.
DAX on useita funktioita, jotka palauttavat taulukon. Yleensä käytät näiden funktioiden palauttamia values syötteenä muihin funktioihin, jotka edellyttävät taulukkoa syötteenä.
DAX operaattorit and vakioita
Seuraavassa taulukossa on lueteltu operaattorit, joita DAXtukee. Lisätietoja yksittäisten operaattoreiden syntaksista on kohdassa DAX operaattorit.
Operaattorityyppi | Symbolien and käyttö |
---|---|
Sulkeet-operaattori |
() käsittelyjärjestys and argumenttien ryhmittely |
Aritmeettiset operaattorit |
+ (yhteenlasku)- (vähennyslasku)* (kertolasku)/ (jakolasku)^ (potenssi) |
Vertailuoperaattorit |
= (yhtä suuri kuin)> (suurempi kuin)< (pienempi kuin)>= (suurempi kuin or yhtä suuri kuin)<= (pienempi kuin or yhtä suuri kuin)<> (not yhtä suuri kuin) |
Tekstin yhdistämisoperaattori |
& (ketjutus) |
Loogiset operaattorit |
&& (and)|| (or) |
tietotyypit
Sinun not tarvitse luoda , convert, or muussa tapauksessa määrittää orvalueDAX kaavassa käytettävän sarakkeen tietotyyppi. Kun käytät tietoja DAX kaavassa, DAX tunnistaa automaattisesti viitatun sarakkeen tietotyypit kirjoittamasi valuesand, and suorittaa implisiittisiä muunnoksia tarvittaessa määritetyn toiminnon suorittamiseksi.
Esimerkiksi if yrität lisätä luvun datevalue, moduuli tulkitsee toiminnon funktion kontekstissa, andconvert luvut yleiseen tietotyyppiin, and sitten esittää tuloksen aiotussa format, date.
Muunnetuille values on kuitenkin joitakin rajoituksia. If value or sarakkeen tietotyyppi ei ole yhteensopiva nykyisen toiminnon kanssa, DAX palauttaa error. DAX tarjoaa not funktioita, joiden avulla voit eksplisiittisesti muuttaa convertor tietomalliin tuotujen olemassa olevien tietojen tietotyypin.
Tärkeä
DAX tukee not versiotietotyyppiä. Kun lataat or tuot tietoja tietomalliin, on odotettavissa, että kunkin sarakkeen tiedot ovat yleensä yhdenmukaisia tietotyyppejä.
Jotkin funktiot palauttavat values, mukaan lukien merkkijonot, kun taas muut funktiot toimivat lukujen kanssa, molemmat kokonaisluvut and reaalilukuja, or päivämääriä and kertaa. Kunkin funktion vaatima tietotyyppi on kuvattu osassa DAX funktiot.
Voit käyttää useita sarakkeita sisältäviä taulukoita and useita tietorivejä funktion argumenttina. Jotkin funktiot palauttavat myös taulukoita, jotka on tallennettu muistiin and voidaan käyttää argumentteina muihin funktioihin.
Date and time
DAX tallentaa dateandtimevalues käyttämällä Microsoft SQL Serverin käyttämää datetime-tietotyyppiä. Datetime-format käyttää liukulukua, jossa Datevalues vastaa kokonaislukuosaa, joka edustaa 30.12.1899 jälkeen olevien päivien määrää. Time values vastaavat datevalue desimaaliosaa, jossa tunnit, minuutit, and sekuntia edustavat daydesimaaliosana. DAX date and time funktiot convert argumentit implisiittisesti datetime-tietotyyppiin.
Muistiinpano
DAX tukema datetime-valueexact on 31.12.9999 klo 00.00.00.
Date and time literaali
Power BI Desktopin elokuun 2021 versiosta alkaen DAXdateand datetime-values voidaan määrittää literaaliksi formatdt"YYYY-MM-DD"
, dt"YYYY-MM-DDThh:mm:ss"
, ordt"YYYY-MM-DD hh:mm:ss"
. Literaalina määritettynä lausekkeen DATE, TIME, DATEVALUE, TIMEVALUE-funktioiden käyttö lausekkeessa not tarpeen.
Esimerkiksi seuraavassa lausekkeessa orderDate-filter käytetään DATEandTIME funktioita:
EVALUATE
FILTER (
FactInternetSales,
[OrderDate] > (DATE(2015,1,9) + TIME(2,30,0)) &&[OrderDate] < (DATE(2015,12,31) + TIME(11,59,59))
)
Sama filter lauseke voidaan määrittää literaaliksi:
EVALUATE
FILTER (
FactInternetSales,
[OrderDate] > dt"2015-1-9T02:30:00" && [OrderDate] < dt"2015-12-31T11:59:59"
)
Muistiinpano
datetime-tyyppistä DAXdateand literaalin formatnot tueta Power BI Desktopin, Analysis Servicesin andPower Pivotin all versioissa Excelissä. Uudet and päivitetyt DAX-toiminnot esitellään yleensä firstPower BI Desktop -and jotka lisätään myöhemmin Analysis Services andPower Pivotiin Excelissä.