Ssas 非空的上一个值-MDX
我正在使用Performance Point Dashboard Designer 2013和SharePoint Server 2013构建仪表板。我使用SSAS2012作为多维数据集 我有一个类似于下图所示的场景。我需要查找以前的非空值,以便查找趋势 衡量标准:[配额] 维度:[日期].[日历日期].[日期] 脚本Ssas 非空的上一个值-MDX,ssas,mdx,sharepoint-2013,dimension,performancepoint,Ssas,Mdx,Sharepoint 2013,Dimension,Performancepoint,我正在使用Performance Point Dashboard Designer 2013和SharePoint Server 2013构建仪表板。我使用SSAS2012作为多维数据集 我有一个类似于下图所示的场景。我需要查找以前的非空值,以便查找趋势 衡量标准:[配额] 维度:[日期].[日历日期].[日期] 脚本([Measures].[Quota],[Date].[Calendar Date].PrevMember)提供了以前的日期。假设2013年1月27日的配额值为87,则返回201
([Measures].[Quota],[Date].[Calendar Date].PrevMember)
提供了以前的日期。假设2013年1月27日的配额值为87,则返回2013年1月26日的值为空。我希望它返回13年1月21日,有一些配额值。对于2013年1月21日,我想返回2013年1月15日
我想知道这是否可能
谢谢,Merin您可以使用递归来定义它 以下查询为AdventureWorks多维数据集提供了类似的内容:
WITH member [Measures].[Prev non empty] AS
IIf(IsEmpty(([Date].[Calendar].CurrentMember.PrevMember, [Measures].[Internet Sales Amount])),
([Date].[Calendar].CurrentMember.PrevMember, [Measures].[Prev non empty]),
([Date].[Calendar].CurrentMember.PrevMember, [Measures].[Internet Sales Amount])
), format_String = '$#,##0.00'
SELECT {[Measures].[Internet Sales Amount], [Measures].[Prev non empty]}
ON COLUMNS,
non empty
Descendants([Date].[Calendar].[Month].&[2007]&[12], [Date].[Calendar].[Date])
ON ROWS
FROM [Adventure Works]
WHERE [Customer].[Customer].&[12650]
您必须替换日期层次结构的名称,以及在度量值的递归定义中从
Internet Sales Amount
到Quota
的度量值名称Prev non empty
经过长时间的搜索、点击和试用等,我想我为自己发明了一个解决方案
以下是我的计算成员的脚本
(
[Quota],
Tail
(
Nonempty
( LastPeriods(15, [Date].[Calendar Date].PrevMember)
,[Quota]
)
).Item(0)
)
(
[Quota],
Tail
(
Nonempty
( LastPeriods(15, [Date].[Calendar Date].PrevMember)
,[Quota]
)
).Item(0)
)
解释
(
[Quota],
Tail
(
Nonempty
( LastPeriods(15, [Date].[Calendar Date].PrevMember)
,[Quota]
)
).Item(0)
)
(
[Quota],
Tail
(
Nonempty
( LastPeriods(15, [Date].[Calendar Date].PrevMember)
,[Quota]
)
).Item(0)
)
谢谢FrankPI。我会让你知道它是如何进行的。嗨,Frank。我还有一个问题。我有一个从1985年到2015年的日期维度。这太多的日期了。我只有五个日期的度量值。所以这个查询花了大约3分钟来产生结果。我们能做些什么让递归函数只遍历到非空的dat吗,而不是遍历所有日期。谢谢!@MerinNakarmi一个解决方案是将此计算移动到多维数据集处理,这样当您访问度量值时,度量值将立即可用:而不是仅加载五个日期的
配额,您可以使其适用于所有日期,例如,通过从中读取t的视图包含此度量值的事实表。我试图使用您的想法在多维数据集中创建一个计算成员,但不幸的是,它不起作用。可能我写错了。我会再试一次。谢谢FrankPI。@MerinNakarmi将计算移到多维数据集中的一个计算成员将不会有多大帮助,因为计算脚本中定义的内容在查询时重新评估。我的建议是将流程移动到数据加载时间,这在AnalysisServices术语中称为“处理”。