Kontekstisiirron suorittaa
Mitä tapahtuu, kun mitta- tai mittalauseke arvioidaan rivikontekstissa? Näin voi tapahtua lasketussa sarakekaavassa tai silloin, kun iteraattoritoiminnon lauseke arvioidaan.
Seuraavassa esimerkissä lisäät asiakastauluun lasketun sarakkeen, joka luokittelee asiakkaat kanta-asiakkuusluokkaan. Skenaario on yksinkertainen: Kun asiakkaan tuottama tuotto on pienempi kuin $2500, asiakas luokitellaan matalaksi. Muussa tapauksessa ne luokitellaan suuriksi.
Customer Segment =
VAR CustomerRevenue = SUM(Sales[Sales Amount])
RETURN
IF(CustomerRevenue < 2500, "Low", "High")
Lisää raportin sivulta 4 asiakkaan segmentti column ympyräkaavion selittelyksi.
Huomaa, että vain yksi segmentti value on olemassa. Syy on se, että laskettu sarakekaava tuottaa väärän tuloksen: SUM(Sales[Sales Amount])
Jokaiselle asiakkaalle määritetään Suuri-arvo, koska lauseketta ei arvioida suodatinkontekstissa. Jokaisen asiakkaan arvo arvioidaan myyntitaulun jokaisen Myyntisumma-sarakkeen arvon summan perusteella.
Jos haluat pakottaa kunkin SUM(Sales[Sales Amount])
asiakkaan lausekkeen arvioinnin, kontekstisiirron on oltava käytössä, jossa rivikontekstisarakkeen arvoja käytetään suodatuskontekstissa. Voit suorittaa tämän siirron käyttämällä toimintoa siirtämättä CALCULATE
suodatinlausekkeita.
Muokkaa laskettua sarakemääritys siten, että se tuottaa oikean tuloksen.
Customer Segment =
VAR CustomerRevenue = CALCULATE(SUM(Sales[Sales Amount]))
RETURN
IF(CustomerRevenue < 2500, "Low", "High")
Lisää ympyräkaavion visuaalinen uusi laskettu sarake selitteen ylle ja tarkista, että näkyvissä on nyt kaksi ympyräsegmenttiä.
Tässä tapauksessa toiminto käyttää rivikontekstiarvoja CALCULATE
suodattimina eli kontekstisiirroina . Jos haluat olla tarkka, prosessi ei toimi niin, että yksilöivä sarake on pöydällä. Kun taulussa on yksilöivä sarake, tapahtuma voidaan tehdä vain suodattamalla tämä sarake. Tässä tapauksessa rivikontekstissa Power BI arvoa suodatetaan CustomerKey-sarakkeessa .
Jos viittaat lausekkeen mitat rivikontekstissa arvioituun lausekkeeseen, kontekstin siirto on automaattinen. Näin ollen mittaviitteitä toimintoon ei tarvitse CALCULATE
siirtää.
Muokkaa laskettua sarakemääritys, joka viittaa tuottomittaan , ja huomaa, että tuotanto jatkuu oikean tuloksen tuottamiseen.
Customer Segment =
VAR CustomerRevenue = [Revenue]
RETURN
IF(CustomerRevenue < 2500, "Low", "High")
Nyt voit täyttää Myynti commission - mittakaavan . Kokonaissumman tuottamiseksi on iteraattoritoimintoa käytettävä kaikkien alueiden iteraattorina suodatuskontekstissa. Iteraattori-lausekkeen on käytettävä toimintoa CALCULATE
, kun rivikonteksti voidaan siirtyä suodatinkontekstiin. Huomaa, että sen ei enää tarvitse testata, onko yksittäinen maasarakkeen arvo Myyntiennako-taulukossa suodatinkontekstissa, koska sen tiedettiin suodattavan vain yhdessä maassa (koska se suodattaa alueen eri alueilla suodattimen yhteydessä ja alue kuuluu vain yhteen maahan).
Siirry raportin sivulle 3 ja käytä SUMX
iteraattoritoimintoa muokkaamalla Myynti commission -mittamääritystä:
Sales Commission =
SUMX(
VALUES('Sales Territory'[Region]),
CALCULATE(
[Revenue]
* IF(
VALUES('Sales Territory'[Country]) = "United States",
0.15,
0.1
)
)
)
Taulukossa näkyy nyt kaikkien alueiden myynti commission yhteensä.