Softcoding для MDX Script, назначающий код диапазона из значений - PullRequest
0 голосов
/ 09 января 2020

Я применяю средневзвешенную (скажем, для защиты виновных) желательность клиента. Желательность - это качественное суждение, но мы используем методологию, связывающую это с количественными оценками для получения средневзвешенного значения. Упрощенная версия ...

Применение этих факторов желательности ...

|------------|------|
|Desirability|Factor|
|------------|------|
|Platinum    |     1|
|Gold        |    10|
|Silver      |   100|

... к данным фактов ...

|---------|--------------------|-------------|----------------|---------------|
|SalesTeam|CustomerDesirability|CustomerCount|Looked up Factor|Weighted Factor|
|---------|--------------------|-------------|----------------|---------------|
|TeamA    |Platinum            |            8|               1|              8|
|TeamA    |Gold                |           16|              10|            160|
|TeamA    |Silver              |            4|             100|            400|
|TeamB    |...

.. мы бы агрегировали TeamA в (8 + 160 + 400) / (8 + 16 + 4) = 22,7 , который - с простым пессимистическим c обратным преобразованием - должен быть показан как Серебро .

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

CREATE MEMBER CURRENTCUBE.[MEASURES].[Weighted Desirability Factor]
as ([MEASURES].[Factor]).value / ([MEASURES].[Customer Count]).value
;
CREATE MEMBER CURRENTCUBE.[MEASURES].[Weighted Desirability] 
AS
 IIF([MEASURES].[Weighted Desirability Factor]<= 1, "Platinum",  
 IIF([MEASURES].[Weighted Desirability Factor]<= 10, "Gold",   "Silver"))
;

Но это жесткое кодирование далеко не здорово. Есть ли способ сделать это на кубе, который позволяет избежать жесткого кодирования и поддерживать производительность?

...