[译]SSRS 编写带参数的MDX报表
编写MDX报表长久以来对于报表人员来说都比较痛苦. 当然如果你用查询设计器(Query Designer) 直接拖拉数据集那就很方便,但是你们有没有想过查询设计器是怎么创建MDX的.或者创建的参数是如何工作的? 我听到很多用Analysis Services 作为数据源的(包括我)报表人员说写参数太难了,所以他们用查询设计器做报表. 我想关键的问题是查询设计器做的MDX看起来要比实际上更复杂.如果你知道一些MDX基础,你应该能直接写MDX而不是用查询分析器 ,你就是喜欢用查询分析器也没关系.本文的目的是指导你写基础的MDX语句,并且参数化 .
我们会用到两个 MDX 函数 :
返回字符表达式指定的集合(MSDN的定义),其实就是把你写转为MDX集合.
返回字符表达式指定的成员(MSDN的定义).就是把你写的转为MDX成员.
我们先装下 Adventure Works cube,如果你没有的话可以从www.codeplex.com下载.假设你知道一些 Reporting Services一些基础支持 and not define each component of the tool that is not new for this example.
建立一个新的Report Server 项目和报表,并且使用Adventure Works cube作为数据源. 然后建立名为CategorySales 的数据集.在查询设计器里面点击设计模式(Design Mode)按钮,然后开始写查询. 下面是个无参数的查询例子.
Select [Measures].[Internet Sales Amount] on Columns From [Adventure Works]
这个查询返回总销量,不过就报表本身而言它没任何意义.让我们添加销量对应的产品目录.
Select [Measures].[Internet Sales Amount] on Columns, [Product].[Category].Children on Rows From [Adventure Works]
这对我们假想的用户需求来说还不够少,除了看所有产品的销量以外,他们还想弄个参数,使他们可以从下拉框中选择想要看的类型 .为此,我们点击查询参数按钮来创建一个参数.
- 变量名 ProductCategory
- 指定维度和层次 Product 维度 和 Category 层次
- 选择多值复选框,这样可以接受多个值.
- 最后选择一个默认值. 例子中我们选择 Bikes
点击确认以后,你需要修改MDX 来使用你创建的参数, 修改如下:
Select [Measures].[Internet Sales Amount] on Columns, StrToSet(@ProductCategory, Constrained) on Rows From [Adventure Works]
我们用 StrToSet 来转换用户选择的变量值,是的MDX可以理解它们. Constrained 标记表示要确保有一个成员在集合中.
点击OK,然后一路创建下去.. 你会注意到,ProductCategory的下拉框已经自动创建.
现在让我们进一步完善这个例子. 我们再添加两个函数,来创建一个日期范围.再次单击查询参数按钮,添加参数StartDate 和 EndDate ,然后引用 Date 维度和 Date属性. 默认值随便填.
在 MDX 里面添加where子句来限制时间范围. 我们用 StrToMember 来转换.
Select [Measures].[Internet Sales Amount] on Columns, StrToSet(@ProductCategory, Constrained) on Rows From [Adventure Works] Where StrToMember(@StartDate, Constrained) :StrToMember(@EndDate, Constrained)
下面是预览结果
原文连接 http://www.bidn.com/blogs/DevinKnight/ssis/6252/writing-parametrized-mdx-for-reporting-services
[译]SSRS 编写带参数的MDX报表的更多相关文章
- SSRS 系列 - 使用带参数的 MDX 查询实现一个分组聚合功能的报表
SSRS 系列 - 使用带参数的 MDX 查询实现一个分组聚合功能的报表 SSRS 系列 - 使用带参数的 MDX 查询实现一个分组聚合功能的报表 2013-10-09 23:09 by BI Wor ...
- 微软BI 之SSRS 系列 - 使用带参数的 MDX 查询实现一个分组聚合功能的报表
基于数据仓库上的 SSRS 报表展示,一般可以直接通过 SQL 查询,存储过程,视图或者表等多种方式将数据加载并呈现在报表中.但是如果是基于 Cube 多维数据集的数据查询,就不能再使用 SQL 的语 ...
- 编写带参数decorator
无参的@log装饰器: def log(f): def fn(x): print 'call ' + f.__name__ + '()...' return f(x) return fn 发现对于被装 ...
- python中编写带参数decorator
考察上一节的 @log 装饰器: def log(f): def fn(x): print 'call ' + f.__name__ + '()...' return f(x) return fn 发 ...
- 微软BI 之SSRS 系列 - 基于时间段参数的 MDX 查询以及时间日历 Date Picker 的时间类型参数化
今天在天善问答里看到一个问题,如果我没有理解错的话,它应该是指比如在一个报表中选取一个时间段,然后求出这个时间段的某个 Measure 的 SUM 和.并且同时求出这两个时间点对应的上一年的时间点之间 ...
- ReportView动态加载带参数的RDCL文件及子报表
本文来自Torres.Wu发表在博客园的博客,转载请标明出处. 同上一篇差不多,这次咱们加载带有子报表的RDCl文件.首先还是创建一个form程序,在form2窗体中添加一个ReporView控件,l ...
- 25.按要求编写一个Java应用程序: (1)编写一个矩形类Rect,包含: 两个属性:矩形的宽width;矩形的高height。 两个构造方法: 1.一个带有两个参数的构造方法,用于将width和height属性初化; 2.一个不带参数的构造方法,将矩形初始化为宽和高都为10。 两个方法: 求矩形面积的方法area() 求矩形周长的方法perimeter() (2)通过继承Rect类编写一个具有
package zhongqiuzuoye; //自己写的方法 public class Rect { public double width; public double height; Rect( ...
- jQuery 使用 jQuery UI 部件工厂编写带状态的插件(翻译)
首先,我们要创建一个progress bar,它只允许我们简单的设置进度值.正如我们接下来将要看到的,我们需要通过调用 jQuery.widget 及其两个参数来实现这一操作,这两个参数分别是:将要创 ...
- 【SSRS】入门篇(四) -- 向报表添加数据
原文:[SSRS]入门篇(四) -- 向报表添加数据 定义好数据集后 [SSRS]入门篇(三) -- 为报表定义数据集 ,就可以开始设计报表了,将要显示在报表的字段.文本框.图像和其他项从工具箱拖放到 ...
随机推荐
- 循环-21. 求交错序列前N项和
/* * Main.c * C21-循环-21. 求交错序列前N项和 * Created on: 2014年8月18日 * Author: Boomkeeper ***********测试通过**** ...
- phome_enewsclass 数据表字段解释(栏目主表)
字段名 类型 解释 附加说明 classid smallint(6) 栏目ID bclassid smallint(6) 父栏目ID classname varchar(50) 栏目名称 ...
- String、StringBuffer和StringBuild的区别
public class Test1 { public static void stringReplace (String text) { text = text.replace('j','i') ; ...
- 使用python抓取知乎日报的API数据
使用 urllib2 抓取数据时,最简单的方法是: import urllib2, json def getStartImage(): stream = urllib2.urlopen('http:/ ...
- css布局: 两栏 自适应高度
只使用css实现 有两种方式, 一种是通过相对定位,再绝对定位获取父亲元素的高度, 一种是通过margin-bottom:-999em;padding-bottom: 999em; 父亲元素超出隐藏 ...
- php mysql实现栏目分类递归
header("content-type:text/html;charset=utf-8"); $dbhost = "localhost"; // 数据库主 ...
- [LeetCode]题解(python):087-Scramble String
题目来源: https://leetcode.com/problems/scramble-string/ 题意分析: 给定一个字符串,字符串展成一个二叉树,如果二叉树某个或多个左右子树颠倒得到的新字符 ...
- Android UiAutomator 自动化测试环境搭建---新手1
1.首先需要准备的工具有 1.java jdk 2. android开发工具 adt 3.ant 安装包(如果下载adt里面有) 2.首先安装java环境,jdk这个百度就可以了. 3.android ...
- IOS 特定于设备的开发:Info.plist属性列表的设置
应用程序的Info.plist属性列表使你能够在向iTunes提交应用程序时指定应用程序的要求.这些限制允许告诉iTunes应用程序需要哪些设备特性. 每个IOS单元都会提供一个独特的特性集.一些设备 ...
- JVM报错提示
持久代被占满 异常:java.lang.OutOfMemoryError: PermGen space 说明: Perm空间被占满.无法为新的class分配存储空间而引发的异常.这个异常以前是没有的, ...