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

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

Пытаюсь получить нужную таблицу. Чтобы было понятно описываю по шагам.


При таком запросе
+
SELECT
	[Measures].[Отгрузки шт]
ON 0,	
	NON EMPTY
	[Торговые точки].[Код ТТ].[Код ТТ] *
	[Торговые точки].[Код списка].[Код списка]*
	[Продукция].[SKU].[SKU]
ON 1
FROM (SELECT
	([Время].[Месяц].&[2016-12-01T00:00:00],
	[Торговые точки].[Код ТТ].&[0000001]) ON 0 FROM PROFIT)
получаю такой результат
Код ТТ Код списка SKUОтгрузки
ТТ1 КодСписка7SKU110
ТТ1 КодСписка7SKU220
ТТ1 КодСписка7SKU330
ТТ1 КодСписка7SKU440
ТТ1 КодСписка7SKU550
ТТ1 КодСписка7SKU1260
ТТ1 КодСписка7SKU1370

Это отгрузки по ТТ1 по SKU. В ТТ1 привязан код списка. В том списке перечислены Общие SKU, которые надо отгрузить.


В общем, есть поле "Общее SKU", и есть "SKU". В одном "Общее SKU" может быть один или два SKU. Теперь нужно выгрузить Общее SKU и SKU, которые прописаны в КодСписка7.
+
SELECT
	[Measures].[Дата изменения списка]
ON 0,
NON EMPTY		
	[Списки].[Код списка].&[7]*	
	[Списки].[Общее SKU].[Общее SKU]*
        [Продукция].[SKU].[SKU]
ON 1
FROM 	PROFIT

Код списка Общее SKUSKUДата изменения списка
КодСписка7SKU1SKU110.06.2016
КодСписка7SKU2SKU210.06.2016
КодСписка7SKU3/SKU4SKU310.06.2016
КодСписка7SKU3/SKU4SKU410.06.2016
КодСписка7SKU5/SKU6SKU510.06.2016
КодСписка7SKU5/SKU6SKU610.06.2016
КодСписка7SKU7SKU710.06.2016
КодСписка7SKU8SKU810.06.2016



Далее нужно выгрузить по ТТ Общее SKU с нулевыми и не с нулевыми отгрузками. Из того списка указать, какие Общее SKU отгружено, а какие нет. SKU, которые не входят в соответствующий список, не выгружаются (в данном случае это SKU12 и SKU13).

+
SELECT
	[Measures].[Отгрузки шт]
ON 0,	
	NONEMPTY([Торговые точки].[Код ТТ].[Код ТТ],     [Measures].[Отгрузки шт]) *
	NONEMPTY([Торговые точки].[Код списка].[Код списка],    [Measures].[Отгрузки шт])*
	[Списки].[Код списка].[Код списка]*	
	[Списки].[Общее SKU].[Общее SKU]	
HAVING([Торговые точки].[Код списка].CurrentMember.Name = [Списки].[Код списка].CurrentMember.Name)
ON 1
FROM (SELECT
	([Время].[Месяц].&[2016-12-01T00:00:00],
	[Торговые точки].[Код ТТ].&[0000001])
	ON 0
	FROM
		PROFIT)
получаю такой результат

Код ТТ Код спискаКод списка Общее SKUОтгрузки
ТТ1 КодСписка7КодСписка7SKU110
ТТ1 КодСписка7КодСписка7SKU220
ТТ1 КодСписка7КодСписка7SKU3/SKU470
ТТ1 КодСписка7КодСписка7SKU5/SKU650
ТТ1 КодСписка7КодСписка7SKU7
ТТ1 КодСписка7КодСписка7SKU8

Эта запись типа объединяет две первые таблицы
HAVING([Торговые точки].[Код списка].CurrentMember.Name = [Списки].[Код списка].CurrentMember.Name)


Но надо получить такой результат!
Код ТТ Код спискаКод списка Общее SKUSKUОтгрузки
ТТ1 КодСписка7КодСписка7SKU1SKU110
ТТ1 КодСписка7КодСписка7SKU2SKU220
ТТ1 КодСписка7КодСписка7SKU3/SKU4SKU330
ТТ1 КодСписка7КодСписка7SKU3/SKU4SKU440
ТТ1 КодСписка7КодСписка7SKU5/SKU6SKU550
ТТ1 КодСписка7КодСписка7SKU5/SKU6SKU6
ТТ1 КодСписка7КодСписка7SKU7SKU7
ТТ1 КодСписка7КодСписка7SKU8SKU8

Потом в запрос добавляю атрибут
+
SELECT
	[Measures].[Отгрузки шт]
