【问题标题】:Return all levels below a specific member返回特定成员以下的所有级别
【发布时间】:2014-01-06 11:19:47
【问题描述】:

在下面我希望返回成员Engineering下面的所有树。
我猜我在滥用IS
我应该使用membervalue吗?
我认为使用特定成员会更有效?

WITH 
    MEMBER [Measures].[LevelName] AS
        [Employee].[Employee Department].Level.Name
    MEMBER [Measures].[LevelNumber] AS
        [Employee].[Employee Department].Level.Ordinal
SELECT
    {
    FILTER(
        [Employee].[Employee Department].AllMembers,
        [Employee].[Employee Department].[Department] IS 
            [Employee].[Employee Department].[Department].&[Engineering]
        )
    } ON 1,
    {
    [Measures].[LevelName],
    [Measures].[LevelNumber] 
    } ON 0
FROM [Adventure Works] 

这是错误信息:

执行查询...查询 (10, 3) Is 函数需要一个级别 2 参数的表达式。使用了成员表达式。执行 完成

【问题讨论】:

    标签: sql-server-2012 ssas mdx


    【解决方案1】:

    您不需要使用 FILTER 函数来获取属于特定成员的所有子成员。只需这样做:

    SELECT
    {
        [Employee].[Employee Department].[Department].&[Engineering].CHILDREN
    } ON 1,
    ...
    

    如果您想要特定成员下方的整个树,请使用 DESCENDANTS 函数:

    SELECT
    {
        DESCENDANTS([Employee].[Employee Department].[Department].&[Engineering],
            [Employee].[Employee Department].[Department], AFTER)
    } ON 1,
    ...
    

    【讨论】:

    • +1 感谢DESCENDENTSSELF_AND_AFTER 给了我想要的东西。 FILTER / IN 有可能吗?
    • 我不确定。不过我对此表示怀疑,因为 FILTER 函数的逻辑表达式参数是在不同的上下文中计算的。
    • MDX 中关于 in context / not in context 的想法对我来说还是有点陌生​​......你有什么好的参考资料可以帮助吗?跨度>
    • 看看:technet.microsoft.com/en-us/library/ff487140.aspx - 不幸的是,我不知道任何专门针对 MDX 的好资源,但是关于分析服务的 Wrox 系列书籍通常包含一些好东西。
    猜你喜欢
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多