如何在分层类别上应用 CONTAINS 子句以在 Power BI 中创建场景分析

How to apply CONTAINS clause on hierarchical categories to create scenario analysis in Power BI

基于@olly 给出的解决方案 () & file: https://pwrbi.com/so_55281950-2/

在示例文件中创建了一个 "what if" 或情景分析。使用了两个切片器,一个 select 场景,另一个 select 应用场景的对象。 @Olly 提供了一个聪明的解决方案来处理这种情况:

Value + Trend = 
SUMX ( 
    'Demo Fact Table';
    'Demo Fact Table'[Value] * 
        ( 1 +
            IF ( 
                ISFILTERED ( 'Item Chooser'[Item] ) &&
                CONTAINS ( 
                    'Item Chooser';
                    'Item Chooser'[Item];
                    'Demo Fact Table'[Item]
                ) && 
                HASONEVALUE ( 'Scenario - Trend'[Category] );
                VALUES ( 'Scenario - Trend'[Trend Rise] );
                'Demo Fact Table'[trend_default]
            )
        )
    )

在此解决方案的基础上,我一直在尝试应用相同的逻辑,但针对的是我的具体问题。在我的问题中,我不仅有一层 "categories",而是 3 层的层次结构。 如果我的类别具有层次结构,我将如何继续应用相同的解决方案?因此,从我的切片器中,我会 select 三件事:Category1、Year 和 Category2,这将为 selection 产生 trend_rise。并将应用此应用 trend_rise 在 selected(第 4 个切片器)行上,即(项目 A,B or/and C)

category1      -   Year - Category2 - trend rise
POSITIVE-trends    2018   low         5%
POSITIVE-trends    2018   high        5%
POSITIVE-trends    2017   low         5%
NEGATIVE-trends    2017   very high   -5%
NEUTRAL-trends     2018   low         0%
POSITIVE-trends    2018   high        5%
NEUTRAL-trends     2017   low         5%
NEUTRAL-trends     2016   very high   15%

您只需要稍微调整一下度量,检查 trend_rise 字段是否有一个值,如果有则使用该值,否则使用默认值:

Value + Trend = 
SUMX ( 
    'Demo Fact Table',
    'Demo Fact Table'[Value] * 
        ( 1 +
            IF ( 
                ISFILTERED ( 'Item Chooser'[Item] ) &&
                CONTAINS ( 
                    'Item Chooser',
                    'Item Chooser'[Item],
                    'Demo Fact Table'[Item]
                ) && 
                HASONEVALUE ( 'Scenario - Trend'[Trend Rise] ),
                VALUES ( 'Scenario - Trend'[Trend Rise] ),
                'Demo Fact Table'[trend_default]
            )
        )
    )

现在您可以在场景的所有列上使用切片器 table。

请参阅 https://pwrbi.com/so_55332313/ 了解工作示例文件。