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

Есть задача. По строкам выводить ТТ. По колонкам SKU (Всего 10). Мера - количество отгруженных ТТ. Но фишка в том, что для SKU1 выгружаются данные за 46 и 47 неделю, а остальные SKU - 47.

Написал такой MDX-запрос.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
WITH
SET [Неделя1] AS [Время].[Неделя года].&[46]
SET [Неделя2] AS [Время].[Неделя года].&[47]

MEMBER [Measures].[SKU1] AS
	SUM(
		{([SKU].[SKU].&[SKU1],		
		{[Неделя1], [Неделя2])},
		[Measures].[Отгрузки количество ТТ])
		
MEMBER [Measures].[SKU2] AS
	SUM(
		{([SKU].[SKU].&[SKU2],		
		{[Неделя2]})},
		[Measures].[Отгрузки количество ТТ])
		
MEMBER [Measures].[SKU3] AS
	SUM(
		{([SKU].[SKU].&[SKU3],		
		[Неделя2])},
		[Measures].[Отгрузки количество ТТ])
...

SELECT
{[Measures].[SKU1],
[Measures].[SKU2],
[Measures].[SKU3],
[Measures].[SKU4],
[Measures].[SKU5],
[Measures].[SKU6],
[Measures].[SKU7],
[Measures].[SKU8],
[Measures].[SKU9],
[Measures].[SKU10]} on 0,
NON EMPTY
[Торговые точки].[Код ТТ].[Код ТТ]
 on 1 
	From (SELECT ([SKU].[SKU Группа].&[1],
		[Время].[Год].&[2016-01-01T00:00:00],
		{[Время].[Неделя года].&[46],[Время].[Неделя года].&[47]},
                {[SKU].[SKU].&[SKU1],
                 [SKU].[SKU].&[SKU2],
                 [SKU].[SKU].&[SKU3],
                 [SKU].[SKU].&[SKU4],
                 [SKU].[SKU].&[SKU5],
                 [SKU].[SKU].&[SKU6],
                 [SKU].[SKU].&[SKU7],
                 [SKU].[SKU].&[SKU8],
                 [SKU].[SKU].&[SKU9],
                 [SKU].[SKU].&[SKU10]}
                 ) ON 0 FROM [Profit])


Запрос работает. Но мне кажется я его сложно написал. Учитывая что часто придется менять недели, и возможно SKU (не только менять, а еще добавлять и/или удалять). Учитывая, что еще есть субкуб.

Как можно написать этот запрос более оптимально и динамично?
...
Рейтинг: 0 / 0
Оцените запрос
    #39354506
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikk,

Вам нужно освоить SCOPE и расписать расчеты под каждый уровень иерархии календаря, где есть отличия.

Также посмотрите функции EXISTING и CURRENTMEMBER

Вообще MDX не простая тема, но вы похоже начали в неё въезжать
...
Рейтинг: 0 / 0
Оцените запрос
    #39354512
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikk,

Если что, заглядывайте на огонёк
...
Рейтинг: 0 / 0
Оцените запрос
    #39354518
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Оцените запрос
    #39385908
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такой запрос
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
WITH
MEMBER [Measures].[SKU1] AS
	SUM(
		{([SKU].[SKU].&[SKU1],		
		{[Время].[Неделя года].&[51],   [Время].[Неделя Года].&[52]})},
		[Measures].[Отгрузки количество ТТ])
SELECT
[Measures].[SKU1] on 0,
NON EMPTY
[Торговые точки].[Код ТТ].[Код ТТ]
ON 1 
	From (SELECT (	[SKU].[SKU].[SKU1],
					[Время].[Год].&[2016-01-01T00:00:00],
					[Торговые точки].[Код ТТ].&[1]
					) ON 0 FROM [Profit])

Дает такой результат
ТТSKU1ТТ11

В субкуб в кортеж добавляю недели. Теже самые недели, которые в Member.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
WITH
MEMBER [Measures].[SKU1] AS
	SUM(
		{([SKU].[SKU].&[SKU1],		
		{[Время].[Неделя года].&[51],   [Время].[Неделя Года].&[52]})},
		[Measures].[Отгрузки количество ТТ])
SELECT
[Measures].[SKU1] on 0,
NON EMPTY
[Торговые точки].[Код ТТ].[Код ТТ]
ON 1 
	From (SELECT (	[SKU].[SKU].[SKU1],
					{([Время].[Год].&[2016-01-01T00:00:00],  [Время].[Неделя года].&[51]),
						([Время].[Год].&[2016-01-01T00:00:00],  [Время].[Неделя Года].&[52])},
					   [Торговые точки].[Код ТТ].&[1]
					) ON 0 FROM [Profit])

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


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