IIF в с Сравнивая даты членства - PullRequest
1 голос
/ 19 апреля 2011

Я очень плохо знаком с MDX и у меня есть основной вопрос. Я хотел бы рассчитать меру, которая возвращает одно значение для дат меньше указанной даты и другое значение, если оно превышает указанную дату Я попытался:

with member [measures].[tempmeasure] as 
    IIF
       (
        [Date].[Date].CurrentMember < [Date].[Date].&[20100501]
        , 1
        , 2
       )

select 
   [Date].[Date].Members
   * 
   [measures].[tempmeasure] on columns
from [MyCube]

И это, похоже, не работает. Это использует MS SSAS 2008. Есть идеи, что я могу делать не так?

Ответы [ 3 ]

2 голосов
/ 20 апреля 2011

С:

IIF([Date].[Date].CurrentMember < [Date].[Date].&[20100501], 1, 2)

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

Поскольку вы используете AS, я думаю, что вы можете использовать функцию DataDiff для вычисления количества дней между двумя датами:

DateDiff("d", [Date].[Date].CurrentMember.MemberValue, [Date].[Date].&[20100501].MemberValue )

В противном случае для этого могут быть доступны некоторые свойства элемента:

IIF([Date].[Date].CurrentMember.Properties( 'prop-name', TYPED ) < [Date].[Date].&[20100501].Properties( 'prop-name', TYPED ) , 1, 2)

Приветствие.

1 голос
/ 15 августа 2015

Пожалуйста, используйте ниже выражение

IIF
   (
    [Date].[Date].Currentmember.MemberValue  < 
    [Date].[Date].&[20100501].MemberValue
    , 1
    , 2
   )

Я проверял, что он работает, как ожидалось .....

Пожалуйста, дайте мне знать, если у вас есть какие-либо вопросы

1 голос
/ 20 апреля 2011

IIF ожидает логическое выражение, которое возвращает логическое значение. Я думаю в твоем случае [Date].[Date].CurrentMember вернет значение измерения, набор. В этом случае оператор «меньше» вызовет синтаксическую ошибку.

...