DAX公式以过滤器分组

时间:2018-10-04 11:11:48

标签: dax powerbi-desktop

在power BI中,我有一个如下表,其中有两列Category和subcategory。我正在尝试将每个类别的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 :(得分:0)

您的这个:

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

EARLIER函数将在其先前的filtercontext(即rowcontext)中返回“ Test01” [Category]。

enter image description here

答案 1 :(得分:0)

您也可以使用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一起从行上下文传递到筛选上下文,而您将无法获得正确的结果。