DAX: требуется замена SWITCH из-за превышения ресурсов памяти - PullRequest
1 голос
/ 20 марта 2020

Справочная информация:

Мне нужно одновременно переключаться между 55 мерами и 16 измерениями в запросе. Мой основной запрос:

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

в приведенном выше запросе, меру и измерение необходимо изменить в соответствии с выбором в отчете, показанном ниже. enter image description here Проблема: эта функция работает нормально с несколькими тактами и несколькими измерениями, но с 55 тактами и 16 измерениями мой код становится 900 строк для кода.

Пример кода MetricMeasure с 2 мерами и 2 измерениями выглядит следующим образом.

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] )
    )
)

Сообщение об ошибке: enter image description here

Любое предложение, как я могу изменить код таким образом, чтобы использовать вложенный коммутатор для 55 мер и 16 измерений комбинация.

1 Ответ

0 голосов
/ 21 марта 2020

Я недавно сталкивался с этими вопросами и ответами и думаю, что рефакторинг от 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] )
    )
...