powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / в mdx склеить значения 3-4 полей-атрибутов
25 сообщений из 42, страница 1 из 2
в mdx склеить значения 3-4 полей-атрибутов
    #39436399
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет Всем.
SSAS 2012

можно ли в mdx склеить значения 3-4 полей-атрибутов (c Разных димешненов )
(Если бы на одном я сделал бы вычислимое поле на уровен датасорса и склеил там )

аналог в SQL
Select fild1 + ';' + fild2 + ';' + fild2 as

ps там проблема в том что на дашбоарде в том гуи-клиенте можно показать толкьо 1 столбец-категорию (мер можно сколько угодно.)
(разработчики говорят что будет больше - но когда не известно)

т.е mdx Я написал руками ОК но у него выходных 4 поля-атрибута
вот мне как-то бы их склеить в одно поле.
...
Рейтинг: 0 / 0
в mdx склеить значения 3-4 полей-атрибутов
    #39436403
Фотография Yuri Abele
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
в mdx склеить значения 3-4 полей-атрибутов
    #39436410
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yuri AbeleГулин Федор,

MDX Calculated Members - Query-Scoped Calculated Members:
https://docs.microsoft.com/en-us/sql/analysis-services/multidimensional-models/mdx/mdx-calculated-members-query-scoped-calculated-members