ON 0,	
	NONEMPTY([Торговые точки].[Код ТТ].[Код ТТ],     [Measures].[Отгрузки шт]) *
	NONEMPTY([Торговые точки].[Код списка].[Код списка],    [Measures].[Отгрузки шт])*
	[Списки].[Код списка].[Код списка]*	
	[Списки].[Общее SKU].[Общее SKU]*
	NONEMPTY([Продукция].[SKU].[SKU],     [Measures].[Отгрузки шт])
HAVING([Торговые точки].[Код списка].CurrentMember.Name = [Списки].[Код списка].CurrentMember.Name)
ON 1
FROM (SELECT
	([Время].[Месяц].&[2016-12-01T00:00:00],
	[Торговые точки].[Код ТТ].&[0000001])
	ON 0
	FROM
		PROFIT)

Получаю такой результат:
+
Код ТТ Код спискаКод списка Общее SKUSKUОтгрузки
ТТ1 КодСписка7КодСписка7SKU1SKU110
ТТ1 КодСписка7КодСписка7SKU1SKU2
ТТ1 КодСписка7КодСписка7SKU1SKU3
ТТ1 КодСписка7КодСписка7SKU1SKU4
ТТ1 КодСписка7КодСписка7SKU1SKU5
ТТ1 КодСписка7КодСписка7SKU1SKU12
ТТ1 КодСписка7КодСписка7SKU1SKU13
ТТ1 КодСписка7КодСписка7SKU2SKU1
ТТ1 КодСписка7КодСписка7SKU2SKU220
ТТ1 КодСписка7КодСписка7SKU2SKU3
ТТ1 КодСписка7КодСписка7SKU2SKU4
ТТ1 КодСписка7КодСписка7SKU2SKU5
ТТ1 КодСписка7КодСписка7SKU2SKU12
ТТ1 КодСписка7КодСписка7SKU2SKU13
ТТ1 КодСписка7КодСписка7SKU3/SKU4SKU1
ТТ1 КодСписка7КодСписка7SKU3/SKU4SKU2
ТТ1 КодСписка7КодСписка7SKU3/SKU4SKU330
ТТ1 КодСписка7КодСписка7SKU3/SKU4SKU440
ТТ1 КодСписка7КодСписка7SKU3/SKU4SKU5
ТТ1 КодСписка7КодСписка7SKU3/SKU4SKU12
ТТ1 КодСписка7КодСписка7SKU3/SKU4SKU13
ТТ1 КодСписка7КодСписка7SKU5/SKU6SKU1
ТТ1 КодСписка7КодСписка7SKU5/SKU6SKU2
ТТ1 КодСписка7КодСписка7SKU5/SKU6SKU3
ТТ1 КодСписка7КодСписка7SKU5/SKU6SKU4
ТТ1 КодСписка7КодСписка7SKU5/SKU6SKU550
ТТ1 КодСписка7КодСписка7SKU5/SKU6SKU12
ТТ1 КодСписка7КодСписка7SKU5/SKU6SKU13
ТТ1 КодСписка7КодСписка7SKU7SKU1
ТТ1 КодСписка7КодСписка7SKU7SKU2
ТТ1 КодСписка7КодСписка7SKU7SKU3
ТТ1 КодСписка7КодСписка7SKU7SKU4
ТТ1 КодСписка7КодСписка7SKU7SKU5
ТТ1 КодСписка7КодСписка7SKU7SKU12
ТТ1 КодСписка7КодСписка7SKU7SKU13
ТТ1 КодСписка7КодСписка7SKU8SKU1
ТТ1 КодСписка7КодСписка7SKU8SKU2
ТТ1 КодСписка7КодСписка7SKU8SKU3
ТТ1 КодСписка7КодСписка7SKU8SKU4
ТТ1 КодСписка7КодСписка7SKU8SKU5
ТТ1 КодСписка7КодСписка7SKU8SKU12
ТТ1 КодСписка7КодСписка7SKU8SKU13

и не хватает следующих строк
Код ТТ Код спискаКод списка Общее SKUSKUОтгрузки
ТТ1 КодСписка7КодСписка7SKU7SKU7
ТТ1 КодСписка7КодСписка7SKU8SKU8

Как тут правильно написать запрос, чтобы получить нужный результат? То ли использовать директиву NON EMPTY, то ли надо использовать функцию NONENPTY (где второй аргумент то ли надо как то использовать меру "Дата изменения матрицы", то ли одновременно меры "Отгрузки" и "Дата изменения матрицы"), то ли какую другую функцию использовать. И возможно ли выгрузить нужную таблицу?
6 фев 17, 07:59    [20182594]     Ответить | Цитировать Сообщить модератору
 Re: MDX-запрос. Выгрузить нужные строки  [new]
ferzmikk
Member

Откуда:
Сообщений: 964
Похоже надо добавлять в измерение Списки атрибут Продукция.
8 фев 17, 11:28    [20192000]     Ответить | Цитировать Сообщить модератору
Все форумы / OLAP и DWH Ответить