Udfør stillingsskift
Hvad sker der, når et målepunkt eller et målepunkt evalueres i en rækkekontekst? Dette scenario kan forekomme i en beregnet kolonneformel, eller når et udtryk i en gentagende funktion evalueres.
I følgende eksempel vil du føje en beregnet kolonne til debitortabellen for at klassificere kunder i en fordelskundeklasse. Scenariet er simpelt: Når den omsætning, der produceres af kunden, er mindre end $2500, klassificeres kunden som Lav. Ellers klassificeres de som Høj.
Customer Segment =
VAR CustomerRevenue = SUM(Sales[Sales Amount])
RETURN
IF(CustomerRevenue < 2500, "Low", "High")
På side 4 i rapporten skal du tilføje kundens segment som forklaring på cirkeldiagrammet.
Bemærk, at der kun segment en debitorværdi. Årsagen skyldes, at den beregnede kolonneformel giver et forkert resultat: Hver SUM(Sales[Sales Amount])
debitor tildeles værdien Høj, fordi udtrykket ikke evalueres i en filterkontekst. Derfor vurderes hver kunde på summen af hver kolonneværdi for salgsbeløb i salgstabellen .
Hvis du vil gennemtvinge vurderingen SUM(Sales[Sales Amount])
af udtrykket for hver kunde, skal der stillingsskift kontekst, der anvender kolonneværdierne i rækkekonteksten til filtrering af konteksten. Du kan opnå stillingsskift ved at bruge funktionen CALCULATE
uden at overføre filterudtryk.
Rediger den beregnede kolonnedefinition, så det giver det rigtige resultat.
Customer Segment =
VAR CustomerRevenue = CALCULATE(SUM(Sales[Sales Amount]))
RETURN
IF(CustomerRevenue < 2500, "Low", "High")
I cirkeldiagrammet kan du føje den nye beregnede kolonne til forklarings well og kontrollere, at der nu vises to lagkagesegmenter.
I dette tilfælde anvender funktionen CALCULATE
rækkekontekstværdier som filtre, der kaldes stillingsskift . For at være præcis, er processen ikke rigtig arbejde på denne måde, når en entydig kolonne er på tabellen. Når der er en entydig kolonne i tabellen, skal du kun anvende et filter på den pågældende kolonne for at få stillingsskift til at ske. I dette tilfælde anvendes Power BI et filter i kolonnen CustomerKey for værdien i rækkekonteksten.
Hvis du refererer til mål i et udtryk, der evalueres i rækkekontekst, stillingsskift automatisk. På denne måde behøver du ikke overføre målepunktreferencer til CALCULATE
funktionen.
Rediger den beregnede kolonnedefinition, der refererer til målingen Indtægt, og bemærk, at det fortsætter med at give det rigtige resultat.
Customer Segment =
VAR CustomerRevenue = [Revenue]
RETURN
IF(CustomerRevenue < 2500, "Low", "High")
Nu kan du fuldføre formlen Salgs commissionmåleenhed . Hvis du vil producere en total, skal du bruge en iteratorfunktion til at iterere over alle områder i filterkontekst. Udtrykket i funktionen Iterator skal bruge funktionen til CALCULATE
stillingsskift at angive rækkekonteksten i filterkonteksten. Bemærk, at det ikke længere er nødvendigt at teste, om en enkelt kolonneværdi for Land/område i tabellen Salgsterritorium er en filterkontekst, da det er kendt, at den filtreres efter et enkelt land/område (fordi den gentages over områder i filterkontekst, og en region kun tilhører ét land/område).
Skift til side 3 i rapporten, og rediger derefter definitionen af salgs commissionmåleenheden , så den bruger SUMX
iteratorfunktionen:
Sales Commission =
SUMX(
VALUES('Sales Territory'[Region]),
CALCULATE(
[Revenue]
* IF(
VALUES('Sales Territory'[Country]) = "United States",
0.15,
0.1
)
)
)
I tabellen vises nu en samlet salgs commission for alle regioner.