【发布时间】:2017-11-27 19:20:54
【问题描述】:
我有一个度量的累积总和,其结构如下:
Aggregate (
{ NULL : [Date].[Year - Month - Date].CurrentMember }
,[Measures].[Applications] )
从第一次申请的日期到当前日期,日期范围的天数必须是连续的。
Date 维度包含从 1900-01-01 到未来的日期。
我已尝试通过按如下方式构建计算度量来消除第一次申请之前的日期和未来的日期:
CREATE MEMBER CURRENTCUBE.[Measures].[Applications TD] AS
CASE
WHEN
/* Eliminates dates before first applications, i.e. year 1900-01-01 */
Aggregate (
{ NULL : [Date].[Year - Month - Date].CurrentMember }
,[Measures].[Applications] ) < 0
THEN NULL
WHEN
/* Eliminates dates after today */
[Date].[Year - Month - Date].CurrentMember.MemberValue >= StrToMember('[Date].[Date].&['+Format(Now(),"yyyy-MM-ddT00:00:00")+']').MemberValue
THEN NULL
ELSE
Aggregate (
{ NULL : [Date].[Year - Month - Date].CurrentMember }
,[Measures].[Applications] )
END
我试图通过仅在需要的地方使用 SCOPE 作为 case 语句的替代方法、利用 EXISTS 和 EXCEPT 函数以及许多其他函数来优化这一点,但都没有成功。
浏览多维数据集并通过[Date].[Year - Month - Date] 用户定义的层次结构标注[Measures].[Applications TD] 时,速度非常慢。
【问题讨论】:
-
你需要使用
Aggregate还是使用Sum可以? -
Sum 在这种情况下应该可以工作。