代码改变世界

微软BI 之SSRS 系列 - 如何在 MDX 查询中获取有效的 MEMBER 成员属性作为参数传递

2014-01-09 23:19  BIWORK  阅读(2486)  评论(2编辑  收藏  举报

这篇小文章的来源是 天善问答,比如在报表中要根据点击某一个成员名称然后作为参数传递给自身报表或者下一张报表,这个在普通的 SQL 查询中没有任何问题。但是在 MDX 中查询是有区别的,比如在 MDX 中显示在报表上的结果是 Category 下的一个分类 Bikes,但是当点击了 Bikes之后把 Bikes 作为参数传递下一个 MDX 查询的报表中,很显然我们要的是参数 [Product].[Product Categories].[Category].&[2] 去作为过滤条件。如果实现知道点击成员的层次结构路径,那么我们可以事先将整个成员的字符串准备好,然后只更改值的部分。但是如果成员实现不知道是哪一个层次上的话,就不好处理了。

这样要使用到成员的一些相关属性 -

SELECT {} on 0, 
       [Product].[Product Categories].[Category].MEMBERS 
        DIMENSION PROPERTIES 
        MEMBER_CAPTION, 
        UNIQUE_NAME, 
        LEVEL_UNIQUE_NAME, 
        MEMBER_KEY 
        ON 1 
FROM [Step-by-Step]

双击查询出来的成员值之后可以看到相关的属性,这样的查询结果如果在 SSRS 编辑器中,这些属性会跟随成员本身出现的。

SSRS 中的编辑器 MDX 查询会出现全部的属性,这些属性也将作为 Dataset 的字段出现。

属性以字段的形式出现。

先设置好四个字符串参数变量,然后拖放到相关区域,当点击 Category 部分时候跳转到自身报表,然后显示相关参数的值。

点击 Category 编辑它的 Action 动作,跳转到自身,然后把其它的几个属性作为参数传递。

点击 Clothing 如果在普通 SQL 查询的时候就是传递 Clothing。但是在 MDX 中查询,可以传递很多种参数格式,但可能常用的是Unique Name,比如写到 WHERE 过滤中。

点击 Accessories 时 -

关于 MEMBER PROPERTIES 还有其它的很多属性,可以参看 MSDN


更多 BI 文章请参看 BI 系列随笔列表 (SSIS, SSRS, SSAS, MDX, SQL Server)

如果觉得这篇文章看了对您有帮助,请帮助推荐,以方便他人在 BIWORK 博客推荐栏中快速看到这些文章。