Kontekstisiirron suorittaa

Valmis

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ä.