powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Про сортировку
6 сообщений из 6, страница 1 из 1
Про сортировку
    #39541136
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!

Задача: нужно получить отсортированный список Город+ТТ по мере "Отгрузки шт" по убыванию. Для решения написал такой MDX-запрос.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
SELECT
	{[Measures].[Отгрузки шт],
	[Measures].[Возвраты шт]}
ON 0,
	ORDER(	
		(NONEMPTY([Города].[Город].[Город],
			[Measures].[Отгрузки шт]),
		 NONEMPTY([Торговые точки].[Код ТТ].[Код ТТ],
			[Measures].[Отгрузки шт])),
		[Measures].[Отгрузки шт],
		DESC)	
ON 1
FROM
	(SELECT
		([Продукция].[Группа продукции].&[1],		
		[Время].[Дата].&[2017-07-01T00:00:00]:[Время].[Дата].&[2017-10-17T00:00:00],
		[Торговые точки].[Клиент].&[2]
		) ON 0
		FROM PROFIT)


Но получаю такой результат:
ГородТТОтгрузки штВозвраты штГород1ТТ1(null)(null)Город1ТТ32011Город1ТТ2108Город2ТТ6130Город2ТТ5124Город2ТТ452............
Во первых, сортируется внутри каждого города.
Во вторых, не смотря на то, что в каждом измерении используется функция NonEmpty в результате в первой строке по двум мерам присутствуют Null. Если перед Order добавить директорию Non Empty, то строки null пропадают. А если добавить директорию Non Empty и удалить функции NonEmpty, то долго выполняется.

А надо так
ГородТТОтгрузки штВозвраты штГород1ТТ32011Город2ТТ6130Город2ТТ5124Город1ТТ2108Город2ТТ452............

Скажите, как правильно дописать MDX, чтобы получить нужный результат?
...
Рейтинг: 0 / 0
Про сортировку
    #39541197
tashkafox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ferzmikk,
BDESK - сортировка с нарушением иерархии
...
Рейтинг: 0 / 0
Про сортировку
    #39541205
tashkafox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ferzmikk,
сорри, с bdesk поспешила, у вас же разные иерархии.

ORDER(
(NONEMPTY(
([Города].[Город].[Город],
[Торговые точки].[Код ТТ].[Код ТТ]),
[Measures].[Отгрузки шт]
),
[Measures].[Отгрузки шт],
DESC)
...
Рейтинг: 0 / 0
Про сортировку
    #39541413
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tashkafox,

написал так

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
SELECT
	{[Measures].[Отгрузки шт],
	[Measures].[Возвраты шт]}
ON 0,
	ORDER(	
		(NONEMPTY(
                                  ([Города].[Город].[Город],			
		                    [Торговые точки].[Код ТТ].[Код ТТ])
			         [Measures].[Отгрузки шт]),
		[Measures].[Отгрузки шт],
		DESC)	
ON 1
FROM
	(SELECT
		([Продукция].[Группа продукции].&[1],		
		[Время].[Дата].&[2017-07-01T00:00:00]:[Время].[Дата].&[2017-10-17T00:00:00],
		[Торговые точки].[Клиент].&[2]
		) ON 0
		FROM PROFIT)


строки с null не отображаются теперь, но сортировка пока также - внутри каждого города.
...
Рейтинг: 0 / 0
Про сортировку
    #39541523
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikk,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
ORDER(
  NONEMPTY(
    {[Города].[Город].[Город]}*
    {[Торговые точки].[Код ТТ].[Код ТТ]},
    [Measures].[Отгрузки шт]
  ),
  [Measures].[Отгрузки шт],
  BDESC
)

и научитесь писать понятные выражения MDX
(,) - это кортеж
{,} - это набор
Вы в кортеже указали 2 набора: (set, set) - парсер преобразует это в {set}*{set}. Зачем его напрягать ненужной работой?
да и разбираться самому сложнее.
...
Рейтинг: 0 / 0
Про сортировку
    #39541581
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShIgor,

Получилось, спасибо!
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Про сортировку
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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