DAX kyselyt
Power BI:n ja Excelin kaltaiset raportoivat asiakkaat suorittavat DAX kyselyitä aina, kun visualisointeja näytetään raportissa tai taulukkoon lisätään kenttä. Nämä DAX kyselyt mukautuvat, kun suodatinta käytetään. Power BI Desktopin suorituskyvyn analysointi - voivat näyttää nämä DAX kyselyt ja jopa suorittaa ne DAX kyselynäkymässä.
Voit luoda ja suorittaa omia
DAX kyselyt palauttavat tuloksia taulukkona suoraan työkalussa, voit luoda ja testata nopeasti DAX kaavojen suorituskykyä mittareissa tai vain tarkastella tietoja semanttisessa mallissasi. INFO ja INFO. NÄYTÄ DAX-funktiot voivat myös saada tietoja semanttisesta mallistasi, kuten taulukoiden, sarakkeiden, mittareiden ja paljon muuta.
Ennen kyselyihin tutustumista on tärkeää ymmärtää DAX perusteet. Muista tutustua DAX yleiskatsaukseen.
Avainsanat
DAX kyselyissä on yksinkertainen syntaksi, joka koostuu vain yhdestä pakollisesta avainsanasta, EVALUATE. EVALUATE jälkeen on taulukkolauseke, kuten DAX-funktio tai taulukon nimi, joka suorittamisen aikana tulostaa tulostaulukon. Tulostaulukon tulostavat taulukkolausekkeet ovat seuraavat:
- Yleiset DAX funktiot, jotka tuottavat taulukon, kuten SUMMARIZE, SUMMARIZECOLUMNS, SELECTCOLUMNS, FILTER, UNION, TOPN, ADDCOLUMNS, DATATABLE, ja monet muut, tuottavat tulostaulukon EVALUATE.
- Taulukot mallissa, kun niihin viitataan nimen perusteella, toimivat EVALUATE kanssa tulostamaan tulostaulukon, joka näyttää tiedot taulukossa. Esimerkiksi EVALUATE Taulukon nimi - voidaan suorittaa DAX kyselynä.
- Mallin tai minkä tahansa kaavan DAX mittarit, jotka palauttavat skalaariarvon, toimivat yhdessä EVALUATE kanssa näyttääkseen arvon tulostaulukkona aaltosulkeiden sisällä. Esimerkiksi EVALUATE {[Total Sales]} tai EVALUATE {COUNTROWS('Sales')} voidaan suorittaa DAX kyselynä. Näitä kutsutaan taulukkokonstruktoriksi.
DAX kyselyihin liittyy useita valinnaisia avainsanoja: ORDER BY, START AT, DEFINE, MEASURE, VAR, TAULUKKO ja SARAKE.
EVALUATE (Pakollinen)
Perustasolla DAX kysely on EVALUATE
lauseke, joka sisältää taulukkolausekkeen. Vähintään yksi EVALUATE-lauseke vaaditaan, mutta kysely voi sisältää minkä tahansa määrän EVALUATE lausekkeita.
EVALUATE Syntaksi
EVALUATE <table>
EVALUATE-parametrit
Termi | Määritelmä |
---|---|
table |
Taulukkolauseke. |
EVALUATE esimerkki
EVALUATE
'Sales Order'
Palauttaa kaikki Sales Order -taulukon rivit ja sarakkeet tulostaulukkona. Tätä voidaan rajoittaa käyttämällä TOPN tai FILTER, ja lajitellaan ORDER BYmukaan.
ORDER BY (valinnainen)
Valinnainen ORDER BY
-avainsana määrittää yhden tai useamman sarakkeen kyselyssä tai lausekkeissa, joita käytetään kyselyn tulosten lajittelemiseen. Mikä tahansa lauseke, joka voidaan laskea jokaisella tuloksen rivillä, on kelvollinen. Myös mikä tahansa kyselyn sarake on kelvollinen.
Semanttisten mallien Sarake-ominaisuuden perusteella lajitteleminen ei koske DAX kyselyn tuloksia. Jos sarake tulee lajitella mallin eri sarakkeen mukaan, kuten Kuukauden nimi -tapauksessa, lajittelu sarakkeen mukaan tulee myös sisällyttää ORDER BYkäytettävään DAX kyselyyn.
ORDER BY Syntaksi
EVALUATE <table>
[ORDER BY {<expression> [{ASC | DESC}]}[, …]]
ORDER BY-parametrit
Termi | Määritelmä |
---|---|
expression |
Mikä tahansa DAX-lauseke, joka palauttaa yksittäisen skalaariarvon tai DAX kyselyyn sisältyvän sarakkeen. |
ASC |
(oletus) Nouseva lajittelujärjestys. |
DESC |
Laskeva lajittelujärjestys. |
ORDER BY esimerkki
EVALUATE
SUMMARIZECOLUMNS(
// Group by columns
'Date'[Month Name],
'Date'[Month of Year],
'Product'[Category],
// Optional filters
FILTER(
VALUES('Product'[Category]),
[Category] = "Clothing"
),
// Measures or explicit DAX formulas to aggregate and analyze the data by row
"Orders", [Orders],
"Avg Profit per Order", DIVIDE(
[Total Sales Profit],
[Orders]
)
)
// DAX queries do not use sort order defined in Power BI,
// sort by columns must be included in the DAX query to be used in order by
ORDER BY 'Date'[Month of Year] ASC
Palauttaa vaatetilaukset ja keskimääräisen tuoton tilausta kohden kuukauden mukaan nousevassa järjestyksessä kuukauden mukaan tulostaulukkona.
TOPN ei valitse palautettavien rivien määrää ORDER BYmääritetyn lajittelujärjestyksen perusteella. TOPN syntaksi on sen sijaan sellainen, että se voi valinnaisesti määrittää lajittelun, ennen kuin 100 ylintä riviä palautetaan. ORDER BY lajittelee vain TOPNpalauttaman tulostaulukon.
EVALUATE
TOPN(
100,
'Sales Order',
// The way the data is sorted before the top 100 rows are selected
'Sales Order'[SalesOrderLineKey], ASC
)
// The way the data is sorted for the results
ORDER BY
'Sales Order'[Sales Order] ASC,
'Sales Order'[Sales Order Line] ASC
Palauttaa 100 parasta SalesOrderLienKey-lajitteluperusteen mukaan lajiteltua myyntitilausta nousevassa järjestyksessä ja lajittelee sitten tulokset ensin myyntitilauksen mukaan ja sitten myyntitilausrivin mukaan.
START AT (valinnainen)
Valinnaista START AT
-avainsanaa käytetään ORDER BY
-lauseen sisällä. Se määrittää arvon, jolla kyselyn tulokset alkavat.
START AT Syntaksi
EVALUATE <table>
[ORDER BY {<expression> [{ASC | DESC}]}[, …]
[START AT {<value>|<parameter>} [, …]]]
START AT-parametrit
Termi | Määritelmä |
---|---|
value |
Vakioarvo. Ei voi olla lauseke. |
parameter |
XMLA-lausekkeen parametrin nimi, jonka etuliitteenä on @ . |
START AT huomautukset
START AT argumenteilla on yksi yhteen -vastaavuus ORDER BY -lausekkeen sarakkeiden kanssa. START AT-lauseessa voi olla yhtä monta argumenttia kuin ORDER BY-lauseessa on, mutta ei enempää. START AT ensimmäinen argumentti määrittää aloitusarvon sarakkeessa 1 ORDER BY sarakkeista. START AT toinen argumentti määrittää aloitusarvon ORDER BY sarakkeiden sarakkeessa 2 niiden rivien sisällä, jotka kohtaavat sarakkeen 1 ensimmäisen arvon.
START AT esimerkki
EVALUATE
'Sales Order'
ORDER BY 'Sales Order'[Sales Order] ASC
// Start at this order, orders before this order will not be displayed
START AT "SO43661"
Palauttaa kaikki Myyntitilaus-taulukon sarakkeet nousevassa järjestyksessä myyntitilauksen mukaan alkaen SO43661. Tätä myyntitilausta ennen olevia rivejä ei sisällytetä tulostaulukkoon.
DEFINE (valinnainen)
Valinnainen DEFINE
-avainsana esittelee yhden tai useamman lasketun entiteetin määrityksen, joka on olemassa vain kyselyn ajan.
EVALUATE
poiketen DAX kyselyssä voi olla vain yksi DEFINE
lohko, jossa on vähintään yksi määritys.
DEFINE
on oltava ennen ensimmäistä EVALUATE
-lauseketta, ja ne ovat kelvollisia kaikille kyselyn EVALUATE lausekkeille. Määritelmät voivat olla muuttujia, mittareita, taulukoita,1, ja sarakkeita,1. Määritelmät voivat viitata muihin määritelmiin, jotka näkyvät ennen nykyistä määritelmää tai sen jälkeen. Vähintään yksi määritys vaaditaan, jos DEFINE
-avainsana sisältyy kyselyyn.
DEFINE MEASURE
on yleinen skenaario luoda uusia mittareita tai muokata olemassa olevia mittareita semanttisessa mallissa. Kun mittari on jo olemassa mallissa, DAX kysely käyttää kyselyssä määritettyä mittaria DAX kaavaa. Tästä on hyötyä mittareiden testaamisessa DAX kyselyllä ennen mallin päivittämistä.
DEFINE MEASURE
on myös hyödyllistä luoda lisäanalyyseja DAX-kaavoilla tietylle DAX kyselylle, jossa sinulla ei ehkä ole oikeutta lisätä mallimittaria tai sitä ei tarvitse saada malliin.
DEFINE Syntaksi
[DEFINE
(
(MEASURE <table name>[<measure name>] = <scalar expression>) |
(VAR <var name> = <table or scalar expression>) |
(TABLE <table name> = <virtual table definition>) |
(COLUMN <table name>[<column name>] = <scalar expression>) |
) +
]
(EVALUATE <table expression>) +
DEFINE-parametrit
Termi | Määritelmä |
---|---|
Entity |
MEASURE, VAR, TABLE1tai SARAKE,1. |
name |
Mittari-, var-, taulukko- tai sarakemäärityksen nimi. Se ei voi olla lauseke. Nimen ei tarvitse olla yksilöivä. Nimi on olemassa vain kyselyn ajan. |
expression |
Mikä tahansa DAX lauseke, joka palauttaa taulukon tai skalaariarvon. Lauseke voi käyttää mitä tahansa määritettyjä entiteettejä. Jos skalaarilauseke on muunnettava taulukkolausekkeeksi, rivitä lauseke taulukkokonstruktorin sisälle aaltosulkeilla {} tai palauta yksirivinen taulukko ROW() -funktiolla. |
[1]Huomio: suodatetut TAULUKKO- ja SARAKEmääritelmät on tarkoitettu vain sisäiseen käyttöön. Vaikka voit määrittää kyselyn TAULUKKO- ja SARAKE-lausekkeita ilman syntaksivirheitä, ne saattavat aiheuttaa suorituksenaikaisia virheitä, eikä niitä suositella.
DEFINE huomautukset
DAX kyselyssä voi olla useita EVALUATE-lauseita, mutta siinä voi olla vain yksi DEFINE-lauseke. DEFINE -lausekkeen määritelmät voivat koskea mitä tahansa kyselyn EVALUATE lausekkeita.
DEFINE-lausekkeessa vaaditaan vähintään yksi määritys.
Kyselyn mittarimääritykset ohittavat samannimisen mallin mittarit, mutta niitä käytetään vain kyselyssä. Ne eivät vaikuta mallin mittariin.
VAR nimillä on yksilöllisiä rajoituksia. Lisätietoja on artikkelissa VAR – Parametrit.
DEFINE esimerkki
DEFINE
VAR _firstyear = MIN('Date'[Fiscal Year])
VAR _lastyear = MAX('Date'[Fiscal Year])
TABLE 'Unbought products' = FILTER('Product', [Orders] + 0 = 0)
COLUMN 'Unbought products'[Year Range] = _firstyear & " - " & _lastyear
MEASURE 'Unbought products'[Unbought products] = COUNTROWS('Unbought products')
EVALUATE
'Unbought products'
EVALUATE
{[Unbought products]}
Palauttaa DAX kyselyssä määritetyn taulukon, joka näyttää muokkaamattomat tuotteet, joilla on määritettyjä muuttujia viittaava määritetty sarake. Mittari määritetään ja lasketaan myös sellaisten tuotteiden rivien laskemiseksi, joita ei ole muotoiltu.
DEFINE
MEASURE 'Pick a sales measure'[Orders] = DISTINCTCOUNT('Sales Order'[Sales Order])
MEASURE 'Pick a sales measure'[Customers] = CALCULATE(
COUNTROWS(Customer),
FILTER(
'Sales',
[Orders] > 0
)
)
MEASURE 'Pick a sales measure'[Orders per Customer] = DIVIDE(
[Orders],
[Customers],
0
)
EVALUATE
SUMMARIZECOLUMNS(
'Date'[Fiscal Year],
"Orders", [Orders],
"Customers", [Customers],
"Orders per Customer", [Orders per Customer]
)
Palauttaa taulukon, jossa arvioidaan kolmea määritettyä mittaria tulosten näyttämiseksi tilivuoden mukaan. Mallissa on myös kaikki mittarit, ja asiakaskohtaisia tilauksia muokataan DAX kyselyssä.
DAX kyselyiden parametrit
Hyvin määritetty DAX kyselylauseke voidaan parametrisoitua ja käyttää sitten uudelleen ja uudelleen vain parametriarvojen muutoksilla.
Execute Method (XMLA) -menetelmässä on Parameters Element (XMLA) - kokoelmaelementti, joka sallii parametrien määrittämisen ja arvon määrittämisen sille. Kokoelmassa jokainen Parameter Element (XMLA) - -elementti määrittää parametrin nimen ja arvon.
Viittaa XMLA-parametreihin lisäämällä parametrin nimen etuliitteeksi @
merkki. Missä tahansa syntaksin kohdassa, jossa sallitaan arvo, arvo voidaan korvata parametrikutsulla. Kaikki XMLA-parametrit kirjoitetaan tekstinä.
Tärkeä
Parametriosiossa määritetyt parametrit, joita ei käytetä <STATEMENT>
-elementissä, synnyttävät XMLA:ssa virhevastauksen.
Parametrit, joita käytetään mutta joita ei ole määritetty <Parameters>
-elementissä, synnyttävät XMLA:ssa virhevastauksen.