Вычислить меру, используя [field1] - [field2]> x в качестве фильтра - PullRequest
0 голосов
/ 14 января 2019

У меня есть таблица фактов, содержащая столбцы OriginalPrice и PaidPrice для транзакций клиентов. Хотелось бы узнать, сколько сделок выгодно со скидкой OriginalPrice - PaidPrice от 10 до 20 долларов. У меня уже есть показатель #Customer, который описывает количество клиентов.

Это для отчета PowerBI, использующего прямое соединение с SSAS. В этом режиме подключения новые столбцы и некоторые функции DAX недоступны.

DiscountTier1 = CALCULATE([#Customer],(FactTable[OriginalPrice]-FactTable[PaidPrice]) >= 10, FactTable[OriginalPrice]-FactTable[PaidPrice]) < 20)

Делая это, я хочу узнать количество клиентов, у которых была скидка от 10 до 20 долларов.

В настоящее время у меня появляется следующая ошибка: CALCULATE has been used in a True/False expression that is used as a table filter expression. This is not allowed

Есть предложения, как этого добиться или что я делаю не так? Спасибо!

Ответы [ 2 ]

0 голосов
/ 14 января 2019

Добавьте функцию FILTER в качестве второго параметра CALCULATE, и в этом вы можете отфильтровать таблицу фактов для записей, удовлетворяющих вашим критериям. Я также рекомендовал бы использовать функцию AND для лучшей читаемости и долгосрочного обслуживания.

DiscountTier1 =
CALCULATE (
    [#Customer],
    FILTER (
        FactTable,
        AND (
            FactTable[OriginalPrice] - FactTable[PaidPrice]
                >= 10,
            FactTable[OriginalPrice] - FactTable[PaidPrice]
                <= 20
        )
    )
)
0 голосов
/ 14 января 2019

Вы ищете меру, подобную этой:

DiscountTier1 = 
COUNTROWS(
    FILTER(
        SUMMARIZE (
        'FactTable';
        'FactTable'[customer_id];
        "DISCOUNT"; 
            CALCULATE(SUM(FactTable[OriginalPrice])) - CALCULATE(SUM(FactTable[PaidPrice]))
         );
     [DISCOUNT] <= 20 && [DISCOUNT] >= 10
    ) 
)

Этот запрос вычисляет скидку для всех строк и фильтрует строки со скидкой от 10 до 20

...