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

Откуда:
Сообщений: 36
Добрый ден.
В одном запросе нужно посчитать по измерению DistinctCount отталкиваясь от текущего дня:
1. Последняя целая неделя (иерархия дат [Дата доставки].[Год - Неделя - День])
2. Предыдущая неделя за целой (иерархия дат [Дата доставки].[Год - Неделя - День])
3. Текущий месяц (иерархия дат [Дата доставки].[Год - Месяц- День])
4. Предыдущий месяц за такой же период дней, как и в текущем месяце (иерархия дат [Дата доставки].[Год - Месяц- День], ParallelPeriod)

с пунктами 1-3 вроде бы понятно, а вот как в этот же запрос засунуть еще и пункт 4 не могу понять.
Прошу помощи )
29 авг 18, 11:49    [21657390]     Ответить | Цитировать Сообщить модератору
 Re: Все в одном - CM, DistinctCount, ParallelPeriod, StrToMember  [new]
bideveloper
Member

Откуда:
Сообщений: 353
SilverVolg,

([Dim Calendar Tool].[Calendar Tool Name].[Prior Month]) 
    = 
 PARALLELPERIOD([Dim Calendar].[Calendar YQMD].Month, 1, [Dim Calendar].[Calendar YQMD].CURRENTMEMBER)
        ,[Dim Calendar Tool].[Calendar Tool Name].DEFAULTMEMBER);


([Dim Calendar Tool].[Calendar Tool Name].[Prior MTD]) 
    =
    AGGREGATE
    (
        PERIODSTODATE
        (
            [Dim Calendar].[Calendar YQMD].[Month],
            [Dim Calendar].[Calendar YQMD].CURRENTMEMBER
        ),
        [Dim Calendar Tool].[Calendar Tool Name].[Prior Month]
    );
29 авг 18, 12:30    [21657472]     Ответить | Цитировать Сообщить модератору
 Re: Все в одном - CM, DistinctCount, ParallelPeriod, StrToMember  [new]
SilverVolg
Member

Откуда:
Сообщений: 36
bideveloper,

Спасибо, но немного нет

Получилось как то так:
WITH
MEMBER [cw] AS AGGREGATE( WTD([Дата доставки].[Год - Неделя - День].CurrentMember), [Measures].[Parcel ID Distinct Count] )
MEMBER [pw] AS AGGREGATE( WTD(ParallelPeriod([Дата доставки].[Год - Неделя - День].[Неделя])), [Measures].[Parcel ID Distinct Count] )
MEMBER [cm] AS AGGREGATE( MTD(LinkMember([Дата доставки].[Год - Неделя - День].CurrentMember, [Дата доставки].[Год - Месяц - День])), [Measures].[Parcel ID Distinct Count] )
MEMBER [pm] AS AGGREGATE(
	MTD(ParallelPeriod(
		[Дата доставки].[Год - Месяц - День].[Месяц]
		, 1
		, LinkMember([Дата доставки].[Год - Неделя - День].CurrentMember, [Дата доставки].[Год - Месяц - День])
	))
	, [Measures].[Parcel ID Distinct Count]
)

SELECT {
	[cw]
	, [pw]

	, [cm]
	, [pm]
} ON COLUMNS
, (
	[Дата доставки].[Год - Месяц - День].[День].&[2018-08-26T00:00:00]
) ON ROWS
FROM CourierTasks
29 авг 18, 13:35    [21657571]     Ответить | Цитировать Сообщить модератору
Все форумы / OLAP и DWH Ответить