Выражение, указанное в операторе EVALUATE, не является допустимым табличным выражением

Я работаю над табличным кубом в Visual Studio. У меня есть формула DAX в кубе, которая отлично работает:

SUMX(FILTER(factFHA, factFHA[EventCd]="D"), [LoanCount])

Когда я запускаю его в SSMS как:

evaluate(
    SUMX(FILTER(factFHA, factFHA[EventCd]="D"), [LoanCount])
)

он не работает со следующей ошибкой:

Запрос (1, 1) Выражение, указанное в операторе EVALUATE, не является допустимым табличным выражением.

У меня есть 2 другие формулы, которые работают нормально:

evaluate(factFHA)

evaluate(filter('factFHA', [EventCd] = "D"))

Я не могу понять, что не так с SUMX с FILTER

Пожалуйста, порекомендуйте. Спасибо.


person FLICKER    schedule 06.12.2016    source источник
comment
Это DAX, а не MDX. Пожалуйста, не помечайте его как MDX - спасибо!   -  person SebTHU    schedule 08.12.2016


Ответы (1)


Функция ОЦЕНКА работает, только если вы передаете таблицу или выражение, которое возвращает таблица, вы передаете функцию SUMX, которая возвращает скалярное значение (Десятичный).

Синтаксис для написания запросов с использованием DAX следующий:

[DEFINE {  MEASURE <tableName>[<name>] = <expression> } -> Define a session (optional) measure
EVALUATE <table>  --> Generate a table using your measures or creating calculated columns
[ORDER BY {<expression> [{ASC | DESC}]}[, …] --> Order the returned table by a passed column or expression 
[START AT {<value>|<parameter>} [, …]]] --> This is an ORDER BY Sub-clause to define from which the query results will start.

Определите свою меру, затем используйте ее в предложении EVALUATE, используя выражение, вычисляющее таблицу.

DEFINE
MEASURE factFHA[MyMeasure] =
    SUMX ( FILTER ( factFHA, factFHA[EventCd] = "D" ), [LoanCount] )
EVALUATE
( SUMMARIZE ( FILTER ( factFHA, factFHA[EventCd] = "D" ), factFHA[AnyColumnToGroup]
              , "Sum of MyMeasure", SUM ( factFHA[MyMeasure] ) ) )

Позвольте мне знать, если это помогает.

person alejandro zuleta    schedule 06.12.2016
comment
Это мне помогло. за исключением того, что мне нужно иметь SUM для последнего параметра в SUMMARIZE. Редактирую ответ. Спасибо. - person FLICKER; 06.12.2016
comment
Но это не фильтрует мои данные. он просто игнорирует раздел ФИЛЬТР. Любая идея? - person FLICKER; 06.12.2016
comment
@FLICKER, я обновил сводное выражение, попробуйте. - person alejandro zuleta; 06.12.2016
comment
Это работает. Однако я не знаю, почему у вас есть раздел DEFINE. Только инструкция EVALUATE дает мне результат - person FLICKER; 07.12.2016
comment
@FLICKER, я использовал предложение DEFINE, чтобы показать вам структуру запроса в DAX. Но в этом случае он ничего не делает, поскольку мы не используем его в предложении EVALUATE. Вы можете удалить его, если хотите. - person alejandro zuleta; 07.12.2016
comment
Большой!. Спасибо за уделенное время. - person FLICKER; 07.12.2016