我有一个用于滚动 30 天总计的 MDX 计算度量,我想为未来的成员隐藏计算。我正在尝试使用 CASE 语句,但比较无法正常进行。如果 Fiscal Month 成员的键是日期时间,这不应该工作吗?
CASE
WHEN [Time].[Fiscal Month].CurrentMember < NOW()
THEN 1
ELSE 0
END
我有一个用于滚动 30 天总计的 MDX 计算度量,我想为未来的成员隐藏计算。我正在尝试使用 CASE 语句,但比较无法正常进行。如果 Fiscal Month 成员的键是日期时间,这不应该工作吗?
CASE
WHEN [Time].[Fiscal Month].CurrentMember < NOW()
THEN 1
ELSE 0
END
另一种有时性能更好的方法可能是沿着“IsFuture”的行向您的日期维度添加一个属性。
根据您的数据加载/处理计划,您可以在数据仓库中有一个字段,或者在您的 dsv 中有一个计算列来预先计算日期是否在未来。
而不是在您的 MDX 中执行即时计算,
IIF
您可以使用这样的方法创建一个计算的度量SCOPE
(未经测试,来自内存)只是我提供的一个想法,你的问题没有提供很多细节来创建一个有效的示例代码,但这可能是一种替代方法。如果日期是未来的而不是 0,这将返回空,但如果您的客户仅返回/结果
,则取决于您的要求可以提供更好的结果。
NONEMPTY
NONEMPTYCROSSJOIN
该函数
NOW()
返回一个日期时间,您不能将其与成员进行比较。根据时间维度的定义,您可以NOW()
使用 MDX-Function 将结果转换为成员StrToMember
,但不低于成员。我的时间维度使用格式为“yyyyMMdd”的键。所以那个键是这样比较的:
WHEN [Time].[Time].CurrentMember.Properties("Key") < Format(Now(),"yyyyMMdd") THEN 1