计算成员和命名集,相当于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 set xxxx as 成员集
示例:
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]

效果如下

非常重要的一个函数

CurrentMember

返回遍历过程中指定层次结构的当前成员

它的属性有很多,比如

name,成员的名称

uniqueName,返回唯一标识路径

  
withmember measures.test as[Product].[Category].currentmember.name

select{    measures.test} on 0,[Product].[Category].[Category].members on 1from [BF_Cube1]

效果:

IIF函数示例

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中的计算成员和命名集相关推荐

  1. MDX 中的重要概念 (MDX)

    SQL Server 2005 联机丛书(2008 年 11 月) MDX 中的重要概念 (MDX) 更新日期: 2006 年 7 月 17 日 您可以使用多维表达式 (MDX) 查询多维数据或创建用 ...

  2. php mdx,多维建模和MDX中出现的一些概念

    Microsoft SQL Server Analysis Services 多维数据集是基于度量值.维度和维度属性来组织的.下表说明了使用 MDX 表达式语言所需了解的维度建模术语和概念. &quo ...

  3. SSAS的MDX语句整理

    1.基本语法: (1)基本语法: select 在列上展示的成员集合 on 列,在行上面展示的成员集 on 行 from cube where 切片 第一个on 列的列可以用0来替代,on 行的行可以 ...

  4. 引用父类成员的关键字是java_Java 中对父类成员访问用的关键字是 ,而引用当前对象的关键字是 。_学小易找答案...

    [单选题]以下哪项不是java的基本数据类型 [判断题]在共晶相图中,成分在共晶点的共晶合金,冷却后得到的室温组织中一定全部是共晶成分. [填空题]从液体中结晶出粗大的先共晶渗碳体称为______. ...

  5. java定义一个盒子类box_定义一个Box(盒子)类,在该类定义中包括数据成员: length(长),width(宽)和height(...

    定义一个Box(盒子)类,在该类定义中包括数据成员: length(长),width(宽)和height( 定义一个Box(盒子)类,在该类定义中包括数据成员: length(长),width(宽)和 ...

  6. 目标检测中如何定义正负样本,和正负样本在学习过程中loss计算起的作用

    如何定义正负样本,和正负样本在学习过程中loss计算起的作用 正负样本定义 分类和回归head如何学习和利用划分后的正负样本(loss如何计算) 正负样本在分类中loss计算的处理 正样本在bbox ...

  7. 结构体中最后一个成员为[0]或[1]长度数组(柔性数组成员)的用法

    结构体中最后一个成员为[0]长度数组的用法:这是个广泛使用的常见技巧,常用来构成缓冲区.比起指针,用空数组有这样的优势:(1).不需要初始化,数组名直接就是所在的偏移:(2).不占任何空间,指针需要占 ...

  8. Python中的特殊成员和魔法方法

    1.简介 Python中有大量类似__doc__这种以双下划线开头和结尾的特殊成员及"魔法方法",它们有着非常重要的地位和作用,也是Python语言独具特色的语法之一! __ini ...

  9. 智源青年科学家梁云:异构系统中张量计算的自动调度和优化框架

    与6位图灵奖得主和100多位专家 共同探讨人工智能的下一个十年 长按图片,内行盛会,首次免费注册 北京智源大会倒计时:9天  计算机体系结构领域国际顶级会议每次往往仅录用几十篇论文,录用率在20%左右 ...

最新文章

  1. 学习使用Bing Maps Silverlight Control(五):离线使用和自定义地图模式
  2. 我使用的博客和通讯工具汇总
  3. Android NDK开发之旅1 NDK介绍
  4. 实习小白::(转) Cocos2d-x 3.0开发(五)关联程序逻辑与cocoStudio导出文件
  5. 某人一定不会的——重口味线段树
  6. javascript 盒子模型
  7. 风雨20年:我所积累的20条编程经验
  8. 拼不过 GO?阿里如何重塑云上的 Java
  9. Java NIO学习篇之缓冲区CharSet详解
  10. Facebook 开源首个全卷积语音识别工具包 wav2letter++
  11. 使用批处理文件(batch file)替换字符串
  12. 关于Microsoft Edge主页被360劫持
  13. PageRank算法简单实现
  14. 酷派5890刷recovery详细教程
  15. 基于matlab的圆柱齿轮减速器优化设计,基于MATLAB算法的圆柱齿轮减速器优化设计...
  16. 从数据预处理开始,用最简单的3D的CNN实现五折交叉验证的MRI图像二分类(pytorch)
  17. 最新的 iOS 申请证书与发布流程 2016
  18. Waiter,Servant, Attendant的区别
  19. 2020年TI杯大学生电子设计大赛 无线运动传感器节点 备赛、参赛实录(历时一个月)
  20. 如何在Server 2003查看 是 32位还是64位

热门文章

  1. python分词训练_python练习17:用jieba分词做关键词提取,用matplotlib做可视化
  2. 计算机专业知识面狭窄,计算机专业知识
  3. 把python安装到u盘无法使用_U盘无法使用不能用怎么办解决教程
  4. Java、Javascript、Javaweb三者的区别
  5. Mysql学习总结(54)——MySQL 集群常用的几种高可用架构方案
  6. Linux学习总结(29)——CentOS 6和CentOS 7区别总结
  7. stm32可以移植linux系统吗,如何在STM32上移植Linux?超详细的实操经验分享
  8. power接口 sata_sata硬盘不接power接口读的出来吗
  9. HA功能与DRS配合使用
  10. Python爬虫之:下载软件包