Ssas 如何在MDX中根据筛选的日期计算运行总计?

Ssas 如何在MDX中根据筛选的日期计算运行总计?,ssas,mdx,cumulative-sum,Ssas,Mdx,Cumulative Sum,我需要有计算过的成员来计算Dim日期上的运行总数 这应该适用于在报告中过滤的所有日期。 大多数解决方案都是从Dim date中的第一个日期或Null计算到当前成员,但我需要从筛选到当前成员的第一个日期计算,并排除它们不在筛选中的日期 试试这个: //capture the dates selected in the where clause of the query CREATE DYNAMIC SET CURRENTCUBE.SelectedDates as [Dim Date].[Date]

我需要有计算过的成员来计算Dim日期上的运行总数 这应该适用于在报告中过滤的所有日期。 大多数解决方案都是从Dim date中的第一个日期或Null计算到当前成员,但我需要从筛选到当前成员的第一个日期计算,并排除它们不在筛选中的日期 试试这个:

//capture the dates selected in the where clause of the query
CREATE DYNAMIC SET CURRENTCUBE.SelectedDates as
[Dim Date].[Date].[Date].Members;

CREATE MEMBER CURRENTCUBE.[Measures].[Cumulative Sale Price] as
Sum(
 {
  SelectedDates.Item(0).Item(0)
  :
  Tail(Existing [Dim Date].[Date].[Date].Members, 1).Item(0).Item(0) //capture the last date present in the Filter context for this cell
 },
 [Measures].[Sale Price]
);

CREATE MEMBER CURRENTCUBE.[Measures].[Cumulative Sale Price with Skips] as
Sum(
 Exists(
  SelectedDates,
  {
   SelectedDates.Item(0).Item(0)
   :
   Tail(Existing [Dim Date].[Date].[Date].Members, 1).Item(0).Item(0) //capture the last date present in the Filter context for this cell
  }
 ),
 [Measures].[Sale Price]
);

非常感谢您的回答,这对我很有帮助,但是如果我们排除了第一个成员和当前成员之间的一些日期,那么在我们的计算中,如果第一个成员是2017-01,当前成员是2019-10,如果我们只筛选了2017年和2019年的暗淡日期,2018年的所有价格都将汇总,我们可以用mdx进行递归求和吗?如果我们可以将每个成员与前一个成员相加,也许我们可以解决这个问题,您知道如何在mdx中进行递归聚合吗?@sepideh.sp我在我的答案中添加了第二个度量。看看这是否能像你所希望的那样处理跳过的日期。非常感谢你的帮助,它成功了:)我在DimDate中使用date时有性能问题,在YearMonth中没有问题,但是当我们详细说明到今天为止它至少加载了10秒时,我们能做些工作来提高性能吗?