Wykonywanie przeniesienia kontekstu

Ukończone

Co się dzieje, gdy miara lub wyrażenie miary zostaje ocenione w kontekście wiersza? Taki scenariusz może wystąpić w formule kolumny obliczeniowej lub podczas oceniania wyrażenia w funkcji iteracyjnej.

W poniższym przykładzie dodasz kolumnę obliczeniową do tabeli Customer ( Klient ), aby sklasyfikować klientów w klasie lojalnościowej. Scenariusz jest prosty: gdy przychody generowane przez klienta są mniejsze niż 2500 USD, klient jest klasyfikowany jako Niski; w przeciwnym razie są klasyfikowane jako Wysokie.

Customer Segment =
VAR CustomerRevenue = SUM(Sales[Sales Amount])
RETURN
    IF(CustomerRevenue < 2500, "Low", "High")

Na stronie 4 raportu dodaj kolumnę Customer Segment (Segment klientów) jako legendę wykresu kołowego.

Obraz przedstawiający wizualizację wykresu kołowego zatytułowaną „Revenue by Customer Segment” (Przychód według segmentów klientów). Na wykresie jest tylko jeden segment: High (Wysoka lojalność), odpowiadający 100% danych.

Zauważ, że istnieje tylko jedna wartość kolumny Customer Segment. Jest to wynikiem błędnie utworzonej formuły kolumny obliczeniowej: Każdemu klientowi przypisywana jest wartość High, ponieważ wyrażenie SUM(Sales[Sales Amount]) nie jest oceniane w kontekście filtru. W związku z tym każdy klient jest oceniany na podstawie sumy każdej wartości kolumny Sales Amount w tabeli Sales.

Aby wymusić ocenianie wyrażenia SUM(Sales[Sales Amount])dla każdego klienta, musi nastąpić zmiana kontekstu, która zastosuje wartości kolumn z kontekstu wiersza w kontekście filtru. To przejście można wykonać przy użyciu CALCULATE funkcji bez przekazywania wyrażeń filtru.

Zmień definicję kolumny obliczeniowej, by wynik był prawidłowy.

Customer Segment =
VAR CustomerRevenue = CALCULATE(SUM(Sales[Sales Amount]))
RETURN
    IF(CustomerRevenue < 2500, "Low", "High")

W wizualizacji wykresu kołowego dodaj nową kolumnę obliczeniową do źródła Legenda, sprawdź, czy są teraz wyświetlane dwa segmenty kołowe.

Obraz przedstawiający wizualizację wykresu kołowego zatytułowaną „Revenue by Customer Segment” (Przychód według segmentów klientów). Na wykresie są dwa segmenty: High (Wysoka lojalność) i Low (Niska lojalność). Segment High odpowiada 76% danych, a Low — 24%.

W takim przypadku CALCULATE funkcja stosuje wartości kontekstu wiersza jako filtry, nazywane przejściem kontekstu. Dla jasności: ten proces działa trochę inaczej, gdy w tabeli jest unikatowa kolumna. Wtedy wystarczy zastosować filtr na tej kolumnie, by nastąpiło przeniesienie. W tym przypadku usługa Power BI stosuje filtr wartości w kontekście wiersza na kolumnie CustomerKey (Klucz klienta).

Jeśli odwołujesz się do miar w wyrażeniu, które oceniane jest w kontekście wiersza, przeniesienie kontekstu nastąpi automatycznie. W związku z tym nie trzeba przekazywać odwołań miar do CALCULATE funkcji.

Zmień definicję kolumny obliczeniowej odwołującej się do miary Revenue. Zauważysz, że wynik pozostanie prawidłowy.

Customer Segment = 
VAR CustomerRevenue = [Revenue]
RETURN
    IF(CustomerRevenue < 2500, "Low", "High")

Teraz możesz dokończyć pisanie formuły miary Sales Commission. Aby uzyskać sumę, musisz wykorzystać funkcję iteracyjną, która wykona iterację po wszystkich regionach w kontekście filtru. Wyrażenie funkcji iteratora musi używać CALCULATE funkcji , aby przenieść kontekst wiersza do kontekstu filtru. Zwróć uwagę, że nie musi już testować, czy pojedyncza wartość kolumny Country w tabeli Sales Territory jest w kontekście filtru, ponieważ wiadomo, że jest ona filtrująca według jednego kraju (ponieważ iteruje ona w regionach w kontekście filtru, a region należy tylko do jednego kraju).

Przejdź do strony 3 raportu, a następnie zmodyfikuj definicję miary Sales Commission , aby użyć funkcji iteratora SUMX :

Sales Commission =
SUMX(
    VALUES('Sales Territory'[Region]),
    CALCULATE(
        [Revenue]
        * IF(
            VALUES('Sales Territory'[Country]) = "United States",
            0.15,
            0.1
        )
    )
)

Wizualizacja tabeli wyświetla teraz sumę prowizji ze sprzedaży we wszystkich regionach.

Obraz przedstawiający wizualizację tabeli z trzema kolumnami: Region, Revenue (Przychód) oraz Sales Commission (Prowizja ze sprzedaży). Wyświetla się 10 wierszy z regionami i suma. W kolumnie Sales Commission wyświetla się suma.