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