基于@olly给出的解决方案(Power BI:如何方案分析,其中选择器从切片器"查找"选择值并从该行获取值)和文件:https://pwrbi.com/so_55281950-2/
在示例文件中,将创建"假设"或方案分析。使用两个切片器,一个切片器选择方案,另一个切片器选择要应用方案的对象。@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]
)
)
)
在此解决方案的基础上,我一直在尝试应用相同的逻辑,但针对我的特定问题。在我的问题中,我不仅有一层"类别",而是 3 个级别的层次结构。 如果我的类别具有层次结构,我将如何继续应用相同的解决方案?因此,从我的切片器中,我将选择三个内容:类别 1、年份和类别 2,这将产生选择trend_rise。并将应用此trend_rise应用于选定的(第 4 个切片器)行,即(项目 A、B 或/和 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]
)
)
)
现在,您可以在方案表的所有列上使用切片器。
有关工作的示例文件,请参见 https://pwrbi.com/so_55332313/。