DAX 公式来计算分组依据与过滤器

DAX formula to count group by with filter

我在 Power BI 中有一个如下所示的 table,其中包含两列“类别”和“子类别”。我正在尝试将每个类别的 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]))

你这个:

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

EARLIER 函数将 return 'Test01'[Category] ​​在其先前的 filtercontext 中,即 rowcontext。

您也可以使用 CALCULATE

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

ALLEXCEPT 函数删除除 Category 之外的任何行上下文。


注意:如果您的 table 中没有其他列,则不需要 ALLEXCEPT 参数,您可以使用它来代替:

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

如果您还有其他列,它们会与 Category 一起从行上下文传递到筛选上下文,您将无法获得正确的结果。