1

使用 iccube 报告 V6,我正在寻找一种方法从过滤器小部件的层次结构(视觉上)中删除某些级别。

这适用于“标准”小部件 在此处输入图像描述

但是当使用过滤器小部件时,我只能将 1 级设置为成员。 在此处输入图像描述

4

1 回答 1

1

好的,我找到了解决方案。Tree 过滤器的问题在于它使用 parentUnique 名称来构建树。但这是我们可以欺骗的东西。

对于具有多个级别的时间层次结构,让我们构建一个带有年份和月份(没有季度)的树。为此,我们可以使用这个 MDX

WITH
FUNCTION __currMember() AS [Date].[Date].hierarchy.currentmember
FUNCTION __defMember() AS {[Date].[Date].allmembers}(0).hierarchy.currentmember
FUNCTION __descendant(_c) AS Tail( Filter( Axis(1) as t, isAncestor(t.currentmember, _c )),1 )(0)
FUNCTION __unName(_c) AS IIF( _c is NULL, NULL, _c.uniqueName)
MEMBER ic3Name AS __currMember().name
MEMBER ic3UName AS __currMember().uniquename
MEMBER ic3PName AS   __unName( __descendant(__currMember() ))
MEMBER ic3Measure AS 0
MEMBER ic3IsSelected AS false
MEMBER ic3FilterName as [Measures].[ic3Name]
MEMBER ic3Key as __currMember().key
SELECT
{[Measures].[ic3Name],[Measures].[ic3UName],[Measures].[ic3PName],[Measures].[ic3Measure],[Measures].[ic3IsSelected],[Measures].[ic3FilterName],[Measures].[ic3Key]} ON 0,
__defMember() + Hierarchize([Date].[Date].[Year] + [Date].[Date].[Month]) ON 1
FROM [Cube]

起作用的是descendant()函数。如果它不适合您的需要或者检查级别太慢,您可以更改该功能。请注意,算法在轴上是 O(N*N),它不是很好。但我认为它应该是通用的。

有了一点想象力和 MDX,您就可以随心所欲地构建我们使用测量值的树(ON 0 轴)。

在此处输入图像描述

于 2018-03-23T14:30:17.083 回答