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



基于@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/。

相关内容

  • 没有找到相关文章

最新更新