Reporting services 按维度筛选度量值会导致与计算成员中的IgnoreUnrelatedDimensions=True类似的行为
我试图使用SSAS定义SSRS中的计算成员,SSAS是对维度值进行过滤的度量值的总和。这可以很好地工作,除非我在浏览器中按过滤后的标注查看计算成员。与我期望的Reporting services 按维度筛选度量值会导致与计算成员中的IgnoreUnrelatedDimensions=True类似的行为,reporting-services,ssrs-2008,ssas,mdx,ssas-2008,Reporting Services,Ssrs 2008,Ssas,Mdx,Ssas 2008,我试图使用SSAS定义SSRS中的计算成员,SSAS是对维度值进行过滤的度量值的总和。这可以很好地工作,除非我在浏览器中按过滤后的标注查看计算成员。与我期望的null值不同,总计在行上重复,类似于在度量值组上将IgnoreUnrelatedDimensions设置为True时发生的情况 我怎样才能解决这个问题 SSRS中“计算”选项卡上定义的计算成员示例: AGGREGATE({[Cow].[Hoof Location].[Front]}, [Measures].[Count]) 当对照除[C
null
值不同,总计在行上重复,类似于在度量值组上将IgnoreUnrelatedDimensions
设置为True
时发生的情况
我怎样才能解决这个问题
SSRS中“计算”选项卡上定义的计算成员示例:
AGGREGATE({[Cow].[Hoof Location].[Front]}, [Measures].[Count])
当对照除[Cow].[Hoof Location]
以外的任何对象查看时,此选项都可以正常工作。但按此维度查看时,计数会跨行重复。您可以尝试
IIf([Cow].[Hoof Location].CurrentMember IS [Cow].[Hoof Location].[All],
AGGREGATE({[Cow].[Hoof Location].[Front]}, [Measures].[Count]),
NULL
)
可能您必须使
All
成员的名称与多维数据集中的名称相适应。下面是一个MDX计算的度量,它使用了您想要的技巧:
我使用了我的基础,因此请用您自己的集合替换[创建日期].[创建日期].[年].&[2014]
,并用维度级别替换[创建日期].[创建日期].[月]
。这是一个标准的“年-月-日”维度
CREATE MEMBER CURRENTCUBE.[Measures].[TestAgg]
AS
IIF(
Intersect(
[Create Date].[Create Date].CurrentMember
,Exists(
Descendants(
[Create Date].[Create Date].[Year].&[2014]
,[Create Date].[Create Date].[Month]
,SELF_BEFORE_AFTER
)
)
).Count > 0
,[Measures].[Count]
,IIF(
[Create Date].[Create Date].CurrentMember is [Create Date].[Create Date].[All]
,AGGREGATE(
{[Create Date].[Create Date].[Year].&[2014]}
,[Measures].[Count])
,null
)
),
VISIBLE = 1;
以下是一些解释:
子体
来组织必要的成员集Intersect
用于了解维度的当前成员是否处于此筛选条件下IIF
用于显示其他年份的空白IIF
用于总计SUM
。但是我想对于这个成员和孩子来说,就像你之前说的那样,它看起来像IgnoreUnrelatedDimensions=True
还有一个提示:如果在另一个级别上有筛选,您可以使用子体级别和标志参数(之后,之前,自身和之后等)
本文有助于理解此技术:
希望这将有助于解决问题
更新
对于最低级别,最好像这样使用上升点:
CREATE MEMBER CURRENTCUBE.[Measures].[TestAgg2]
AS
IIF(
Intersect(
[Create Date].[Create Date].CurrentMember,
Exists(
Ascendants([Create Date].[Create Date].[Day].&[20140214])
)
).Count > 0,
(
[Create Date].[Create Date].[Day].&[20140214],
[Measures].[Count]
),
IIF(
[Create Date].[Create Date].CurrentMember is [Create Date].[Create Date].[All],
AGGREGATE(
{[Create Date].[Create Date].[Day].&[20140214]},
[Measures].[Count]
),
null
)
),
VISIBLE = 1;
CREATE MEMBER CURRENTCUBE.[Measures].[TestAgg2]
AS
IIF(
Intersect(
[Create Date].[Create Date].CurrentMember,
Exists(
Ascendants([Create Date].[Create Date].[Day].&[20140214])
)
).Count > 0,
(
[Create Date].[Create Date].[Day].&[20140214],
[Measures].[Count]
),
IIF(
[Create Date].[Create Date].CurrentMember is [Create Date].[Create Date].[All],
AGGREGATE(
{[Create Date].[Create Date].[Day].&[20140214]},
[Measures].[Count]
),
null
)
),
VISIBLE = 1;