Я применяю средневзвешенную (скажем, для защиты виновных) желательность клиента. Желательность - это качественное суждение, но мы используем методологию, связывающую это с количественными оценками для получения средневзвешенного значения. Упрощенная версия ...
Применение этих факторов желательности ...
|------------|------|
|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"))
;
Но это жесткое кодирование далеко не здорово. Есть ли способ сделать это на кубе, который позволяет избежать жесткого кодирования и поддерживать производительность?