Использование EXCEPT в вычисляемом элементе - PullRequest
2 голосов
/ 10 сентября 2010

У меня в запросе MDX следующий вычисляемый член:

MEMBER [Asset].[Class].[Fixed Income Derivatives (Inflation Linked)]
AS
(
    [Asset].[Class].&[Fixed Income],
    [Asset].[Sub Class].&[Derivatives],
    [Asset].[Sub Class Type].&[Inflation]
)

Это используется в запросе следующим образом:

SELECT
{
  [Measures].[Market Value]
} ON 0,
NON EMPTY(
{ 
    [Asset].[Class].[Fixed Income Derivatives (Inflation Linked)]
} ON 1
FROM [Asset]

Это работает нормально, и, конечно, дает мнерыночная стоимость всех связанных с инфляцией производных инструментов с фиксированным доходом.

Теперь я пытаюсь добавить второго вычисляемого члена, на этот раз, чтобы дать мне все производные инструменты с фиксированным доходом, которые НЕ связаны с инфляцией.Я думаю, что это будет так же просто, как EXCEPT во втором члене, например, так:

MEMBER [Asset].[Class].[Fixed Income Derivatives (Non Inflation Linked)]
AS
(
    [Asset].[Class].&[Fixed Income],
    [Asset].[Sub Class].&[Derivatives], 
    EXCEPT(
       [Asset].[Sub Class Type].[Sub Class Type], 
       [Asset].[Sub Class Type].&[Inflation]
    )
)

Увы, не повезло - выдает ошибку

Функция ожидаетстрока или числовое выражение для аргумента.Использовалось выражение набора кортежей.

Это сообщение сбивает с толку, но для курса в SSAS.Я уверен, что я на правильном пути, и просто ИСКЛЮЧИТЬ немного неправильно, но я не могу на всю жизнь обнаружить проблему.

1 Ответ

4 голосов
/ 23 сентября 2010

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

Измените определение вычисляемого члена, как показано ниже;

MEMBER [Asset].[Class].[Fixed Income Derivatives (Non Inflation Linked)]
AS
(
    Aggregate
    (
       {[Asset].[Class].&[Fixed Income]} * 
       {[Asset].[Sub Class].&[Derivatives]} * 
       EXCEPT
       (
        [Asset].[Sub Class Type].[Sub Class Type], 
        [Asset].[Sub Class Type].&[Inflation]
       )
       ,Measures.CurrentMember
    )
)
...