Формула DAX для подсчета групп с фильтром

У меня есть таблица, как показано ниже, в Power BI с двумя столбцами Категория и подкатегория. Я пытаюсь получить количество subcategory = "S2" для каждой категории в вычисляемом столбце (как в S2_count).

Category    Subcategory S2_count
  A           S1        1
  A           S2        1
  A           S1        1
  B           S1        2
  B           S3        2
  B           S2        2
  B           S2        2
  C           S2        2
  C           S3        2
  C           S2        2

Есть ли способ получить это с помощью DAX? Я попробовал приведенную ниже формулу, но не знаю, как применить фильтр и группировку по

s2_count = 
            CALCULATE(
              COUNT(Test01[subcategory]),
                   GROUPBY(Test01,Test01[subcategory]))

person nsr    schedule 04.10.2018    source источник


Ответы (2)


Твое это:

s2_count =
COUNTROWS (
    FILTER (
        'Test01',
        'Test01'[Category] = EARLIER ( 'Test01'[Category] )
            && 'Test01'[Subcategory] = "S2"
    )
)

Функция EARLIER вернет «Test01» [Категория] в своем предыдущем контекстном фильтре, который является контекстом строки.

введите здесь описание изображения

person Marco Vos    schedule 04.10.2018

Вы также можете сделать это с помощью CALCULATE.

s2_count =
CALCULATE( COUNTROWS( Test01 ),
    Test01[Subcategory] = "S2",
    ALLEXCEPT( Test01, Test01[Category] )
)

Функция ALLEXCEPT удаляет любой контекст строки, кроме Category.


Примечание. Если в вашей таблице нет других столбцов, вам не нужен аргумент ALLEXCEPT, и вы можете просто использовать его вместо этого:

s2_count = CALCULATE( COUNTROWS( Test01 ), Test01[Subcategory] = "S2" )

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

person Alexis Olson    schedule 04.10.2018