我正在使用Performance Point Dashboard Designer 2013和SharePoint Server 2013来构建仪表板。我正在使用SSAS2012 for Cube。
我有一个类似于下图所示的场景。为了找到趋势,我需要找到Previous Non-Empty值。
衡量:[配额]
尺寸:[日期]。[日历日期]。[日期]
脚本([Measures].[Quota], [Date].[Calendar Date].PrevMember)
为您提供上一个日期。可以说,对于日期为27日至1月13日,其配额值为87,它将返回26-Jan-13,其具有空值。我想让它返回具有一些配额价值的21-Jan-13。并且对于1月21日至1月13日,我想要返回1月15日至13日。
我想知道这是否可能。
谢谢,
Merin
答案 0 :(得分:4)
经过长时间的搜索和点击&试验等等,我想我为自己发明了自己的解决方案。
以下是我的计算会员的脚本。
(
[Quota],
Tail
(
Nonempty
( LastPeriods(15, [Date].[Calendar Date].PrevMember)
,[Quota]
)
).Item(0)
)
解释
让我们找到15个以前的兄弟姐妹(空白和非空),不包括当前成员。
(LastPeriods(15,[Date]。[Calendar Date] .PrevMember)
由于它会同时产生空成员和非空成员,因此我们可以按照度量[Quota]过滤掉空成员。如果我们在这里没有指定度量,它将使用默认度量,无论它是什么,我们可能无法获得所需的结果。
非空(LastPeriods(15,[Date]。[Calendar Date] .PrevMember),[Quota])
我们可能在输出中有几个成员。我们将选择最后一个。
尾 ( 非空 (LastPeriods(15,[Date]。[Calendar Date] .PrevMember) ,[配额] ) )
到目前为止,上面的脚本给出了以前的非空成员。现在我们想要为我们的度量[配额]实现这个成员。
因此我们准备好以下脚本来创建一个计算成员。
(
[Quota],
Tail
(
Nonempty
( LastPeriods(15, [Date].[Calendar Date].PrevMember)
,[Quota]
)
).Item(0)
)
答案 1 :(得分:1)
您可以使用递归来定义它。
以下查询为Adventure Works多维数据集提供类似的内容:
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
。