iccube:如何删除过滤器小部件中的某些级别)层次结构?

iccube : How to remove certainn level(s) from hierarchy in a filter widget?

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

这正在处理 "standards" 小部件

但是在使用过滤器小部件时,我只能将 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 轴)。