【问题标题】:iccube : How to remove certainn level(s) from hierarchy in a filter widget?iccube:如何删除过滤器小部件中的某些层次结构?
【发布时间】:2018-03-22 16:00:25
【问题描述】:

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

这适用于“标准”小部件

但是当使用过滤器小部件时,我只能将 1 级设置为成员。

【问题讨论】:

    标签: iccube iccube-reporting


    【解决方案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 轴)。

    【讨论】:

    • 好吧,如果我们谈论最后一个级别,同样的事情?就像只使​​用年和季度,在这个例子中删除月和日?顺便说一句,当你说目前......你可能会在未来的版本中实现吗?今天,我们必须为每个用例创建一个特定的层次结构。
    • 我们会将其添加到待办事项列表 (trello)
    • 是相同的还是不同的层次结构?
    猜你喜欢
    • 1970-01-01
    • 2015-09-02
    • 1970-01-01
    • 1970-01-01
    • 2014-11-23
    • 1970-01-01
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多