CALCULATE
Koskee seuraavia:Laskettu sarakeLaskettu taulukkoMeasureVisuaalinen laskutoimitus
Laskee lausekkeen muokatussa filter kontekstissa.
Muistiinpano
Saatavilla on myös CALCULATETABLE funktio. Se suorittaa täsmälleen samat toiminnot, except se muokkaa filter kontekstia, käytetään lausekkeessa, joka palauttaa taulukko-objektin.
Syntaksi
CALCULATE(<expression>[, <filter1> [, <filter2> [, …]]])
Parametrit
Termi | Määritelmä |
---|---|
expression |
Laskettava lauseke. |
filter1, filter2,… |
(Valinnainen) Ehtolausekkeet or taulukkolausekkeita, jotka määrittävät filters, orfilter muokkausfunktioita. |
first-parametrina käytettävä lauseke on sama kuin measure.
Filters voivat olla:
- Totuusarvofilter lausekkeet
- Taulukon filter lausekkeet
- muokkausfunktioiden Filter
Kun
Totuusarvofilter lausekkeet
Ehtolausekefilter on lauseke, joka antaa tulokseksi TRUE
orFALSE
. Niiden on noudatettava useita sääntöjä:
- Ne voivat viitata yhden taulukon sarakkeisiin.
- Ne eivät voi viitata mittareihin.
- Ne eivät voi käyttää sisäkkäistä CALCULATE funktiota.
syyskuun 2021 julkaisusta alkaen Power BI Desktopissa ovat myös seuraavat:
- Ne eivät voi käyttää funktioita, jotka skannaavat or palauttavat taulukon, ellei niitä välitetä argumentteina koostamisfunktioihin.
- Ne voivat sisältää koostamisfunktion, joka palauttaa skalaariarvoisen value. Esimerkiksi
Total sales on the last selected date = CALCULATE ( SUM ( Sales[Sales Amount] ), 'Sales'[OrderDateKey] = MAX ( 'Sales'[OrderDateKey] ) )
Taulukon filter lauseke
Taulukkolauseke filter käyttää taulukko-objektia filter. Se voi olla viittaus mallitaulukkoon, mutta todennäköisempää on, että se on funktio, joka palauttaa taulukko-objektin. voit käyttää FILTER-funktiota monimutkaisten filter ehtojen käyttämiseen, mukaan lukien ne, joita totuusarvolauseke ei voi määrittää filter lausekkeessa.
Filter muokkausfunktiot
Filter muokkausfunktioiden avulla voit tehdä muutakin kuin vain lisätä filters. Niiden avulla voit hallita paremmin filter kontekstia.
Funktio | Tarkoitus |
---|---|
REMOVEFILTERS | Poista allfilters, orfilters yhdestä or useammasta taulukon sarakkeesta or yksittäisen taulukon all sarakkeista. |
ALL 1, ALLEXCEPT, ALLNOBLANKROW | Poista filters yhdestä or useammasta sarakkeesta yhden taulukon all sarakkeista or. |
KEEPFILTERS | Lisää filter poistamatta samojen sarakkeiden aiemmin luotuja filters. |
USERELATIONSHIP | Ota passiivinen yhteys related sarakkeiden välille, jolloin aktiivinen yhteys poistetaan automaattisesti käytöstä. |
CROSSFILTER | Muokkaa filter suuntaa (molemmista yksittäiseen, or yksittäisestä molempiin) or poistaa suhteen käytöstä. |
1ALL-funktio and sen variantit toimivat niin kuin molemmat filter muokkaajat and taulukko-objekteja palauttavina funktioina. If työkalu tukee REMOVEFILTERS funktiota, on parempi käyttää sitä filterspoistamiseen.
Palauta value
value, joka on lausekkeen tulos.
Huomautuksia
Kun filter lausekkeita annetaan, CALCULATE-funktio muokkaa filter kontekstia lausekkeen evaluate. Kullekin filter-lausekkeelle on kaksi mahdollista vakiotulosta, kun filter-lauseke not rivitetään KEEPFILTERS-funktioon:
- If sarakkeet (or taulukot) eivät ole filter kontekstissa, filter kontekstiin lisätään uusia filters lausekkeen evaluate.
- If sarakkeet (or taulukot) ovat jo filter kontekstissa, uusi filters korvaa olemassa olevat filtersCALCULATE-lausekkeen evaluate.
Ilman
käytettävä -funktio saavuttaa tietyn vaatimuksen. Se siirtää rivikontekstin filter kontekstiin. Sitä tarvitaan, kun mallitietojen yhteenvedon sisältävä lauseke (not mallin measure) on arvioitava rivikontekstissa. Tämä skenaario voi tapahtua lasketun sarakkeen kaavassa or, kun iteraattori-funktion lauseke arvioidaan. Huomaa, että kun mallin measure käytetään rivikontekstissa, kontekstin siirtymä on automaattinen. Tätä funktiota not tueta DirectQuery-tilassa, kun sitä käytetään lasketuissa sarakkeissa or rivitason suojauksen (RLS) säännöissä.
Esimerkkejä
Seuraava Sales -taulukon measure määritys tuottaa tuoton tuloksen, mutta vain tuotteille, joiden väri on sininen.
Tämän artikkelin esimerkkejä voidaan käyttää sample Adventure Works DW 2020 Power BI Desktop -mallin kanssa. Jos haluat hankkia mallin, katso DAXsample mallin.
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- taulukkomääritelmä measure tuottaa myynnin suhteen all myyntikanaviin.
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 % |
Revenue % Total Channel =
DIVIDE(
SUM(Sales[Sales Amount]),
CALCULATE(
SUM(Sales[Sales Amount]),
REMOVEFILTERS('Sales Order'[Channel])
)
)
DIVIDE-funktio jakaa lausekkeen, joka laskee yhteen Sales -taulukon Sales Amount -sarakkeen value (filter-kontekstissa) samalla lausekkeella muokatussa filter kontekstissa. Se on CALCULATE-funktio, joka muokkaa filter kontekstia REMOVEFILTERS-funktiolla, joka on filter muokkausfunktio. Se poistaa
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"
)
Tässä esimerkissä rivikonteksti muunnetaan filter kontekstiin. Sitä kutsutaan kontekstisiirtymäksi. ALLEXCEPT-funktio poistaa filtersallCustomer -taulukon sarakkeista exceptCustomerKey -sarakkeesta.
sisällön Related
Filter
rivikontekstin
CALCULATETABLE-funktion
Filter-funktiot