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

Откуда:
Сообщений: 1075
Здравствуйте!

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

+
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, чтобы получить нужный результат?
24 окт 17, 15:14    [20895854]     Ответить | Цитировать Сообщить модератору
 Re: Про сортировку  [new]
tashkafox
Member

Откуда: Москва
Сообщений: 35
ferzmikk,
BDESK - сортировка с нарушением иерархии
24 окт 17, 16:09    [20896073]     Ответить | Цитировать Сообщить модератору
 Re: Про сортировку  [new]
tashkafox
Member

Откуда: Москва
Сообщений: 35
ferzmikk,
сорри, с bdesk поспешила, у вас же разные иерархии.

ORDER(
(NONEMPTY(
([Города].[Город].[Город],
[Торговые точки].[Код ТТ].[Код ТТ]),
[Measures].[Отгрузки шт]
),
[Measures].[Отгрузки шт],
DESC)
24 окт 17, 16:18    [20896100]     Ответить | Цитировать Сообщить модератору
 Re: Про сортировку  [new]
ferzmikk
Member

Откуда:
Сообщений: 1075
tashkafox,

написал так

+
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 не отображаются теперь, но сортировка пока также - внутри каждого города.
25 окт 17, 07:37    [20897351]     Ответить | Цитировать Сообщить модератору
 Re: Про сортировку  [new]
ShIgor
Member

Откуда: Нижний Новгород
Сообщений: 1963
ferzmikk,

ORDER(
NONEMPTY(
{[Города].[Город].[Город]}*
{[Торговые точки].[Код ТТ].[Код ТТ]},
[Measures].[Отгрузки шт]
),
[Measures].[Отгрузки шт],
BDESC
)

и научитесь писать понятные выражения MDX
(,) - это кортеж
{,} - это набор
Вы в кортеже указали 2 набора: (set, set) - парсер преобразует это в {set}*{set}. Зачем его напрягать ненужной работой?
да и разбираться самому сложнее.
25 окт 17, 11:01    [20897876]     Ответить | Цитировать Сообщить модератору
 Re: Про сортировку  [new]
ferzmikk
Member

Откуда:
Сообщений: 1075
ShIgor,

Получилось, спасибо!
25 окт 17, 12:06    [20898249]     Ответить | Цитировать Сообщить модератору
Все форумы / OLAP и DWH Ответить