Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / OLAP и DWH |
![]() ![]() |
Гулин Федор Member Откуда: МИНСК Сообщений: 951 |
Добрый день всем. Есть мера считающиеся как 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] Ответить | Цитировать Сообщить модератору |
Гулин Федор Member Откуда: МИНСК Сообщений: 951 |
попробую переформулировать проще как счиать в кубе процент от итога по count distinct Мере в общем случае. |
12 июн 17, 15:21 [20558111] Ответить | Цитировать Сообщить модератору |
ShIgor Member Откуда: Нижний Новгород Сообщений: 2000 |
Гулин Федор, Какой смысл суммировать 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] Ответить | Цитировать Сообщить модератору |
Гулин Федор Member Откуда: МИНСК Сообщений: 951 |
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 | ![]() |