(Power)Pivot - 显示true / false并同时计算

时间:2016-01-05 17:11:29

标签: excel powerpivot

我有以下数据来源:

table1

我的支点行是Team =>项目名称带有"值"值中的列。我正在计算所有具有价值的项目的百分比" True"与所有具有价值的项目相比(忽视那些没有价值的项目)。这是我在PowerPivot中使用的公式:

=CALCULATE(COUNTROWS(),'Table'[Value]=TRUE()) / CALCULATE(COUNTROWS(), ('Table'[Value]=FALSE() || 'Table'[Value]=TRUE()), ISLOGICAL('Table'[Value]))

该公式有效,但我只需要在" Team"级别,扩展的项目应该仍然有"真/假"值。这可能吗?优选地,没有VBA。

1 个答案:

答案 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]的多个值。