Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / OLAP и DWH Новый топик    Ответить
 mdx в кубе процент от тотала меры  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 881
Добрый день всем.

Есть мера считающиеся как Distinct Count : [# of Patients with Medication]
Надо показасть связку
{ лекарство - Мера (кол-во) - Процент от меры - от общего числа }

Гуи не позваоляет показать процент - поэтому надо засунуть в куб вычисилмую метрику
https://social.msdn.microsoft.com/Forums/sqlserver/en-US/af950e5f-9f66-4ccc-ad20-7debcf2b7498/how-to-calculate-percentage-in-mdx?forum=sqlanalysisservices

вот отсюда взял идею
CREATE MEMBER CURRENTCUBE.[Measures].[Total TransactionAmount] AS
SUM([Geography].[GeographyHierarchy].[All Geography level].CHILDREN, [Measures].[TransactionAmount]),

адаптировал под себя - получил 2 меры

CREATE MEMBER CURRENTCUBE.[Measures].[Total Patients with Medication]   
AS ( 
-- [Dim Medication].[Medication Code and Name].currentmember.parent , [Measures].[# of Patients with Medication] 
SUM( [Dim Medication].[Medication].currentmember.children 			, [Measures].[# of Patients with Medication] )
) 

-- to count Percent If NULL --> NULL
CREATE MEMBER CURRENTCUBE.[Measures].[% of Patients with Medication]   
AS 
(
 IIF ( [Measures].[Total Patients with Medication] = NULL , NULL  , [Measures].[# of Patients with Medication]  / [Measures].[Total Patients with Medication]   )
)  

Рабоатет ок когда я
в запросе выбираю любой НЕ ключевой атрибут дименшена
[Dim Medication].[Medication Code and Name]
[Dim Medication].[Medication Code]
Все ОК - считатет и показывает верный процент

как только выношу ключевой [Dim Medication].[Medication]
(ид атрибута - код , namedcolumn = имя )
- везде NULL
вот MDX (с [Medication Code and Name] работате ок )

SELECT NON EMPTY { [Measures].[# of Patients with Medication]  , [Measures].[Bridge Event Medication Count]
, [Measures].[% of Patients with Medication]
-- , [Measures].[Total Patients with Medication] 
} 
ON COLUMNS
, 
NON EMPTY { (
[Dim Medication].[Medication].ALLMEMBERS
--[Dim Medication].[Medication Code and Name].[Medication Code and Name].AllMembers

) } 
ON ROWS 
FROM [Simply Connect DWH]


Подозрвеаю что не достаточно понимаю
SUM( [Dim Medication].[Medication][u][b].currentmember.children[/b][/u] 			, [Measures].[# of Patients with Medication] )


Мне надо выдать процент для обоих случаев в разных датасетах (особенность ГУИ)
и для [Dim Medication].[Medication]
и для [Dim Medication].[Medication Code and Name].[Medication Code and Name]


любые идеи велкам
12 июн 17, 13:48    [20557905]     Ответить | Цитировать Сообщить модератору
 Re: mdx в кубе процент от тотала меры  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 881
попробую переформулировать проще
как счиать в кубе процент от итога по count distinct Мере
в общем случае.
12 июн 17, 15:21    [20558111]     Ответить | Цитировать Сообщить модератору
 Re: mdx в кубе процент от тотала меры  [new]
ShIgor
Member

Откуда: Нижний Новгород
Сообщений: 1953
Гулин Федор,

Какой смысл суммировать DC? тогда уж Aggregate..
Пациент может принимать несколько лекарств, но для уровня все лекарства он все-равно один.
Возьмите просто значение от парента, да и поделите, если же всегда надо считать от общего количества в многоуровневой иерархии поделите на All

with member aa as [Measures].[Customer Count]
member bb as [Measures].[Customer Count] / ([Product].[Product Categories].CurrentMember.Parent, [Measures].[Customer Count] ), format='percent'
member cc as [Measures].[Customer Count] / ([Product].[Product Categories].[All Products], [Measures].[Customer Count] ), format='percent'
select {aa, bb, cc} on 0,
Descendants([Product].[Product Categories].[All],,SELF_AND_AFTER) on 1
from [Adventure Works]


в вычислении bb необходимо добавить обработку уровня All, иначе результат = inf.
13 июн 17, 09:55    [20559492]     Ответить | Цитировать Сообщить модератору
 Re: mdx в кубе процент от тотала меры  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 881
ShIgor,
БОЛЬШОЕ СПАСИБО
обязательно посмотню подробней
я запустил запрос - вижу но пока не р

сам выкрутился
приходится делать по 2 меры по каждой иеррахии где надо
просто подбиваю проценты по Children

CREATE MEMBER CURRENTCUBE.[Measures].[Total_Patient_with_medication_by_Eventtype]   AS ( 
	SUM( [Dim Event Type].[Event Type].[All].Children , [Measures].[# of Patients with Medication] )
) 
,  ASSOCIATED_MEASURE_GROUP = 'Bridge Event Medication'
;

CREATE MEMBER CURRENTCUBE.[Measures].[% of Patients with Medication by Event type]   
AS 
(  
IIF ( [Measures].[Total_Patient_with_medication_by_Eventtype] = NULL , NULL  , [Measures].[# of Patients with Medication]  / [Measures].[Total_Patient_with_medication_by_Eventtype]   )
 )
13 июн 17, 13:27    [20560237]     Ответить | Цитировать Сообщить модератору
Все форумы / OLAP и DWH Ответить