Формула DAX для подсчета групп с помощью фильтра - PullRequest
0 голосов
/ 04 октября 2018

У меня есть таблица, как показано ниже в 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]))

Ответы [ 2 ]

0 голосов
/ 04 октября 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, и вы не получите правильный результат.

0 голосов
/ 04 октября 2018

Thy this:

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

Функция EARLIER вернет 'Test01' [Category] в своем предыдущем filtercontext, который является rowcontext.

enter image description here

...