Proveďte kontextový přechod
Co se stane, když se míra nebo výraz míry vyhodnotí v kontextu řádku? K tomuto scénáři může dojít ve vzorci počítaného sloupce nebo při vyhodnocení výrazu ve funkci iterátoru.
V následujícím příkladu přidáte vypočítaný sloupec do tabulky Zákazník , abyste zařadili zákazníky do věrnostní třídy. Scénář je jednoduchý: Když jsou tržby, které zákazník vyprodukuje, nižší než $2500, je zákazník klasifikován jako Nízký; jinak jsou klasifikovány jako Vysoké.
Customer Segment =
VAR CustomerRevenue = SUM(Sales[Sales Amount])
RETURN
IF(CustomerRevenue < 2500, "Low", "High")
Na Stránku 4 přehledu přidejte jako legendu výsečového grafu sloupec Zákazník segment .
Všimněte si, že existuje pouze jedna Customer segment hodnota. Důvodem je to, že vzorec vypočteného sloupce poskytuje nesprávný výsledek: Každému zákazníkovi je přiřazena hodnota Vysoká protože výraz SUM(Sales[Sales Amount])
není vyhodnocen v kontext filtru. V důsledku toho je každý zákazník posuzován na základě součtu každéČástka prodeje ve sloupci Prodej tabulka.
Chcete-li vynutit vyhodnocení SUM(Sales[Sales Amount])
výrazu pro každého zákazníka, musí proběhnout kontextový přechod, který použije hodnoty kontextového sloupce řádku na filtrování kontextu. Tento přechod můžete provést pomocí funkce CALCULATE
bez předávání výrazů filtru.
Upravte vypočítaný definice sloupce tak, aby poskytoval správný výsledek.
Customer Segment =
VAR CustomerRevenue = CALCULATE(SUM(Sales[Sales Amount]))
RETURN
IF(CustomerRevenue < 2500, "Low", "High")
Ve vizuálu výsečového grafu přidejte nový vypočítaný sloupec do prohlubně Legend a ověřte, že se nyní zobrazují dva výsečové segmenty.
V tomto případě funkce CALCULATE
použije kontextové hodnoty řádku jako filtry, známé jako přechod kontextu. Abychom byli přesní, proces tak úplně nefunguje, když je na stole jedinečný sloupec. Když je v tabulce jedinečný sloupec, stačí na tento sloupec použít filtr, aby se přechod uskutečnil. V tomto případě Power BI použije filtr na sloupec CustomerKey pro hodnotu v kontextu řádku.
Pokud odkazujete na míry ve výrazu, který je vyhodnocen v kontextu řádku, kontextový přechod je automatický. Nemusíte tedy předávat odkazy na měření funkci CALCULATE
.
Upravte vypočítaný definice sloupce, který odkazuje na Tržby měřítko, a všimněte si, že i nadále poskytuje správný výsledek.
Customer Segment =
VAR CustomerRevenue = [Revenue]
RETURN
IF(CustomerRevenue < 2500, "Low", "High")
Nyní můžete vyplnit vzorec Provize z prodeje . Chcete-li vytvořit součet, musíte použít funkci iterátoru k iteraci přes všechny oblasti v kontextu filtru. Výraz funkce iterátoru musí používat funkci CALCULATE
k přechodu kontextu řádku do kontextu filtru. Všimněte si, že již není třeba testovat, zda je ve filtru jedna hodnota Země v tabulce Oblast prodeje kontextu, protože je známo, že je filtrován podle jedné země (protože iteruje přes regiony v kontextu filtru a region patří pouze do jedné země).
Přepněte na stránku 3 přehledu a poté upravte definici Provize za prodej tak, aby používala SUMX
funkce iterátoru:
Sales Commission =
SUMX(
VALUES('Sales Territory'[Region]),
CALCULATE(
[Revenue]
* IF(
VALUES('Sales Territory'[Country]) = "United States",
0.15,
0.1
)
)
)
Vizuál tabulky nyní zobrazuje celkovou prodejní provizi pro všechny regiony.