Расчет Dax фильтра на основе суммы с начала года

В табличной модели SSAS я пытаюсь подсчитать количество отдельных клиентов, которые приобрели данный продукт за период с начала года. Таблица содержит показатели, которые не являются явными суммами, поэтому я получаю декартово произведение всех продуктов для каждого клиента, независимо от того, нет ли продаж. Я пытаюсь ограничить счет, отфильтровывая комбинации клиент / продукт с YTD Sales = 0. Однако я не могу заставить ФИЛЬТР распознавать контекст DATESYTD. Это только когда-либо фильтрует на основе продаж, существующих в течение выбранного календарного месяца. Я пытался вставить функцию ALL в разные стороны.

Это то, что я до сих пор.

Measure: 
CALCULATE (
      DISTINCTCOUNT ( Fact[Customer] ), 
      DATESYTD ( Calendar[Date] ), 
      FILTER ( Fact, 
           CALCULATE ( [Sum of Sales], DATESYTD ( Calendar[Date] ) ) <> 0 
      )
 )

Эта мера, например, будет подсчитывать отдельных клиентов, покупающих продукт в месяце № 5, если месяц № 5 явно выбран. Однако в него не входит клиент, который приобрел этот товар в месяце № 2 того же года.

1 ответ

Я думаю, что следующий DAX должен добиться цели:

COUNTROWS(
    FILTER(
        VALUES(Fact[Customer]),
        CALCULATE ( [Sum of Sales], DATESYTD ( Calendar[Date] ) ) <> 0 
    )
)

Также убедитесь, что ваша таблица "Календарь" помечена как таблица дат. Если по какой-либо причине вы предпочитаете не помечать его как таблицу дат, перепишите вышеупомянутый DAX:

COUNTROWS(
    FILTER(
        VALUES(Fact[Customer]),
        CALCULATE ( [Sum of Sales], DATESYTD ( Calendar[Date] ), ALL('Calendar') ) <> 0 
    )
)

Изменить: У вас есть записи в вашей таблице фактов, где [Sum of Sales] это 0? Если нет, то вы могли бы значительно упростить и улучшить производительность, написав:

CALCULATE(
    DISTINCTCOUNT(Fact[Customer]),
    DATESYTD( Calendar[Date] )
)

Опять же, если вы не пометили свою таблицу "Календарь" как таблицу дат, добавьте ALL(Calendar) удалить фильтр по конкретным календарным столбцам.

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