我有以下数据来源:
我的支点行是Team =>项目名称带有"值"值中的列。我正在计算所有具有价值的项目的百分比" True"与所有具有价值的项目相比(忽视那些没有价值的项目)。这是我在PowerPivot中使用的公式:
=CALCULATE(COUNTROWS(),'Table'[Value]=TRUE()) / CALCULATE(COUNTROWS(), ('Table'[Value]=FALSE() || 'Table'[Value]=TRUE()), ISLOGICAL('Table'[Value]))
该公式有效,但我只需要在" Team"级别,扩展的项目应该仍然有"真/假"值。这可能吗?优选地,没有VBA。
答案 0 :(得分:0)
格式化代码。如果你喜欢阅读很长的行,那很好,但对我们其他人使用DAX Formatter。
True vs All =
CALCULATE(
COUNTROWS( 'Table' ) // It's considered a best practice
// to explicitly name the table in
// COUNTROWS()
,'Table'[Value]=TRUE()
) / CALCULATE(
COUNTROWS( 'Table' )
// You can remove the test for [Value] = TRUE() ||
// [Value] = FALSE()
,ISLOGICAL('Table'[Value])
)
ConditionalDisplay =
IF(
ISFILTERED( 'Table'[Project] )
&& HASONEVALUE( 'Table'[Project] )
,VALUES( 'Table'[Value] )
,[True vs All]
)
[True vs All]是您现有措施的清理版本。
[ConditionalDisplay]就像它的名字所说的那样。根据条件显示不同的值。
我们检查ISFILTERED()以覆盖[Team]的给定值只有一个项目的边缘情况。我们检查HASONEVALUE()以涵盖[Project]上存在显式过滤器(切片器或过滤器)的情况,但是多个是在上下文中(总计等级)。
当两者都为真时,我们返回VALUES('Table'[Value]),该列由[Value]中的不同值组成。只有当我们已经知道只有一个不同的值时,才会对此进行评估。在DAX中,1x1表被隐式转换为标量。
当[Value]有多个不同的值或者未过滤时,我们会返回原始度量。
[ConditionalDisplay]将失败,如果[Project]的相同值有两行,其值为[Value]的多个值。