powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Получить итог с начала года с группировками по дням по измерению даты имеющему 3 уровня?
4 сообщений из 4, страница 1 из 1
Получить итог с начала года с группировками по дням по измерению даты имеющему 3 уровня?
    #39936826
Pvase
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Суть запроса - получить суммы за период с начала 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
Получить итог с начала года с группировками по дням по измерению даты имеющему 3 уровня?
    #39936828
Pvase
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. в результате должна получиться таблица, которая потом выводиться в отчет с разбиением по годам:
Год Контрагент НоменклатураЯнварьФефральМарт Апрель Май Июнь Июль Август Сентябрь Октябрь Ноябрь Декабрь Итого За год Итого за пред год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
Получить итог с начала года с группировками по дням по измерению даты имеющему 3 уровня?
    #39936831
Pvase
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фактически мне достаточно измерения [Нов_Календарь].[Год-Месяц-День].[Месяц].ALLMEMBERS
Тогда и YTD будет работать правильно, но в таком случае функция:
Код: sql
1.
SUM(ParallelPeriod([Нов_Календарь].[Год-Месяц-День].[Год],1,[Нов_Календарь].[Год-Месяц-День].CurrentMember) ,[Measures].[Продажи])


вернет продажи не по 12 марта предыдущего года, а за ввесь март 2019 года, что не есть хорошо, надо, с 01.01.2019 до 12.03.2019
...
Рейтинг: 0 / 0
Получить итог с начала года с группировками по дням по измерению даты имеющему 3 уровня?
    #39937292
Pvase
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для измерения нов_Календарь для Поля "Дата" и месяц прописал ссылку на ДатуМесяцНод в значение 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
4 сообщений из 4, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Получить итог с начала года с группировками по дням по измерению даты имеющему 3 уровня?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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