Quantcast
Channel: SQL.ru: OLAP и DWH
Viewing all articles
Browse latest Browse all 1167

Динамические или визуальные итоги

$
0
0
Здравствуйте, господа!
В эфире наша постоянная рубрика "Они хотят странного"
Есть продукты, поделенные на типы и категории, есть отклики.
Собственно, форулировка задания
автор
С целью агрегации информации по звонку клиента учитываются следующие приоритеты:
- если проставлено несколько типов отклика, и один из них «Согласен», то учитывается тип «Согласен» и не учитываются типы «Отказ» и «Подумает»
- если не проставлен тип отклика «Согласен», но проставлены типы «Подумает» и «Отказ», то учитывается тип «Подумает» и не учитывается тип «Отказ»
- тип «Отказ» имеет приоритет только над типом «Не озвучено»
Значения флагов: С = Согласился, П = Подумает, О = Отказ, Н = Не озвучено
Для одного звонка учитывается max из откликов, для агрегации по оператору учитывается сумма звонков (по max)

Вроде бы всё просто и в такой формулировке я задачу решил путём создания пяти дополнительных полей, заполняемых примерно так
iif(row_number() over (partition by t.call_id,t.employee_id,p.[product_name] order by resp_id)=1,1,0) as sumpr

и далее подставляемых в скоупы так, как получилось
SCOPE(Descendants([Product].[Product Name],,LEAVES),[Measures].[Cnt Act Offers]); 
this=[Measures].[Sumpr]; 
end scope; 

Всё работает как описано, но оказалось, что ОНИ хотели не этого, а динамических итогов в зависимости от того, что вытащено в отчёт, т.е. для примера (один звонок одного оператора)
TypeNameChanФлаг
АA1XС
АA1YО
АA2XП
АA2YО
BB1XС
BB1YН
BB2XО
BB2YН
CC1XС
DD1XП

Нужны такие результаты:
TypeName ChanСПОНИтог
AA1X10001
AA1Y00101
AA2X01001
AA2Y00101
BB1X10001
BB1Y00011
BB2X00101
BB2Y00011
CC1X10001
DD1X01001
Итог323210

TypeName СПОНИтог
АA110001
АA201001
BB110001
BB200101
CC110001
DD101001
Итог321 06

TypeChanСПОНИтог
AX10001
AY00101
BX10001
BY00011
CX10001
DX01001
Итог311 16

TypeСПОНИтог
А10001
B10001
C10001
D01001
Итог31004

ChanСПОНИтог
X10001
Y00101
Итог10102

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

Viewing all articles
Browse latest Browse all 1167