Как повторно использовать фильтры, используемые в функции CALCULATE, при добавлении столбцов - PullRequest
1 голос
/ 10 июня 2019

Я пытаюсь добавить несколько столбцов в DAX, используя функции CALCULATE, вот так:

ADDCOLUMNS(
    Summarize(
        CALCULATETABLE(
            'MY TABLE'
            'MY TABLE'[Year] = 2019,
            'MY TABLE'[Month] = January,
            'MY TABLE'[Flag] = "N",
        ),
        'MY TABLE'[Column 1],
        'MY TABLE'[Column 2],
        'MY TABLE'[Column 3],
        "Calculation", 'MY TABLE'[My Measure],
    ),
    "My Calculation With Filters 1", CALCULATE('MY TABLE'[My Measure 1],[Status]="Open",[Flag]="N"),
    "My Calculation With Filters 2", CALCULATE('MY TABLE'[My Measure 2],[Status]="Open",[Flag]="N"), --Same filters as above
    "My Calculation With Filters 3", CALCULATE('MY TABLE'[My Measure 3],[Status]="Open",[Flag]="N"), --Same filters as above
    "My Calculation With Filters 4", CALCULATE('MY TABLE'[My Measure 4],[Status]="Open",[Flag]="N"), --Same filters as above
    "My Calculation With Filters 5", CALCULATE('MY TABLE'[My Measure 5],[Status]="Open",[Flag]="N"), --Same filters as above
)

Интересно, что является лучшей практикой, когда фильтры одинаковы.Я имею в виду, есть ли способ избежать добавления одинаковых фильтров для каждой функции CALCULATE?Я хотел бы иметь возможность поделиться фильтрами, чтобы не дублировать код.

Спасибо!

1 Ответ

1 голос
/ 10 июня 2019

Функция CALCULATE позволяет передавать таблицу в качестве фильтра, поэтому вы можете определить ее один раз как VAR и использовать ее повторно.

CalculatedTable =
VAR FilteredTable =
    FILTER (
        'MY TABLE',
        'MY TABLE'[Status] = "Open" && 'MY TABLE'[Flag] = "N"
        )
VAR Summary =
    SUMMARIZE (
        CALCULATETABLE (
            'MY TABLE',
            'MY TABLE'[Year] = 2019,
            'MY TABLE'[Month] = January,
            'MY TABLE'[Flag] = "N"
        ),
        'MY TABLE'[Column 1],
        'MY TABLE'[Column 2],
        'MY TABLE'[Column 3],
        "Calculation", 'MY TABLE'[My Measure]
    )
RETURN
    ADDCOLUMNS (
        Summary,
        "My Calculation With Filters 1", CALCULATE ( [My Measure 1], FilteredTable ),
        "My Calculation With Filters 2", CALCULATE ( [My Measure 2], FilteredTable ),
        "My Calculation With Filters 3", CALCULATE ( [My Measure 3], FilteredTable ),
        "My Calculation With Filters 4", CALCULATE ( [My Measure 4], FilteredTable ),
        "My Calculation With Filters 5", CALCULATE ( [My Measure 5], FilteredTable )
    )

...