Условное различное количество, основанное на показателе в DAX

Я пытаюсь сделать это с DAX и не могу получить правильное четкое количество...

AccountID   OrderDate   Product     SalesAmount DiscountAmount
1023        Nov-14      Product001  $0          $5.00
1045        Nov-14      Product001  $30.00  $10.00
1023        Nov-14      Product002  $1.00       $0  
1089        Nov-14      Product001  $0          $5.00
2045        Nov-14      Product001  $50.00  $25.00
1045        Nov-14      Product001  $(30.00)    $0 

Q1. Как подсчитать отдельных клиентов, у которых общая сумма продаж составила 0 долларов США (ответ - 2, 1045, 1089) - см. Здесь, я хочу игнорировать 1023, поскольку общая сумма продаж для этой учетной записи не равна 0 долларов США.

Я пытался создать меру:

TotalCustomers:=CALCULATE(DISTINCTCOUNT(Table1[AccountID]), 'Table1')

А потом добавил это:

ZeroCustomers:=CALCULATE([TotalCustomers], FILTER('Table1', [Sum of SalesAmount]<>0))

Но счет 1023 засчитывается, и я получаю "3" для ZeroCutomers

Q2. Как добавить DiscountAmount для клиентов, чья общая сумма продаж составила 0 долларов США (ответ 15 долларов США)

Это расширение для Q1 - как только я выясню Q1 - я, вероятно, смогу понять это.

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

Любая помощь будет оценена!

Спасибо!

2 ответа

Решение

Возможно, я понял это:

Q1

ZeroCustomers:=COUNTROWS (
    FILTER (
        ADDCOLUMNS (
            VALUES ( Table1[AccountID] ),
            "TotalSalesAmount", CALCULATE ( SUM ( [SalesAmount] ) )
        ),
        [TotalSalesAmount] = 0
    )
)

Q2

ZeroCustomerDiscount:=CALCULATE(SUM([DiscountAmount]),
    FILTER (
        ADDCOLUMNS (
            VALUES ( Table1[AccountID] ),
            "TotalSalesAmount", CALCULATE ( SUM ( [SalesAmount] ) )
        ),
        [TotalSalesAmount] = 0
    )
)

Пожалуйста, прокомментируйте / ответьте, если у вас есть лучший способ сделать то же самое. Надеюсь, что это помогает другим!

Как насчет:

ZeroCustomers:=CALCULATE(DISTINCTCOUNT(Table1[AccountID]), ALL(Table1), [Sum of SalesAmount]<>0))

ZeroCustomersDiscount:=CALCULATE(SUM([DiscountAmount]), ALL(Table1), [Sum of SalesAmount]<>0))

Я думаю, что ваша предыдущая попытка не сработала из-за того, как DAX обрабатывает фильтры и группировки. Хотел бы я дать вам более подробное объяснение, но я все еще учусь сам.

Другие вопросы по тегам