Выполнение контекстного перехода

Завершено

Что происходит при вычислении меры или выражения меры в контексте строки? Этот сценарий может возникнуть в формуле вычисляемого столбца или при вычислении выражения в функции-итераторе.

В следующем примере мы добавим вычисляемый столбец в таблицу Customer, чтобы классифицировать клиентов по классам лояльности. Этот сценарий прост. Если доход, предоставляемый клиентом, составляет менее 2500 долларов США, клиент классифицируется как Low; в противном случае он классифицируется как High.

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

На стр. 4 отчета добавьте столбец Customer Segment в условных обозначениях круговой диаграммы.

На изображении показан визуальный элемент круговой диаграммы под названием Revenue by Customer Segment. Здесь есть только один сегмент: High, который содержит 100 % данных.

Обратите внимание, что существует только одно значение Customer Segment. Причина этого заключается в том, что формула вычисляемого столбца выдает неверный результат: Каждому клиенту назначается значение High, так как выражение SUM(Sales[Sales Amount]) не вычисляется в контексте фильтра. Следовательно, каждый клиент оценивается по сумме каждого значения столбца Sales Amount в таблице Sales.

Чтобы принудительно выполнить вычисление выражения SUM(Sales[Sales Amount])для каждого клиента, необходимо выполнить контекстный переход, который применяет значения столбца в контексте строки для фильтрации контекста. Этот переход можно выполнить с помощью функции CALCULATE без передачи выражений фильтра.

Измените определение вычисляемого столбца таким образом, чтобы оно получало правильный результат.

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

В визуальном элементе круговой диаграммы добавьте новый вычисляемый столбец в категорию условных обозначений и убедитесь, что теперь отображаются два сегмента круговой диаграммы.

На изображении показан визуальный элемент круговой диаграммы под названием Revenue by Customer Segment. На диаграмме есть два сегмента: High и Low. Сегмент High представляет 76 % данных, а сегмент Low — 24 %.

В этом случае функция CALCULATE применяет значения контекста строк в качестве фильтров. Это называется контекстным переходом. Чтобы быть точным, процесс не работает так, как если бы в таблице был уникальный столбец. Если в таблице есть уникальный столбец, чтобы выполнить переход, к нему необходимо применить фильтр. В этом случае Power BI применяет фильтр к столбцу CustomerKey для значения в контексте строки.

При ссылке на меры в выражении, вычисляемом в контексте строки, переход контекста выполняется автоматически. Поэтому не нужно передавать ссылки на меры в функцию CALCULATE.

Измените определение вычисляемого столбца, которое ссылается на меру Revenue, и обратите внимание на то, что она будет выдавать правильный результат.

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

Теперь можно выполнить формулу меры Sales Commission. Чтобы получить итоговое значение, необходимо использовать функцию-итератор для прохода по всем регионам в контексте фильтра. Выражение функции-итератора должно использовать функцию CALCULATE для перехода контекста строки в контекст фильтра. Обратите внимание, что больше не требуется проверять, находится ли значение столбца Country в таблице Sales Territory в контексте фильтра, так как известно, что фильтрация выполняется по одной стране (так как она проверяет регионы в контексте фильтра, а регион связан только с одной страной).

Перейдите на стр. 3 отчета, а затем измените определение меры Sales Commission, чтобы использовать функцию-итератор SUMX:

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

Теперь в визуальном элементе таблицы отображается суммарная комиссия от продаж по всем регионам.

На изображении показан визуальный элемент таблицы с тремя столбцами: Region, Revenue и Sales Commission. Отображаются десять строк региона и итоговая величина. Для общей комиссии от продаж теперь есть общий итоговый результат.