1

背景:

我必须在查询中同时在 55 个度量和 16 个维度之间切换。我的主要查询是:

MetricMeasure:=
CALCULATE( <Selected Measure>,
                         USERELATIONSHIP( Interface[Values],    <Selected Dimension>    )
)

在上述查询中,度量和维度需要根据下图报表上的选择进行更改。 在此处输入图像描述 问题:这个功能在少量度量和几个维度的情况下运行良好,但是在 55 个度量和 16 个维度的情况下,我的代码变成了 900 行代码。

具有 2 个度量和 2 个维度的 MetricMeasure 示例代码如下所示。

MetricMeasure:= 
SWITCH (
    SELECTEDVALUE ( Master_Dimension[Dimension] ),
    "Age Group", CALCULATE (
        SWITCH (
            SELECTEDVALUE( DIM_metric_center[Metric] ) ,
            "Total Overtime Cost", FACT_Payroll[Overtime],
            "Total Payroll Cost", FACT_Payroll[Total Payroll Cost],
            BLANK ()
        ),
        USERELATIONSHIP ( Interface[Values], Master_Age_Group[Age Group] )
    ),
    "Company", CALCULATE (
        SWITCH (
            SELECTEDVALUE( DIM_metric_center[Metric] ) ,
            "Total Overtime Cost", FACT_Payroll[Overtime],
            "Total Payroll Cost", FACT_Payroll[Total Payroll Cost],
            BLANK ()
        ),
        USERELATIONSHIP ( Interface[Values], DIM_company[LCC Code] )
    )
)

错误信息: 在此处输入图像描述

任何建议,我如何更改代码以使用嵌套 Switch 进行 55 个度量和 16 个维度的组合。

4

1 回答 1

0

我最近遇到了这个问答,USERELATIONSHIP并认为TREATAS重构也可能适用于您的情况。

我还没有测试它,但它可能看起来像这样:

MetricMeasure :=
VAR Dimension =
    SWITCH (
        SELECTEDVALUE ( Master_Dimension[Dimension] ),
        "Age Group", CALCULATETABLE ( VALUES ( Master_Age_Group[Age Group] ) ),
        "Company", CALCULATETABLE ( VALUES ( DIM_company[LCC Code] ) )
    )
RETURN
    CALCULATE (
        SWITCH (
            SELECTEDVALUE ( DIM_metric_center[Metric] ),
            "Total Overtime Cost", FACT_Payroll[Overtime],
            "Total Payroll Cost", FACT_Payroll[Total Payroll Cost],
            BLANK ()
        ),
        TREATAS ( Dimension, Interface[Values] )
    )
于 2020-03-21T14:10:35.507 回答