Здравствуйте!
Нужно выгрузить таблицу с полями "Город", "Код ТТ", "SKU" и "Дата". Где "Дата" – это первая (min) дата отгрузки для пары "Код ТТ - SKU".
Написал такой MDX-запрос.
+MDX-запрос |
WITH
MEMBER [Measures].[Min Дата] AS
MIN
(EXISTING
//NONEMPTY(
{[Торговые точки].[Код ТТ].CURRENTMEMBER}*
{[SKU].[Общее SKU].CURRENTMEMBER}*
{[Время].[Дата].[Дата].MEMBERS}
// ,[Measures].[Отгрузки шт]
//)
,IIF
(
[Measures].[Отгрузки шт] = 0
,NULL
,[Время].[Дата].CurrentMember.MEMBERVALUE
)
)
SELECT
NON EMPTY
{[Measures].[Отгрузки шт],
[Measures].[Min Дата]} ON 0,
NON EMPTY
[Города].[Город].[Город]*
[Торговые точки].[Код ТТ].[Код ТТ]*
[SKU].[Общее SKU].[Общее SKU]*
[Время].[Дата].[Дата]
//HAVING
// [Время].[Дата].CurrentMember.MEMBERVALUE = [Measures].[Min Дата]
//...
ON 1
FROM
(SELECT (
[Время].[Дата].&[2019-01-01T00:00:00]:[Время].[Дата].&[2019-03-26T00:00:00]
,{[Торговые точки].[Код ТТ].&[00001грд],[Торговые точки].[Код ТТ].&[00002грд]}) ON 0 FROM PROFIT)
|
Выдает такой результат:
Город | Код ТТ | Общее SKU | Дата | Отгрузки шт | Min Дата | Город1 | 00001грд | SKU1 | 26.02.2019 | 2 | 26.02.2019 | Город1 | 00001грд | SKU1 | 05.03.2019 | 2 | 05.03.2019 | Город1 | 00001грд | SKU2 | 08.01.2019 | 2 | 08.01.2019 | Город1 | 00001грд | SKU2 | 12.02.2019 | 2 | 12.02.2019 | Город1 | 00001грд | SKU2 | 26.02.2019 | 2 | 26.02.2019 | Город1 | 00001грд | SKU2 | 05.03.2019 | 2 | 05.03.2019 | Город1 | 00001грд | SKU2 | 12.03.2019 | 2 | 12.03.2019 | Город1 | 00001грд | SKU2 | 19.03.2019 | 4 | 19.03.2019 | Город1 | 00001грд | SKU2 | 26.03.2019 | 2 | 26.03.2019 |
|
Результат не верный.
В промежуточном результате должно быть так:
Город | Код ТТ | Общее SKU | Дата | Отгрузки шт | Min Дата | Город1 | 00001грд | SKU1 | 26.02.2019 | 2 | 26.02.2019 | Город1 | 00001грд | SKU1 | 05.03.2019 | 2 | 26.02.2019 | Город1 | 00001грд | SKU2 | 08.01.2019 | 2 | 08.01.2019 | Город1 | 00001грд | SKU2 | 12.02.2019 | 2 | 08.01.2019 | Город1 | 00001грд | SKU2 | 26.02.2019 | 2 | 08.01.2019 | Город1 | 00001грд | SKU2 | 05.03.2019 | 2 | 08.01.2019 | Город1 | 00001грд | SKU2 | 12.03.2019 | 2 | 08.01.2019 | Город1 | 00001грд | SKU2 | 19.03.2019 | 4 | 08.01.2019 | Город1 | 00001грд | SKU2 | 26.03.2019 | 2 | 08.01.2019 |
|
А в конечном результате - так:
Город | Код ТТ | Общее SKU | Дата | Отгрузки шт | Min Дата | Город1 | 00001грд | SKU1 | 26.02.2019 | 2 | 26.02.2019 | Город1 | 00001грд | SKU2 | 08.01.2019 | 2 | 08.01.2019 |
|
Время выгрузки - 6 минут 15 секунд. Учитывая, что выгружались 2 ТТ точки с 1 января 2019. А выгрузка будет по всем ТТ с 1 января 2018. Если использовать функцию NONEMPTY, которая закоментирована в запросе, то дольше выгружает.
1. Как правильно написать запрос, чтобы выгружалось как в конечной таблице?
2. Как написать запрос более оптимально, чтобы быстрее выгружалось?