MDX Cookbook 06 - GENERATE 循环遍历
2013-12-02 23:45
302 查看
有时候需要从集合中取出特定的成员但是又不能执行遍历操作,这个时候就可以使用 GENERATE 函数来解决这个问题。
根据地区查询每年的销售额 -
现在需要查询每年销售额最高的那个月在各个地区的销售情况。
在这个查询中 Generate() 函数就相当于一个 For-each 循环,根据指定的集合去遍历集合中每一个成员,然后根据条件中判断情况抽取符合条件的成员形成一个新的集合。 由于使用了 TOPCOUNT 函数,因此根据参数 1 每一次循环只会返回一个成员,这些成员就最终形成了一个新的集合。
在 MDX 中实际上没有 FOR 循环的概念。在其它的编程语言中,循环遍历可能要基于数字之类的,但是在 MDX中,这种类似遍历的操作是基于集合的。
其它 BI 博客系列看参看 - BI 系列随笔列表 (SSIS, SSRS, SSAS, MDX, SQL Server)
根据地区查询每年的销售额 -
SELECT NON EMPTY { [Date].[Calendar].[Calendar Year].MEMBERS * [Measures].[Sales Amount]} ON 0, NON EMPTY { [Sales Territory].[Sales Territory Country].MEMBERS } ON 1 FROM [Adventure Works]
现在需要查询每年销售额最高的那个月在各个地区的销售情况。
WITH SET [Best month per year] AS Generate( [Date].[Calendar].[Calendar Year].MEMBERS, TopCount( Descendants( [Date].[Calendar].CurrentMember, [Date].[Calendar].[Month], SELF ), 1, [Measures].[Sales Amount] ) ) SELECT NON EMPTY {[Best month per year] * [Measures].[Sales Amount] } ON 0, NON EMPTY {[Sales Territory].[Sales Territory Country].MEMBERS} ON 1 FROM [Adventure Works]
在这个查询中 Generate() 函数就相当于一个 For-each 循环,根据指定的集合去遍历集合中每一个成员,然后根据条件中判断情况抽取符合条件的成员形成一个新的集合。 由于使用了 TOPCOUNT 函数,因此根据参数 1 每一次循环只会返回一个成员,这些成员就最终形成了一个新的集合。
在 MDX 中实际上没有 FOR 循环的概念。在其它的编程语言中,循环遍历可能要基于数字之类的,但是在 MDX中,这种类似遍历的操作是基于集合的。
其它 BI 博客系列看参看 - BI 系列随笔列表 (SSIS, SSRS, SSAS, MDX, SQL Server)
相关文章推荐
- 从移动2G、3G、4G和iphone5s说起的手机那点事
- socket5代理 客户端代码
- 设计一个计算器类Calculator,它只有一个计数的成员count。该计算器的有效范围说0~65535,实现计算器的前自增、后自增、前自减、后自减、两个计算器相加减等运算
- PHP函数microtime()
- JSP/Servlet,Tomcat,Jstl各版本对比以及如何查看版本
- http://blog.csdn.net/x86android/article/details/16980967
- Android手机rom分区以及sd卡总结
- SQL SERVER排序函数
- macbook air 安装win7系统时,到最后一步要进入win7,需要给PC设置一个用户名,键盘没反应
- 使用MVCJqGrid
- java反射(3):反射机制
- [WPF] Caliburn Micro学习三 Binding
- MyEclipse 关闭鼠标悬停提示
- Jeecg DataGridTag 的子标签们 二
- 微软Bing发布2013年度搜索排行榜
- Jeecg DataGridTag 的子标签们
- 为android-support-v4.jar打包源码
- MDX Cookbook 05 - 条件过滤 FILTER-COUNT 与 SUM-IIF 实现
- MyEclipse 选中右侧编辑的文件时自动展开左侧目录树
- kkkk