SSAS的MDX中的计算成员和命名集
计算成员和命名集,相当于sql中的变量和with List as(select ...)语句。CTE都是在一个查询里面动态生成对应的对象,供下面的语句使用。
计算成员:
查看cube中已存在的计算成员,以及allmember,或者AddCalculatedMembers
语法:
计算成员。 With member measures.XXXXX as 计算公式, format_string='fixed(保留两位小数) percent(百分比)等',solve_order=默认0(计算列运行的顺序,有时候计算列有相互影响)
计算成员注意事项:
1.计算成员不能成为另一个计算成员的子成员
2.如果要增加最终表格的列,那么应该把计算成员设置在measures集上
3.如果要增加最终表格的行,类似于给表格最下面加一个总计之类的。应该把计算成员建立在要显示的维度层次下。
示例:
with member
measures.BikePlusOne as [Measures].[Reseller Sales Amount] + 1 member[Product].[Category].ClothingAndBikes as [Product].[Category].&[4] + [Product].[Category].&[1] select {[Measures].[Reseller Sales Amount],measures.BikePlusOne} on 0,{[Product].[Category].allmembers} on 1from [BF_Cube1]
效果如下
命名集:
with membermeasures.BikePlusOne as [Measures].[Reseller Sales Amount] + 1
member[Product].[Category].ClothingAndBikes as [Product].[Category].&[4] + [Product].[Category].&[1]
set categories as {[Product].[Category].allmembers}
select {[Measures].[Reseller Sales Amount],measures.BikePlusOne} on 0,categories on 1from [BF_Cube1]
效果如下
非常重要的一个函数
返回遍历过程中指定层次结构的当前成员
它的属性有很多,比如
name,成员的名称
uniqueName,返回唯一标识路径
withmember measures.test as[Product].[Category].currentmember.name
select{ measures.test} on 0,[Product].[Category].[Category].members on 1from [BF_Cube1]
效果:
IIF函数示例
withmember measures.[Parent Member Name] ASIIF( [Product].[Product Categories].CurrentMember.Properties("Level_Number",TYPED(此处是强制转换,真实代码的括号不要)) = 0, '根节点',[Product].[Product Categories].CurrentMember.Parent.Name)
member measures.lvNum as [Product].[Product Categories].CurrentMember.Properties("Level_Number")
select { (measures.[Parent Member Name]), measures.lvNum} on 0,{ [Product].[Product Categories].AllMembers} on 1from [BF_MDX]
效果如下:
练习1:显示销售额占父类销售额的百分比
示例:
withmember measures.[Parent Member Name] ASIIF( [Product].[Product Categories].CurrentMember.Properties("Level_Number",TYPED) = 0, '根节点',[Product].[Product Categories].CurrentMember.Parent.Name)
member measures.lvNum as [Product].[Product Categories].CurrentMember.Properties("Level_Number")
member measures.[Percent of Amount] as (measures.[Reseller Sales Amount])/([Product].[Product Categories].CurrentMember.Parent,measures.[Reseller Sales Amount]),format_string='percent'
select { (measures.[Parent Member Name]), measures.lvNum, measures.[Reseller Sales Amount], measures.[Percent of Amount]} on 0,{ [Product].[Product Categories].AllMembers} on 1from [BF_MDX]
效果:
练习2:
完善练习1的度量值的iif函数(去掉null和inf)
withmember measures.[Parent Member Name] ASIIF( [Product].[Product Categories].CurrentMember.Properties("Level_Number",TYPED) = 0, '根节点',[Product].[Product Categories].CurrentMember.Parent.Name)
member measures.lvNum as [Product].[Product Categories].CurrentMember.Properties("Level_Number")
member measures.[Percent of Amount] as IIF([Product].[Product Categories].CurrentMember.properties('Level_Number',typed) = 0or measures.[Reseller Sales Amount] = null,0, (measures.[Reseller Sales Amount])/([Product].[Product Categories].CurrentMember.Parent,measures.[Reseller Sales Amount])),format_string='percent'
select { (measures.[Parent Member Name]), measures.lvNum, measures.[Reseller Sales Amount], measures.[Percent of Amount]} on 0,{ [Product].[Product Categories].AllMembers} on 1from [BF_MDX]
效果:
练习3,行小计有两种方法计算:
1)
select { [Measures].[Internet Sales Amount]} on 0,non empty{ ([Product].[Category].children) * ([Product].[Subcategory].children + [Product].[Subcategory].[All Products])}on 1from [BF_MDX]
效果如下:
2)使用计算成员,作用域增加新的总计
withmember [Product].[Subcategory].[All Products].total as( [Product].[Subcategory].currentmember.parent)
select { [Measures].[Internet Sales Amount]} on 0,non empty{ ([Product].[Category].children) * ([Product].[Subcategory].children + [Product].[Subcategory].[All Products].total)}on 1from [BF_MDX]
效果和第一个一样
一些更为强大的扩展
示例,取前面4个字符串:
with member measures.testName asvbamdx!left([Product].[Category].currentmember.name,'4')
select {} on 0,[Product].[Category].children on 1from [BF_MDX]
效果如下:
SSAS的MDX中的计算成员和命名集相关推荐
- MDX 中的重要概念 (MDX)
SQL Server 2005 联机丛书(2008 年 11 月) MDX 中的重要概念 (MDX) 更新日期: 2006 年 7 月 17 日 您可以使用多维表达式 (MDX) 查询多维数据或创建用 ...
- php mdx,多维建模和MDX中出现的一些概念
Microsoft SQL Server Analysis Services 多维数据集是基于度量值.维度和维度属性来组织的.下表说明了使用 MDX 表达式语言所需了解的维度建模术语和概念. &quo ...
- SSAS的MDX语句整理
1.基本语法: (1)基本语法: select 在列上展示的成员集合 on 列,在行上面展示的成员集 on 行 from cube where 切片 第一个on 列的列可以用0来替代,on 行的行可以 ...
- 引用父类成员的关键字是java_Java 中对父类成员访问用的关键字是 ,而引用当前对象的关键字是 。_学小易找答案...
[单选题]以下哪项不是java的基本数据类型 [判断题]在共晶相图中,成分在共晶点的共晶合金,冷却后得到的室温组织中一定全部是共晶成分. [填空题]从液体中结晶出粗大的先共晶渗碳体称为______. ...
- java定义一个盒子类box_定义一个Box(盒子)类,在该类定义中包括数据成员: length(长),width(宽)和height(...
定义一个Box(盒子)类,在该类定义中包括数据成员: length(长),width(宽)和height( 定义一个Box(盒子)类,在该类定义中包括数据成员: length(长),width(宽)和 ...
- 目标检测中如何定义正负样本,和正负样本在学习过程中loss计算起的作用
如何定义正负样本,和正负样本在学习过程中loss计算起的作用 正负样本定义 分类和回归head如何学习和利用划分后的正负样本(loss如何计算) 正负样本在分类中loss计算的处理 正样本在bbox ...
- 结构体中最后一个成员为[0]或[1]长度数组(柔性数组成员)的用法
结构体中最后一个成员为[0]长度数组的用法:这是个广泛使用的常见技巧,常用来构成缓冲区.比起指针,用空数组有这样的优势:(1).不需要初始化,数组名直接就是所在的偏移:(2).不占任何空间,指针需要占 ...
- Python中的特殊成员和魔法方法
1.简介 Python中有大量类似__doc__这种以双下划线开头和结尾的特殊成员及"魔法方法",它们有着非常重要的地位和作用,也是Python语言独具特色的语法之一! __ini ...
- 智源青年科学家梁云:异构系统中张量计算的自动调度和优化框架
与6位图灵奖得主和100多位专家 共同探讨人工智能的下一个十年 长按图片,内行盛会,首次免费注册 北京智源大会倒计时:9天 计算机体系结构领域国际顶级会议每次往往仅录用几十篇论文,录用率在20%左右 ...
最新文章
- 学习使用Bing Maps Silverlight Control(五):离线使用和自定义地图模式
- 我使用的博客和通讯工具汇总
- Android NDK开发之旅1 NDK介绍
- 实习小白::(转) Cocos2d-x 3.0开发(五)关联程序逻辑与cocoStudio导出文件
- 某人一定不会的——重口味线段树
- javascript 盒子模型
- 风雨20年:我所积累的20条编程经验
- 拼不过 GO?阿里如何重塑云上的 Java
- Java NIO学习篇之缓冲区CharSet详解
- Facebook 开源首个全卷积语音识别工具包 wav2letter++
- 使用批处理文件(batch file)替换字符串
- 关于Microsoft Edge主页被360劫持
- PageRank算法简单实现
- 酷派5890刷recovery详细教程
- 基于matlab的圆柱齿轮减速器优化设计,基于MATLAB算法的圆柱齿轮减速器优化设计...
- 从数据预处理开始,用最简单的3D的CNN实现五折交叉验证的MRI图像二分类(pytorch)
- 最新的 iOS 申请证书与发布流程 2016
- Waiter,Servant, Attendant的区别
- 2020年TI杯大学生电子设计大赛 无线运动传感器节点 备赛、参赛实录(历时一个月)
- 如何在Server 2003查看 是 32位还是64位
热门文章
- python分词训练_python练习17:用jieba分词做关键词提取,用matplotlib做可视化
- 计算机专业知识面狭窄,计算机专业知识
- 把python安装到u盘无法使用_U盘无法使用不能用怎么办解决教程
- Java、Javascript、Javaweb三者的区别
- Mysql学习总结(54)——MySQL 集群常用的几种高可用架构方案
- Linux学习总结(29)——CentOS 6和CentOS 7区别总结
- stm32可以移植linux系统吗,如何在STM32上移植Linux?超详细的实操经验分享
- power接口 sata_sata硬盘不接power接口读的出来吗
- HA功能与DRS配合使用
- Python爬虫之:下载软件包