2009-08-17 3 views
2

Я довольно новичок в SSAS и совершенно не понимаю, как решить эту проблему. У меня есть измерение под названием Thresholds. В размерности Порогов есть следующие члены:Cube Calculated Member Вопрос

[Threshold год], [Threshold1 Amount], [порог2 Amount], [порог3 Amount]

У меня также есть меры, называется [Отборочная комиссия], [Tier1 Сумма], [Сумма Уровень2], [Tier3 Amount]

Кроме того, есть также измерение времени под названием [Заявление Даты]

Так в основном вот что я пытаюсь сделать. Я хочу создать вычисляемый элемент, который, когда конечный пользователь выбирает временные рамки из [Даты ведения], я хочу подвести итог [Квалификационной комиссии] и проверить ее на пороговые суммы за соответствующий год. Если он больше [Threshold1 Amount], я хочу, чтобы он возвращал измерение [Tier1 Amount] с той же логикой, что и на пороговые значения 2 и 3.

Может ли кто-нибудь дать мне дорожную карту о том, что мне нужно сделать? Если мне нужно реструктурировать данные в базовой базе данных, чтобы сделать эту работу, тогда это было бы очень полезно знать. Заранее спасибо за помощь.

ответ

2

Хорошо, давайте предположим, что [Qualifying Commission] является аддитивной мерой, то есть сумма, которую мы берем на себя, по SSAS.

По существу, нам просто нужно найти любой год, в котором мы находимся под [Statement Dates], чтобы получить наши пороговые значения.

Итак, давайте разложим его на несколько кусков. Первое, что мы делаем, чтобы найти наше право [Threshold Year]:

create set [Current Threshold] as 
    iif([Statement Dates].[YQM].CurrentMember IS [All] 
     ,[Threshold Year].[All] 
     ,StrToSet("[Threshold Year].[" + 
      Ancestor([Statement Dates].[YQM].CurrentMember 
      , [Statement Dates].[YQM].[Year]).Name + 
     "]")) 

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

create member currentcube.[Measures].[Threshold Amount] as 
    case 
     when [Qualifying Commission] > 
       [Current Threshold].Item(0).Properties("Threshold1 Amount") then 
      [Measures].[Tier1 Amount] 
     when [Qualifying Commission] > 
       [Current Threshold].Item(0).Properties("Threshold2 Amount") then 
      [Measures].[Tier2 Amount] 
     when [Qualifying Commission] > 
       [Current Threshold].Item(0).Properties("Threshold3 Amount") then 
      [Measures].[Tier3 Amount] 
     else 0 
    end 

И вуаля, вы готовите газом.

0

Вы также должны изучить использование оператора сферы. Это может помочь производительности, когда вам нужно реализовать условные суммы.

Scope operator From MSDN