MDX - 计算日期范围内的不同计数

问题描述 投票:0回答:1

我有一个立方体(多维)

[Person]
,
[Arrival Date]
[Departure Date]
尺寸,
[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)

但是不起作用...

问题:如何在我的测量中添加第二个(或两个以上)条件?

提前致谢!

dax mdx iccube
1个回答
0
投票

首先,度量 [Measures].[#People] 应该是对人员唯一 ID 的不同计数

定义应该是:

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]  

文档参考:

希望有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.