Как фильтровать SUMMARIZECOLUMNS после перекрестного соединения - PullRequest
0 голосов
/ 30 января 2020

Я пытаюсь отфильтровать SUMMARIZECOLUMNS с помощью CALCULATETABLE, мне выдается сообщение об ошибке:

"SummarizeColumns не может иметь внешний контекст фильтра"

Это из-за версии SSAS, моя версия: 13.0.2213.0

EVALUATE
CALCULATETABLE(
    SUMMARIZECOLUMNS(
        'Product'[Model Name],
        'Product'[Product Line],
        'Product'[Product Name],
        'Customer'[First Name],
        'Customer'[Last Name],
        "Internet Current Quarter Sales", [Internet Current Quarter Sales],
        "Internet Total Sales", [Internet Total Sales]
    ),
    'Internet Sales'[Order Date] > DATEVALUE("1 Jan 2011"),
    OR('Geography'[Country Region Name] = "Australia", 'Geography'[Country Region Name] = "United States")
)
ORDER BY 'Product'[Model Name]

Я могу фильтровать, поместив функцию FILTER в SUMMARIZECOLUMNS, однако это дало мне другой результат (меньше записей, чем ожидается), поскольку таблица была отфильтрована перед соединением corss: https://docs.microsoft.com/en-us/dax/summarizecolumns-function-dax

EVALUATE
SUMMARIZECOLUMNS(
    'Product'[Model Name],
    'Product'[Product Line],
    'Product'[Product Name],
    'Customer'[First Name],
    'Customer'[Last Name],
    FILTER('Internet Sales', [Order Date] > DATEVALUE("1 Jan 2011")),
    FILTER('Geography', [Country Region Name] = "Australia" || [Country Region Name] = "United States"),
    "Internet Current Quarter Sales", [Internet Current Quarter Sales],
    "Internet Total Sales", [Internet Total Sales]
)
ORDER BY 'Product'[Model Name]

filterTable: выражение таблицы, которое добавляется в контекст фильтра всех столбцы, указанные в качестве аргументов groupBy_columnName. Значения, представленные в таблице фильтров, используются для фильтрации перед выполнением перекрестного соединения / автоматического существования.

Есть идеи, как добиться фильтра, аналогичного функции CALCULATETABLE? Спасибо.

...