СПС за быстрый фидбек
еще раз - там именно Calculated меры
А мне надо склеить атрибуты разных димешененов в 1 поле
чтобы обойти проблему в GUI клиенте
(мер там можно показать сколкьо угодно - а вот столбец Categories один)
...
Рейтинг: 0 / 0
в mdx склеить значения 3-4 полей-атрибутов
    #39436416
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
приведу mdx - мне бы склеить в одну
Patient Full Name + ';' + Gender + ';' + Age + ';' + Dim Event Type.Event Type Desc
(ключевой момент именно из разных дименешенов - с одной я бы сделал вычисляемый атрибут в датасорсе дименшена)

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
SELECT  
NON EMPTY { [Measures].[# Events] } ON COLUMNS
,
ORDER(  
  NonEmpty 
	(
	[Dim Patient].[Patient Full Name].[Patient Full Name].MEMBERS -- ALLMEMBERS 
	* [Dim Patient].[Gender].[Gender].MEMBERS 
	* [Dim Patient].[Age].[Age].MEMBERS 
	* [Dim Event Type].[Event Type Desc].[Event Type Desc].MEMBERS 

	, [Measures].[# Events]
	)
	, [Measures].[# Events]
	, BDESC
	)  
HAVING  [Measures].[# Events] > 1 
ON ROWS 
FROM [DWH] 
...
Рейтинг: 0 / 0
в mdx склеить значения 3-4 полей-атрибутов
    #39436447
Фотография Yuri Abele
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гулин Федор,

1. в CM можно и текстовые величины склеивать.

2. у каждого аттрибута есть ряд прямых (принадлежат ему) и связанных (ссылки на родительские аттрибуты) свойств.
Для части свойств есть Shortcuts, например MyDimension.MyHierarhy.CURRENTMEMBER.Name.
До остальных добираются через функцию PROPERTIES:

https://docs.microsoft.com/en-us/sql/analysis-services/multidimensional-models/mdx/mdx-member-properties-intrinsic-member-properties
...
Рейтинг: 0 / 0
в mdx склеить значения 3-4 полей-атрибутов
    #39436460
Фотография Yuri Abele
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще парочка мыслей:

Eсли есть доступ к дизайну OLAP базы, то

- можно атрибутам задавать отдельное значение для свойства VALUE

- в DSV можно создавать Named Calculations - что-то вроде Computed Columns, только на уровне DSV
https://docs.microsoft.com/en-us/sql/analysis-services/multidimensional-models/define-named-calculations-in-a-data-source-view-analysis-services
и их уже, к примеру, использовать в VALUE свойстве аттрибутов

- у функции <member>.PROPERTIES(...) есть опционяльный параметр TYPED - без него все значения возвращаются как STRING, с ним соответсвующего типа - так можно, к примеру, с числами оперировать
...
Рейтинг: 0 / 0
в mdx склеить значения 3-4 полей-атрибутов
    #39436493
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yuri AbeleЕще парочка мыслей:

Eсли есть доступ к дизайну OLAP базы, то

- можно атрибутам задавать отдельное значение для свойства VALUE

- в DSV можно создавать Named Calculations - что-то вроде Computed Columns, только на уровне DSV
https://docs.microsoft.com/en-us/sql/analysis-services/multidimensional-models/define-named-calculations-in-a-data-source-view-analysis-services
и их уже, к примеру, использовать в VALUE свойстве аттрибутов

- у функции <member>.PROPERTIES(...) есть опционяльный параметр TYPED - без него все значения возвращаются как STRING, с ним соответсвующего типа - так можно, к примеру, с числами оперировать

в DSV можно создавать Named Calculations
Я могу это создать - и в DSV и в таблице как вычислимое поле

куб мой - доступ ПОЛНЫЙ
-если бы с 1 димешнена был составное поле - так бы и сделал

с 2-х димешненов все равно не понимаю как это мне поможет (а потом может и 3 будет - кто знает)
у меня это НЕ меры а дименшены

резалтсет корректный - в екселе все ОК
- но мне надо как то склеить 4 поля в одно.
...
Рейтинг: 0 / 0
в mdx склеить значения 3-4 полей-атрибутов
    #39436509
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
грубо говоря
есть вот
столбец1 столбец2
пациент1 событие2
пациент1 событие3

хочу в mdx получить вот :
столбец
пациент1 : событие2
пациент1 : событие3
...
Рейтинг: 0 / 0
в mdx склеить значения 3-4 полей-атрибутов
    #39436516
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
точнее
есть 1-й mdx
столбец1 столбец2 мера1

пациент1 событие2 мера1
пациент1 событие3 мера1

хочу из 1-го mdx получить 2 mdx
возвращающий резалтсет :

объед.столбец мера1
пациент1 : событие2 мера1
пациент1 : событие3 мера1
...
Рейтинг: 0 / 0
в mdx склеить значения 3-4 полей-атрибутов
    #39436542
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в MDX нельзя на оси склеить, структуру менять надо, оси элементами атрибутов определяют контекст для ячеек - в которые передаются значения т.е. на пересечении координат осей (за искл. всех остальных которые default по умолчанию)
хочешь на оси поставить значения? - не получится (можно только добавить дополнительные Properties, но систему координат не выкинешь)
так что создавай новые мемберы (элементы атрибута) или в ручную или меняй структуру
тогда один ключ на ось - а на него по 1:1 иерархии child как значение (пересечением с осью на которой выбранные элементы измерения расчётных мер, т.е. {событие,мера1} где мера.событие = ключ.parent..member_name)
на ключ можешь имя соотв. пациента повесить

можно с DMX поизвращаться (в том-же подключении/окне что и MDX), там и аналог SQL join можно завернуть (через SHAPE/APPEND)
в крайнем случае передавай MDX результат в SQL через openquery/openrowset, и там манипулируй(чисти, склеивай стринги, join-ь результаты) как нужно.
...
Рейтинг: 0 / 0
в mdx склеить значения 3-4 полей-атрибутов
    #39436553
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vikkiv,
И мне кажется что не получится - но вдруг воркараунд
все д.б в mdx - ибо его можно передать (скормить) гуи-клиенту

так что создавай новые мемберы (элементы атрибута)
не понял как
можно или ссылку или еще раз

Dim Patient].[Patient Full Name].[Patient Full Name].MEMBERS
* [Dim Event Type].[Event Type Desc].[Event Type Desc].MEMBERS

вот их мне надо склеить - где и что мне создавать (в кубе , в mdx ) ?


зы про dmx даже не в курсе - в любом случае клиент понимает только mdx
...
Рейтинг: 0 / 0
в mdx склеить значения 3-4 полей-атрибутов
    #39436554
Фотография StarikNavy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гулин Федор,

проще уж тогда (временно) создать измерение, где будет нужный атрибут (склеенный)
...
Рейтинг: 0 / 0
в mdx склеить значения 3-4 полей-атрибутов
    #39436568
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StarikNavyГулин Федор,

проще уж тогда (временно) создать измерение, где будет нужный атрибут (склеенный)

да думал над этим воркараундом
составной дименшен ( поле1 + поле2)

50 событий *5000 пациентов и это пока (пациенты точно будут расти и сильно)
+ ETL менять

а потом 3 столбец добавить в репорт и что тогда еще новый димешн


(есть вариант что в гуи клиенте просто через. некоторое время добавят эту возможность )
...
Рейтинг: 0 / 0
в mdx склеить значения 3-4 полей-атрибутов
    #39436959
Фотография Yuri Abele
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я повторюсь:

===================
Гулин Федор,

1. в CM можно и текстовые величины склеивать.

2. у каждого аттрибута есть ряд прямых (принадлежат ему) и связанных (ссылки на родительские аттрибуты) свойств.
Для части свойств есть Shortcuts, например MyDimension.MyHierarhy.CURRENTMEMBER.Name.
До остальных добираются через функцию PROPERTIES:

https://docs.microsoft.com/en-us/sql/analysis-services/multidimensional-models/mdx/mdx-member-properties-intrinsic-member-properties
===================

Или тут всё написано или я недопонимаю Вашу задачу. По моему всё-таки первое
...
Рейтинг: 0 / 0
в mdx склеить значения 3-4 полей-атрибутов
    #39436960
Фотография Yuri Abele
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. что-то такое с тремя вариантами вытаскивания свойств аттрибутов (пишу не проверяя)

WITH
MEMBER Concatinated_Properties AS
MyDimention1.SomeHierarhy.CurrentMember.Name
+ ' ' +
OtherDimension.SomeHierarhy.CurrentMember.Properties('Name_Of_Parent_Attribute')
+ ' ' +
ThirdDimension.SomeHierahy.CurrentMember.Value
SELECT
Concatinated_Properties
ON COLUMNS,
NON EMPTY
MyDimention1.SomeHierarhy.SomeLevel.MEMBERS
*
OtherDimension.SomeHierarhy.SomeLevel.MEMBERS
*
ThirdDimension.SomeHierarhy.SomeLevel.MEMBERS
ON ROWS
FROM
MyCube
...
Рейтинг: 0 / 0
в mdx склеить значения 3-4 полей-атрибутов
    #39436962
Фотография Yuri Abele
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отформатированно:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
WITH
    MEMBER Concatinated_Properties AS
        MyDimention1.SomeHierarhy.CurrentMember.Name
        + ' ' +
        OtherDimension.SomeHierarhy.CurrentMember.Properties('Name_Of_Parent_Attribute')
        + ' ' +
        ThirdDimension.SomeHierahy.CurrentMember.Value
SELECT
    Concatinated_Properties
    ON COLUMNS,
    NON EMPTY
    MyDimention1.SomeHierarhy.SomeLevel.MEMBERS
    *
    OtherDimension.SomeHierarhy.SomeLevel.MEMBERS
    *
    ThirdDimension.SomeHierarhy.SomeLevel.MEMBERS
    ON ROWS
FROM
    MyCube
...
Рейтинг: 0 / 0
в mdx склеить значения 3-4 полей-атрибутов
    #39437493
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
@Yuri Abele
За фидбек по любому СПС

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
WITH     MEMBER CnP1 AS
     [Dim Patient].[Patient Full Name].CurrentMember.Name        +  ':: ' 
		--+        [Dim Event Type].[Event Type].CurrentMember.Name -- Properties('Name_Of_Parent_Attribute')
		--, [Measures].[# of Events] 
		--[Measures].[# of Events] 
SELECT
    CnP1     ON COLUMNS ,
    NON EMPTY
	(
	[Dim Event Type].[Event Type].[Event Type].MEMBERS 
	-- *[Dim Patient].[Patient Full Name].[Patient Full Name].MEMBERS
    --, [Measures].[# of Events] 
	)
    ON ROWS
FROM [Simply Connect DWH] 



поэкспериментировал
мембер склеенный - получается
причем если 2 включены и там и там
Exception of type 'System.OutOfMemoryException' was thrown.
декарт похоже

результирующая мера у меня должна быть та же что в исходном mdx [Measures].[# of Events]
я не вижу ее в примере
просто вместо 2(3,4) столбцов атрибутов димешненов - я хотел получить один склеенный
...
Рейтинг: 0 / 0
в mdx склеить значения 3-4 полей-атрибутов
    #39437495
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня есть - mdx возвращает
столбец N1 N2 N3 мера [Measures].[# of Events]
Иванов M 55 1223
Патрова F 13 2345

а получить хочу

столбецСклеенный мера [Measures].[# of Events]
'Иванов M 55' 1223
'Патрова F 13' 2345

Я не понимаю как добавить меру [Measures].[# of Events] в приведенный пример
...
Рейтинг: 0 / 0
в mdx склеить значения 3-4 полей-атрибутов
    #39437697
Фотография Yuri Abele
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я правильно понимаю, что ты строку с числом склеить пытаешся?
...
Рейтинг: 0 / 0
в mdx склеить значения 3-4 полей-атрибутов
    #39437836
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yuri AbeleЯ правильно понимаю, что ты строку с числом склеить пытаешся?
да нет
склеить пытаюсь в 1 столбец
[Dim Event Type].[Event Type].[Event Type].
[Dim Patient].[Patient Full Name].[Patient Full Name]
(+ возможно еще что из димешненов)

чтобы мера осталалсь таже

из за того что гуи клиент в категорис может приянть только 1 стоблец
...
Рейтинг: 0 / 0
в mdx склеить значения 3-4 полей-атрибутов
    #39437958
Фотография Yuri Abele
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[Dim Patient].[Patient Full Name].CurrentMember.Name - STRING
[Measures].[# of Events] - INTEGER

Эти два типа данных не совместимы - нужно конвертировать второй в строку
...
Рейтинг: 0 / 0
в mdx склеить значения 3-4 полей-атрибутов
    #39437960
Фотография Yuri Abele
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то я свосем запутался ...
В приведенном до этого MDX было [Measures].[# of Events] теперь что-то другое.
Конкретизируй, если не трудно
...
Рейтинг: 0 / 0
в mdx склеить значения 3-4 полей-атрибутов
    #39438110
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
SELECT  
NON EMPTY { [Measures].[# Events] } ON COLUMNS
,
ORDER(  
  NonEmpty 
	(
	[Dim Patient].[Patient Full Name].[Patient Full Name].MEMBERS -- ALLMEMBERS 
	* [Dim Patient].[Gender].[Gender].MEMBERS 
	* [Dim Patient].[Age].[Age].MEMBERS 
	* [Dim Event Type].[Event Type Desc].[Event Type Desc].MEMBERS 

	, [Measures].[# Events]
	)
	, [Measures].[# Events]
	, BDESC
	)  
HAVING  [Measures].[# Events] > 1 
ON ROWS 
FROM [DWH] 



mdx рабочий
резалт сет выглядят так
столбец N1 ,N2, N3 , N4 ,мера [Measures].[# of Events]
Иванов ,M ,55, травма , 1223
Патрова ,F, 13, болезнь , 2345

хотелось склеить 4 столбца в один [] + мера
[ объед. столбец]
[Иванов M 55 травма ] , 1223
[Патрова F 13 болезнь ] , 2345

ну т.е в SQL это было просто col_calc as col1 + ';' + col2 + ';' + col3
В mdx это похоже невозможно (или как-то оч. хитро )

зы я понимаю что это по сути изврат - подмена координат куба
воркараунд с добавочным димешненом ясен - но не годится
...
Рейтинг: 0 / 0
в mdx склеить значения 3-4 полей-атрибутов
    #39438586
Фотография StarikNavy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
в mdx склеить значения 3-4 полей-атрибутов
    #39439034
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StarikNavy ,
да нет, openquery/openrowset (т.е. sql) сразу в тот-же день после вопроса через пару часов предложил, так что по ходу явно не прокатит из-за особенностей их локально-внутренних интерфейсов.

Гулин Федор ,
ещё раз предложу (natural prediction) join из DMX использовать, там вполне реально целые цепи разных результатов создавать, глянь как твой gui проглотит и отобразит такой запрос (соответственно Data Mining модель должна существовать в базе, создай какую-то минимальную для образца):
Код: sql
1.
2.
3.
4.
5.
6.
select flattened t.[[Measures]].[x]]]as a,t.[[Measures]].[Internet Sales Amount]]]as b,
t.[[Measures]].[Internet Order Quantity]]]as c from[Sequence Clustering]natural prediction join
(	with member measures.x as Product.Category.currentmember.name+" - "+[Date].[Calendar Year].currentmember.name
	select{measures.x,measures.[Internet Sales Amount],measures.[Internet Order Quantity]}on 0,
	non empty{[Date].[Calendar Year].&[2012],[Date].[Calendar Year].&[2013]}*Product.Category.children
	having not isempty(measures.[Internet Sales Amount])on 1from[Adventure Works])as t

abcAccessories - CY 20122147.08106Bikes - CY 20125839695.32523269Clothing - CY 2012642.7922Accessories - CY 2013668241.5334409Bikes - CY 201315359502.369706Clothing - CY 2013323806.458686так-же можно через shape/append/relate join-ить результаты разных MDX запросов, напр.:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
select flattened t.*from[Sequence Clustering]natural prediction join
shape	{select{[Customer].[Country].&[Australia],[Customer].[Country].&[Canada]}on 0,
		{[Date].[Calendar Year].&[2012],[Date].[Calendar Year].&[2013]}on 1
		from[Adventure Works]where[Internet Sales Amount]
		}
append(	{select{[Product].[Category].&[1],[Product].[Category].&[3]}on 0,
		{[Date].[Calendar Year].&[2012],[Date].[Calendar Year].&[2013]}on 1
		from[Adventure Works]where[Internet Sales Amount]
		}
	relate[[Date]].[Calendar Year]].[Calendar Year]].[MEMBER_CAPTION]]]to[[Date]].[Calendar Year]].[Calendar Year]].[MEMBER_CAPTION]]]
	)as x
as t

[Date].[Calendar Year].[Calendar Year].[MEMBER_CAPTION][Customer].[Country].&[Australia][Customer].[Country].&[Canada]x.[Date].[Calendar Year].[Calendar Year].[MEMBER_CAPTION]x.[Product].[Category].&[1]x.[Product].[Category].&[3]CY 20122128407.4551307604.5237CY 20125839695.3252642.79CY 20134339443.381085632.65CY 201315359502.36323806.45
...
Рейтинг: 0 / 0
25 сообщений из 42, страница 1 из 2
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / в mdx склеить значения 3-4 полей-атрибутов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]