Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Получить итог с начала года с группировками по дням по измерению даты имеющему 3 уровня? / 4 сообщений из 4, страница 1 из 1
12.03.2020, 19:06
    #39936826
Pvase
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить итог с начала года с группировками по дням по измерению даты имеющему 3 уровня?
Суть запроса - получить суммы за период с начала 2016 года по текущую дату в разрезе троих измерений.
Но задача усложняется тем, что необходимо получить итоги в двух разрезах, за текущий год и за аналогичный период предыдущих лет.
Измерение календаря имеет 3 уровня: Год-Месяц-День. Также строиться в разрезах Клиент и Номенклатура.
Использую функцию YTD, но к сожалению она не дает результат с начала года.
Вот запрос:
Код: 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.
WITH 
MEMBER [Measures].[Продажи]
AS 
[Measures].[Продажи Доход]

MEMBER [Measures].[Продажи Доход ПредГод]
	AS 
	IIF([Measures].[Продажи] <> 0, SUM(ParallelPeriod([Нов_Календарь].[Год-Месяц-День].[Год],1,[Нов_Календарь].[Год-Месяц-День].CurrentMember) ,[Measures].[Продажи]), NULL)

MEMBER [Measures].[Продажи Доход Итого]
	AS 
	IIF([Measures].[Продажи] <> 0, SUM((
	YTD([Нов_Календарь].[Год-Месяц-День].CurrentMember),
	[Контрагент].[ALL],
	[Номенклатура].[ALL]),
	[Measures].[Продажи]), NULL)


SELECT NON EMPTY { 
	[Measures].[Продажи Доход ПредГод]
	,[Measures].[Продажи]
	,[Measures].[Продажи Доход Итого]
	} ON COLUMNS,
	NON EMPTY {([Нов_Календарь].[Год-Месяц-День].[Дата].ALLMEMBERS * [Контрагент].ALLMEMBERS * [Номенклатура].ALLMEMBERS) } ON ROWS 
	FROM (
	SELECT ([Нов_Календарь].[Год-Месяц-День].[Год].& [2016-01-01T00:00:00].& [2016-01-01T00:00:00].& [2016-01-01T00:00:00] : [Нов_Календарь].[Год-Месяц-День].[Год].& [2019-01-01T00:00:00].& [2019-11-01T00:00:00].& [2019-11-07T00:00:00]) ON COLUMNS
	FROM [Куб]
		
	)



Подскажите, как исправить, чтобы считался итог?
...
Рейтинг: 0 / 0
12.03.2020, 19:14
    #39936828
Pvase
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить итог с начала года с группировками по дням по измерению даты имеющему 3 уровня?
Т.е. в результате должна получиться таблица, которая потом выводиться в отчет с разбиением по годам:
Год Контрагент НоменклатураЯнварьФефральМарт Апрель Май Июнь Июль Август Сентябрь Октябрь Ноябрь Декабрь Итого За год Итого за пред год2017 Иванов Товар1100103105 102 105 97 78 45 200 105 56 12 3327 12562017 Иванов Товар2101103105 102 105 97 78 45 200 105 56 12 3327 13402017 Иванов Товар3102103105 102 105 97 78 45 200 105 56 12 3327 1340
...
Рейтинг: 0 / 0
12.03.2020, 19:18
    #39936831
Pvase
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить итог с начала года с группировками по дням по измерению даты имеющему 3 уровня?
Фактически мне достаточно измерения [Нов_Календарь].[Год-Месяц-День].[Месяц].ALLMEMBERS
Тогда и YTD будет работать правильно, но в таком случае функция:
Код: sql
1.
SUM(ParallelPeriod([Нов_Календарь].[Год-Месяц-День].[Год],1,[Нов_Календарь].[Год-Месяц-День].CurrentMember) ,[Measures].[Продажи])


вернет продажи не по 12 марта предыдущего года, а за ввесь март 2019 года, что не есть хорошо, надо, с 01.01.2019 до 12.03.2019
...
Рейтинг: 0 / 0
13.03.2020, 20:18
    #39937292
Pvase
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить итог с начала года с группировками по дням по измерению даты имеющему 3 уровня?
Для измерения нов_Календарь для Поля "Дата" и месяц прописал ссылку на ДатуМесяцНод в значение Value, после чего исправил немного запрос:
Код: 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.
WITH 
MEMBER [Measures].[МесяцТек]
	AS 
	--IIF(([Нов_Календарь].[Год-Месяц-День].[Год].& [2019-01-01T00:00:00].& [2019-11-01T00:00:00].& [2019-11-07T00:00:00].Member_Key)
	--[Нов_Календарь].[Год-Месяц-День].CurrentMember.Lead(2).Member_Key
	Cint(Mid(
	[Нов_Календарь].[Год-Месяц-День].CurrentMember.Member_Value
	,5,2))
MEMBER [Measures].[МесяцПарам]
	AS 
	Cint(
	Mid(
	[Нов_Календарь].[Год-Месяц-День].[Год].& [2019-01-01T00:00:00].& [2019-11-01T00:00:00].& [2019-11-07T00:00:00].Member_Value
	,4,2)
	)
MEMBER [Measures].[МесяцПроверка]
	AS
	IIF([Measures].[МесяцТек] < [Measures].[МесяцПарам],1,
	IIF([Measures].[МесяцТек] = [Measures].[МесяцПарам],2,0)
	)

MEMBER [Measures].[СуммаОтчета ПредГод1]
	AS 
	IIF([Measures].[СуммаОтчета] <> 0 AND [Measures].[ГодПроверка] >= 1, 
		IIF([Measures].[МесяцПроверка] = 1,
			SUM(ParallelPeriod([Нов_Календарь].[Год-Месяц-День].[Год],1,[Нов_Календарь].[Год-Месяц-День].CurrentMember) ,[Measures].[СуммаОтчета]),
				IIF([Measures].[МесяцПроверка] = 2,
					SUM(ParallelPeriod([Нов_Календарь].[Год-Месяц-День].[Год],1,[Нов_Календарь].[Год-Месяц-День].CurrentMember).FirstChild
					: Cousin([Нов_Календарь].[Год-Месяц-День].[Год].& [2019-01-01T00:00:00].& [2019-11-01T00:00:00].& [2019-11-07T00:00:00],
					ParallelPeriod([Нов_Календарь].[Год-Месяц-День].[Год],1,[Нов_Календарь].[Год-Месяц-День].CurrentMember))
					,[Measures].[СуммаОтчета])	,NULL)
	)
	, NULL)
MEMBER [Measures].[Продажи Итого]
	AS 
	IIF([Measures].[СуммаОтчета] <> 0, 
		SUM(([Нов_Календарь].[Год-Месяц-День].CurrentMember.Parent,
		[НаправленияДеятельности].[НСИ Направление].[All]
		,[Бренды].[Бренд].[All]
		),[Measures].[СуммаОтчета])
	, NULL)


А измерение даты исправил на месяц:
[Нов_Календарь].[Год-Месяц-День].[Месяц].ALLMEMBERS
...
Рейтинг: 0 / 0
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Получить итог с начала года с группировками по дням по измерению даты имеющему 3 уровня? / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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