powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Должно быть простой вопрос :)
10 сообщений из 10, страница 1 из 1
Должно быть простой вопрос :)
    #33688760
alexey_1979
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!

Есть куб с двумя измерениями (двумерный куб :) ). Необходимо посчитать максимальное значение меры по определенному срезу. Измерения простые.
Допустим, есть такие данные (как их показывает браузер)
Код: plaintext
1.
2.
3.
4.
5.
            10        20       25
1          9457      1357     7442
11         4717      1357     7743
12         1237      5323     8442
20         3577      1357     7678
Нужно следующее
10 9457
20 5323
25 8442

Возможно это очень просто, но я не силен в аналитике и для меня это проблема. Я использую SQL Server 2005. Мне нужен "голый" mdx-запрос, который можно прогнать в SQL Management Studio, например.
...
Рейтинг: 0 / 0
Должно быть простой вопрос :)
    #33689488
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы можете формально сформулировать то что вам нужно?

тогда Вам и с MDX легче помочь будет
...
Рейтинг: 0 / 0
Должно быть простой вопрос :)
    #33689719
alexey_1979
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странно, мне кажется я сформулировал предельно ясно. Попробую выразить простыми sql конструкциями.

Есть данные
Код: plaintext
1.
2.
3.
4.
5.
6.
create table cube(a int,b int, cnt int)
insert into cube values( 1 , 10 , 9457 )
insert into cube values( 1 , 20 , 1357 )
insert into cube values( 1 , 25 , 7442 )
insert into cube values( 11 , 10 , 4717 )
insert into cube values( 11 , 20 , 1357 )
insert into cube values( 11 , 25 , 7743 )

Нужен аналог на mdx следующего запроса
Код: plaintext
select b,max(cnt) from cube group by b
который возвращает, как не трудно догадаться
Код: plaintext
1.
2.
3.
4.
b        max
10	9457
20	1357
25	7743
На mdx я пишу следующее
Код: plaintext
1.
2.
3.
select 
[Trans Simple].[B].Members on columns
from Cube
и мне выдается агрегат по умолчанию, как я понимаю, количество записей. В переводе на sql
Код: plaintext
select b,count(cnt) from cube group by b
. А мне надо что-то, типа
Код: plaintext
1.
2.
3.
4.
select 
[Trans Simple].[B].Members on columns,
Max([Trans Simple].[А].Members) on rows
from Cube
Чтобы в колонках были все значения B, а в одной единственной строчке максимальные значения А для соответсвующего значения В.
...
Рейтинг: 0 / 0
Должно быть простой вопрос :)
    #33690316
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я как то и не приметил из первого Вашего поста, что был выбор максимального, а не по какому то другому, только Вам известному критерию.


А сделать меру с функцией MAX вместо дефолтового SUM не пробовали? :-)
...
Рейтинг: 0 / 0
Должно быть простой вопрос :)
    #33690589
alexey_1979
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не пробовал, потому что мне нужно именно SUM. Т.е. есть запросы примерно такого плана
Код: plaintext
1.
2.
3.
4.
select 
[Trans Simple]..Members on columns
from Cube
where [Trans Simple].[А].[ [b]11 ]
Да, не думал, что посчитать MAX будет такой серьезной проблемой. :)
...
Рейтинг: 0 / 0
Должно быть простой вопрос :)
    #33691029
alexey_1979
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дошел вот до такого запроса
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
WITH MEMBER Measures.[Max] AS
    Max(
	[Trans Simple].[А].members
    )
select 
[Trans Simple].[В].Members on columns,
Measures.[Max] on rows
from cube
но он возвращает #Error в каждой ячейке.
...
Рейтинг: 0 / 0
Должно быть простой вопрос :)
    #33691543
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexey_1979
Код: plaintext
1.
2.
Max(
	[Trans Simple].[А].members
    )

а по описанию функции трудно догадаться?
сет [Trans Simple].[А].members, вы указали, а значение-то какое?
ваш запрос мах из Measures.[Max] выбирает, на что получается циклическая ссылка и соотв Error.
А надо Max({Ваш сет}, Measures.[Ваша сумма]).
...
Рейтинг: 0 / 0
Должно быть простой вопрос :)
    #33692074
alexey_1979
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я также пробовала такой запрос
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
WITH MEMBER Measures.[Max] AS
    Max(
		[Trans Simple].[A],
		[Measures].[Trans Simple Count]
	)
select 
[Trans Simple].[B].Members on columns,
Measures.[Max] on rows
from cube
но он возвращает не то, что нужно. Он возвращает сумму. Если не указывать меру,
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
WITH MEMBER Measures.[Max] AS
    Max(
		[Trans Simple].[A]
	)
select 
[Trans Simple].[B].Members on columns,
Measures.[Max] on rows
from cube
то запрос возвращает везде null. Я не силен пока еще в терминах, поэтому простой просмотр документации по этой функции ничего мне не дает. Мне не совсем понятно, как вообще работают эти агрегаты в MDX...
...
Рейтинг: 0 / 0
Должно быть простой вопрос :)
    #33692647
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правильно!
Код: plaintext
1.
2.
3.
Max(
 [Trans Simple].[A],
 [Measures].[Trans Simple Count]
)
и будет возвращать сумму, т.к. [Trans Simple].[A].DefaultMember - что, как я думаю, у Вас это [Trans Simple].[All Trans Simple]
Вам же надо Max из членов этого измерения, значит д.б.:
Код: plaintext
1.
2.
3.
Max(
 [Trans Simple].[A].Children,
 [Measures].[Trans Simple Count]
)
...
Рейтинг: 0 / 0
Должно быть простой вопрос :)
    #33692727
alexey_1979
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ура! Спасибо, запрос работает как надо. Осталость только понять, что такое DefaultMember, [Trans Simple].[All Trans Simple] и [Trans Simple].[A].Children. :)
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Должно быть простой вопрос :)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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