Jaa


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 on useita , ne voidaan laskea käyttämällä () loogisen operaattorin. Se tarkoittaa, että ehtojen on oltava , () loogisen operaattorin mukaan, mikä tarkoittaa, että kummalle tahansa ehdolle voidaan .

Totuusarvofilter lausekkeet

Ehtolausekefilter on lauseke, joka antaa tulokseksi TRUEorFALSE. 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 or sarakkeista all.
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, filters kontekstiin lisätään uusia filter lausekkeen evaluate.
    • If sarakkeet (or taulukot) ovat jo filter kontekstissa, uusi filters korvaa olemassa olevat filtersevaluate-lausekkeen CALCULATE.
  • 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

-funktio arvioi Sales --taulukon Sales Amount -sarakkeen muokatussa kontekstissa. Uusi filter lisätään Product-taulukkoon Color -sarake –or, filter korvaa kaikki sarakkeessa jo käytetyt filter.

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 Sales Order -taulukosta Channelsarakkeesta.

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.

Filter kontekstiarivikontekstinCALCULATETABLE funktionFilter funktioita