Muistiinpano
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää kirjautua sisään tai vaihtaa hakemistoa.
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää vaihtaa hakemistoa.
Koskee seuraavia:
Laskettu sarake
Laskettu taulukko
Mittayksikkö
Visuaalinen laskenta -
Laskee lausekkeen muokatussa suodatinkontekstissa.
Muistiinpano
Saatavilla on myös CALCULATETABLE funktio. Se suorittaa täsmälleen samat toiminnot, mutta se muokkaa suodatinkontekstia, käytetty lausekkeeseen, joka palauttaa taulukko-objektin.
Syntaksi
CALCULATE(<expression>[, <filter1> [, <filter2> [, …]]])
Parametrit
| Termi | Määritelmä |
|---|---|
expression |
Laskettava lauseke. |
filter1, filter2,… |
(Valinnainen) Totuusarvolausekkeet tai taulukkolausekkeet, jotka määrittävät suodattimia tai suodattimen muokkausfunktioita. |
Ensimmäisenä parametrina käytettävä lauseke toimii kuin mittari.
Suodattimet voivat olla seuraavat:
- Totuusarvosuodatinlausekkeet
- Taulukkosuodatinlausekkeet
- Suodattimen muokkausfunktiot
Kun käytät useita suodattimia, voit arvioida ne käyttämällä AND (&&) loogista operaattoria, mikä tarkoittaa sitä, että kaikkien ehtojen on oltava TRUE, tai (||) loogisen operaattorin avulla OR , mikä tarkoittaa, että jompikumpi ehto voi olla tosi. Lisätietoja on kohdassa DAX Operaattoreiden > loogiset operaattorit.
Totuusarvosuodatinlausekkeet
Ehtolausekesuodatin on lauseke, joka antaa tulokseksi TRUE tai FALSE. Sen on noudatettava useita sääntöjä:
Se voi viitata yhden taulukon sarakkeisiin.
Se ei voi viitata mittareihin.
Se ei voi käyttää sisäkkäistä funktiota CALCULATE .
Se ei voi käyttää funktioita, jotka skannaavat tai palauttavat taulukon, ellet välitä niitä argumentteina koostamisfunktioihin.
Se voi sisältää koostefunktion, joka palauttaa skalaariarvon. Esimerkkejä:
Total sales on the last selected date = CALCULATE ( SUM ( Sales[Sales Amount] ), 'Sales'[OrderDateKey] = MAX ( 'Sales'[OrderDateKey] ) )
Taulukkosuodatinlauseke
Taulukkolausekesuodatin käyttää suodattimena taulukko-objektia. Se voi olla viittaus mallitaulukkoon, mutta todennäköisempää on, että se on funktio, joka palauttaa taulukko-objektin. -funktion FILTER avulla voit käyttää monimutkaisia suodatusehtoja, myös sellaisia, joita ei voi määrittää totuusarvosuodatinlausekkeella.
Suodattimen muokkausfunktiot
Suodattimen muokkausfunktioiden avulla voit tehdä muutakin kuin vain lisätä suodattimia. Ne antavat sinulle lisähallintaa suodatinkontekstin muokkaamiseen.
| Funktio | Tarkoitus |
|---|---|
| REMOVEFILTERS | Poista kaikki suodattimet tai suodattimet yhdestä tai useammasta taulukon sarakkeesta tai yksittäisen taulukon kaikista sarakkeista. |
| ALL 1, ALLEXCEPT, ALLNOBLANKROW | Poista suodattimet yhdestä tai useammasta sarakkeesta tai yhden taulukon kaikista sarakkeista. |
| KEEPFILTERS | Lisää suodatin poistamatta samojen sarakkeiden aiemmin luotuja suodattimia. |
| USERELATIONSHIP | Ota passiivinen yhteys käyttöön liittyvien sarakkeiden välillä, jolloin aktiivisesta suhteesta tulee automaattisesti passiivinen. |
| CROSSFILTER | Muokkaa suodattimen suuntaa (molemmista yksittäiseen tai yksittäisestä molempiin) tai poista suhde käytöstä. |
1ALL-funktio ja sen variantit toimivat sekä suodattimen muokkaajina että funktioina, jotka palauttavat taulukko-objekteja. Jos työkalusi tukee funktiota REMOVEFILTERS , poista suodattimet sen avulla.
Palautusarvo
Arvo, joka saadaan lausekkeesta.
Huomautuksia
Kun annat suodatinlausekkeita, CALCULATE funktio muokkaa suodatinkontekstia lausekkeen arvioimiseksi. Kullekin suodatinlausekkeelle on kaksi vakiotulosta, kun suodatinlauseketta ei ole pakattu funktioon KEEPFILTERS :
- Jos sarakkeet tai taulukot eivät ole suodatinkontekstissa, suodatinkontekstiin lisätään uusia suodattimia lausekkeen arvioimiseksi.
- Jos sarakkeet tai taulukot ovat jo suodatinkontekstissa, uudet suodattimet korvaavat olemassa olevat suodattimet lausekkeen CALCULATE arvioimiseksi.
-funktion CALCULATE käyttäminen ilman suodattimia saavuttaa tietyn vaatimuksen. Se siirtää rivikontekstin suodatinkontekstiin. Tämä siirtymä vaaditaan, kun mallitietojen yhteenvedon sisältävä lauseke (ei mallin mittari) on arvioitava rivikontekstissa. Tämä skenaario voi tapahtua lasketun sarakkeen kaavassa tai kun iteraattori-funktion lauseke arvioidaan. Kun käytät mallin mittaria rivikontekstissa, kontekstin siirtymä on automaattinen.
-
Tätä funktiota ei tueta DirectQuery-tilassa lasketuissa sarakkeissa tai rivitason suojauksen (RLS) säännöissä käytettäväksi.
Esimerkkejä
Tämän artikkelin esimerkkejä voidaan käyttää Adventure Works DW 2020 Power BI Desktop -mallissa. Jos haluat hakea mallin, katso DAX esimerkkimallin.
Seuraava Myynti -taulukon mittarin määritys tuottaa tuoton tuloksen, mutta vain tuotteille, joiden väri on sininen.
Blue Revenue =
CALCULATE ( SUM ( Sales[Sales Amount] ), 'Product'[Color] = "Blue" )
| Luokka | Myynnin summa | Sininen tuotto |
|---|---|---|
| Tykötarpeet | 1 272 057,89 dollaria | 165 406,62 $ |
| Polkupyöriä | 94 620 526,21 $ | 8 374 313,88 dollaria |
| Vaatetus | 2 117 613,45 dollaria | 259 488,37 $ |
| Osia | 11 799 076,66 dollaria | 803 642,10 $ |
| yhteensä | 109 809 274,20 dollaria | 9 602 850,97 dollaria |
Seuraava Myynti -taulukon mittarin määritys tuottaa myynnin suhteen kaikkien myyntikanavien myyntiin.
Revenue % Total Channel =
DIVIDE (
SUM ( Sales[Sales Amount] ),
CALCULATE (
SUM ( Sales[Sales Amount] ),
REMOVEFILTERS ( 'Sales Order'[Channel] )
)
)
| Kanava | Myynnin summa | Tuotto % kanava yhteensä |
|---|---|---|
| Internet | 29 358 677,22 $ | 26,74% |
| Jälleenmyyjä | 80 450 596,98 dollaria | 73,26% |
| yhteensä | 109 809 274,20 dollaria | 100,00 % |
DIVIDE-funktio jakaa lausekkeen, joka laskee yhteen Sales -taulukon Sales Amount -sarakkeen arvon (suodatinkontekstissa) samalla lausekkeella muokatussa suodatinkontekstissa. Se on CALCULATE-funktio, joka muokkaa suodatinkontekstia käyttämällä REMOVEFILTERS-funktiota, joka on suodattimen muokkausfunktio. Se poistaa suodattimet Myyntitilaus-
Seuraava Customer -taulukon lasketun sarakkeen määritelmä luokittelee asiakkaat uskollisuusluokkaan. Skenaario on hyvin yksinkertainen: Kun asiakkaan tuottama tuotto on alle 2 500 dollaria, asiakkaan luokkana on Low; muutoin ne High.
Customer Segment =
IF (
CALCULATE (
SUM ( Sales[Sales Amount] ),
ALLEXCEPT ( Customer, Customer[CustomerKey] )
) < 2500,
"Low",
"High"
)
| Asiakassegmentti | Asiakkaiden määrä | Myynnin summa |
|---|---|---|
| Suuri | 4,637 | 102 670 663,09 dollaria |
| Matala | 13,848 | 7 138 611,11 dollaria |
| yhteensä | 18,485 | 109 809 274,20 dollaria |
Tässä esimerkissä rivikonteksti muunnetaan suodatinkontekstiin. Sitä kutsutaan kontekstisiirtymäksi. ALLEXCEPT-funktio poistaa suodattimet kaikista Customer -taulukon sarakkeista lukuun ottamatta CustomerKey -saraketta.