MDX – вычисление отдельного количества в диапазоне дат

у меня есть куб (многомерный) с

и размеры,[Measures].[persons #D]- отчетливое количество[Person], и таблица фактов, содержащая даты выезда и прибытия человека.

Мне нужно подсчитать определенное количество людей, которые «останутся здесь» на выбранную пользователем дату. это значит, что мне нужно посчитать людей, у которых есть[Arrival Date]до и[Departure Date]после выбранной пользователем даты.

Выбранная пользователем дата сохраняется в[Measure].[EndOfPeriodDate].

В Dax/табличной модели я могу сделать это легко. что-то вроде того:

CALCULATE(COUNTA([Person]); FILTER(FactTable; ('FactTable'[Arrival Date] < [EndOfPeriodDate]) && 'FactTable'[Departure Date] > [EndOfPeriodDate])))

но я действительно не могу понять, как написать то же самое в MDX (я работаю с icCube).

Я написал следующую меру, и она работает хорошо:

create member [Measures].[PersonsAtEndOfPeriod] AS aggregate ( NULL:[Arrival Date].[Arrival Date].[Day].lookupByName([measures].[EndOfPeriodDate]) ,[Measures].[Persons #D] )

но это только первая часть. мне нужно добавить вторую часть моего условия

([Departure Date].[Departure Date].[Day].lookupByName([measures].[EndOfPeriodDate]:NULL)

я предполагаю, что это может выглядеть так:

NULL:[Arrival Date].[Arrival Date].[Day].lookupByName([measures].[EndOfPeriodDate]) + ([Departure Date].[Departure Date].[Day].lookupByName([measures].[EndOfPeriodDate]:NULL)

но это не работает...

ВОПРОС: как добавить второе (или более двух) условий в мою меру?

Заранее спасибо!

1 ответ

Во-первых, мера [Measures].[#People] должна представлять собой отдельный счетчик уникального идентификатора человека.

Определение должно быть:

      WITH

   MEMBER toto as eval(SubCubeUnion(null:[Departure].[Departure].[Day].[3 Nov 2019],[Arrival].[Arrival].[Day].[8 May 2019]:null ), [Measures].[#People])

SELECT
   toto on 0
FROM [Cube]  

Ссылки на документы:

Надеюсь, поможет!

Другие вопросы по тегам