第一章

看了本书的第一章,总体一个印象,废话真多。话不多说;整理书中知识点,实践出真理!

知识点:MDX语法;简单的函数介绍;

首先语法网上流传的很多,读者应该具备cube(多维数据集)的知识基础,我这里就做简单说下:MDX是支持表达式语言查询语言的;维度!多维数据集中的维度具有一个或者多个层级的,并且每个层次级别包含一个或多个级别。(例如:Date维度的Calendar层次结构包含下面的级别-Calendar Year、Calendar Semester、Calendar Month)。成员:每个层次结构都包含一个或多个,这些项就是成员;每个成员都对应基础维度表中的一个或多个引用值实例。怎么引用这些项呢?有不同的引用方法,原则是一致的:确保引用的成员唯一!下面会有实例说明。单元:我们知道多维数据集是一个大的立方体,其中的组成这些立方体的组成单位也是立方体,这些相连的立方体的组合就是单元。元组:唯一标识多维数据集的一个单元或一部分的MDX表达式就是元组。元组是表达式在多维体中表现为切片。元组记着使用圆括号括起来!:一组元组就是集,用{}括起来。注意:是一组并非是多个元组的随意组合—> 这组元组是使用类型和数量上完全相同的一组维度定义的。{ }表示空集。集的别名:

MDX的语法结构就不说了;直接学习MDX的用法;下面为实例:

前提: 建立好一个Cube;这个Drug-Cube是分析医疗机构门诊和住院的基本运营情况的测试数据。

简单的分为时间、科室、医生以及药品维度,量值为:门诊、住院的收入明细表。见下图:从MDX语法为例说起:

1、最简单的MDX查询: select from [Drug]  结果集是什么呢?这个结果集是cube中每个维度的默认值的该度量值的对应的所有单元的聚合值!

2、完整的一个MDX查询

3、“:”和“,”的区别

4、Member和Children的用法:

    5、Descendants的用法:

6、Order和CrossJoin的用法:

7、查询成员属性:  DIMENSION PROPERTIES这个没理解,暂时先记下书中的话:固有的和数据库定义的成员属性都可以被查到,Analysis Services定义了名称为KYE、NAME、和ID的固有属性;并且每个维度的每个级别都有这些属性。成员的key属性包含维度表中描述的成员键的值。成员name的属性包含了维度表中描述的成员名称的值。id属性包含了成员在数据库维度范围内排序的内部编号。这些似乎与客户端的编程有关,与此相似的还有,查询单元的属性:cell   PROPERTIES如果一个查询没有执行单元属性,默认返回3个属性:一个表示单元在结果集中索引的序数,适合任何类型的原始的单元值,以及单元的原本的格式值。如果查询指定了特殊的单元属性,那么就只有那些属性值被返回到客户端。

8、补充:HAVING字句为轴上的元组在实现 NON EMPTY 逻辑之后增加筛选提供一种方便的途径。它并没有提供什么特殊功能,而仅仅是对某些逻辑的陈述更为简单。

第二章 

  知识点: 计算成员和命名集

     计算成员

计算成员的语法格式:MEMBER 成员标识符 AS ‘成员计算公式’;简单的计算成员就略过,接下来我们说说,当计算成员的公式出现叠加时怎么处理,这时候需要我们设置公式的优先级,以实例说明:示例中我们有两个计算成员,一个计算人均值([Measures].[avg Amount]),另一个计算时间差([Dim Date].[年].[2014-2015]),然后我们来查询一下的结果集:我们注意到最后一个值(avg 和2014-2014的交叉值)=137446.10/252927925865(即:Total Amount / Pati ID)是按照计算成员人均值([Measures].[avg Amount])来计算的。这无可厚非,但是,你有没有想到,这个值为什么不按照时间差([Dim Date].[年].[2014-2015])来计算呢?这个值处于两个计算成员的交集中,凭什么要按照人均值([Measures].[avg Amount])来计算呢?是的,因为我们设置了SOLVE_ORDER = 1级别,有了优先级,处在交集中的单元就按照优先级高的来计算。你也可以尝试将优先级更换,但是,这就不符合我们的预期了,所以设置优先级,要根据实际运算需求来设置!

另外,一个知识点,就是 CREATE MEMBER CURRENTCUBE.[Measures].[计算成员]的用法,因为我们常常在

这里新增计算成员,并且查看代码的时候是下面的格式,使用的就是CREATE来创建的计算成员,这种计算成员跟我们使用WITH的方法有什么不一样吗?当然不一样了,利用CREATE MEMBER命令定义的计算成员必须用他们所属的多维数据集和维度命名,CREATE MEMBER不是带有SELECT的查询的一部分,他本身就是一个语句。

CALCULATE;
CREATE MEMBER CURRENTCUBE.[Measures].[计算成员]
AS ([Measures].[Amount],[Dim PC Account].[Cname].&[2期投入]),
VISIBLE = ;

计算成员的使用就要使用计算函数集:

命名集

     命名集仅仅是一个特定的进行了命名的集。他们可以任意类型的成员或元组,只要该集有效。MDX中任何可以使用集的地方,都可以引用一个命名集。

命名集的作用域和计算成员一样。如果在一个查询的WITH部分创建一个命名集,那么在查询外它不可见;如果使用Create Set 创建一个命名集,那么它可以被多个查询使用并可以使用Drop Set命令释放。命名集的创建语句: 1: SET Set-Identifier AS  'set-formula' ; 2: CREATE DYNAMIC SET CURRENTCUBE.[命名集] AS '命名集';命名集可以在WITH部分的任何地方定义。如果一个命名集引用了一个计算成员或者另一个命名集,那么它需要出现在它引用的对象之后。反过来任意引用命名集的计算成员需要出现在集的定义之后。

第三章 

  知识点: mdx通用的计算和选择

  博客园中已经有了一片很好的,可以参考:

http://www.cnblogs.com/microsheen/archive/2006/11/06/552237.html

http://blog.csdn.net/hero_hegang/article/details/9072889

第六章

 知识点: mdx中的排序和分类

    用到的函数有:Order()、Hiierarchize()、Top-Count()、BottomCount()、TopSum()、BottomSum()、TopPercent()、BottomPercent()、YTD()、CoalesceEmpty()、Rank()、ParallelPeriod()、Generate()、Ancestor()、Descendants()、.Properties()和DrillDownLevelTop()。这些函数不仅支持一维的成员集进行计算,也可以对元组集进行运算。

1.Top-Count()示例:  用法:TopCount ( set [ , numric_expression])

2.Rank()示例:

MDX基础的更多相关文章

  1. BI开发之——Mdx基础语法(2)(转至指尖流淌)

    结合webcast中老师的讲解,现在把基础语法应用通过几个案例应用如下: 一.维度的概念 上图中一个维度(Dimension):Region 改为度下有四个级别(Levels):country.pro ...

  2. SSAS——MDX基础

    一.基本概念 MDX:一种查询语言,从多维的数据集单元格中检索数据.支持两种不同的模式: 1.表达式语言:定义和操纵Analysis Services对象和数据以计算值 2.查询语言:从Analysi ...

  3. BI开发之——Mdx基础语法(转至指尖流淌)

    Mdx为MultiDimensional  Expressions的缩写,多维表达式,是标准的OLAP查询语言.在多数OLAPServer都提供Mdx支持,如Microsoft Sql Server ...

  4. [译]MDX 介绍

    关于MDX MDX (Multi Dimensional eXpression language) 是非常强大的工具,可以将你的多维数据库/cube 发挥到极致. 本文会覆盖MDX基础,并且希望能使你 ...

  5. [译]SSRS 编写带参数的MDX报表

    编写MDX报表长久以来对于报表人员来说都比较痛苦. 当然如果你用查询设计器(Query Designer) 直接拖拉数据集那就很方便,但是你们有没有想过查询设计器是怎么创建MDX的.或者创建的参数是如 ...

  6. Java基础语法

    java基础学习总结——基础语法1 一.标识符

  7. 快速入门系列--TSQL-01基础概念

    作为一名程序员,对于SQL的使用算是基础中的基础,虽然也写了很多年的SQL,但常常还是记不清一些常见的命令,故而通过一篇博文巩固相关的记忆,并把T-SQL本身的一些新特性再进行一次学习. 首先回顾基础 ...

  8. MDX函数(官方顺序,带示例)

    MDX函数(官方顺序) 1.  AddCalculatedMembers (MDX) 返回通过将计算成员添加到指定集而生成的集. 语法: AddCalculatedMembers(Set_Expres ...

  9. java基础学习总结——基础语法1

    一.标识符

随机推荐

  1. 【4】项目结构+基本的Tornado服务

    项目地址: Blog 简单的tornado服务分支: simple 项目结构 创建对应的文件夹并测试一个最简单的功能 main.py #!/usr/bin/env python # coding:ut ...

  2. 使用ARM模板部署自动扩展的Linux VMSS(2)

    12.准备完了模板文件,我们使用Powershell来创建VMSS for Linux的自动扩展集合,首先登陆到Azure中国的ARM账号: Login-AzureRmAccount -Environ ...

  3. php文件处理

    1. 将数据写入文件步骤 1. 打开这个文件,如果不存在,则新建文件 2. 将数据写入文件 3. 关闭文件 2. 从文件中读取数据步骤 1. 打开一个文件,如果不能打开,如文件不存在,应安全退出 2. ...

  4. Oracle的几种索引

    Oracle 提供了多种不同类型的索引以供使用.简单地说, Oracle 中包括如下索引: 1. B* 树索引 这些是我所说的 “ 传统 “ 索引.到目前为止,这是 Oracle 和大多数其他数据库中 ...

  5. table列等宽

    固定table列等宽 固定table列等宽 style: {table-layout : fixed} html: style="table-layout:fixed" js: o ...

  6. asm.uew

    /L16"ASM" Nocase Line Comment = ; File Extensions = ASM INC DEF /Colors = ,,,,, /Colors Ba ...

  7. ubuntu下配置安装conky

    由于默认的conky配置不好看,于是下载了一些配置,网上一抓一大把. 首先  sudo apt-get install conky-all 然后下载想要的配置文件,下载下来的是压缩文件,解压就行了,解 ...

  8. jQuery UI 之 EasyUI 快速入门

    jQuery EasyUI 基础 转载自(http://www.shouce.ren/api/view/a/3350) jQuery EasyUI 是一个基于 jQuery 的框架,集成了各种用户界面 ...

  9. 设置MySQL数据表主键

    设置MySQL数据表主键: 使用“primary key”关键字创建主键数据列.被设置为主键列不允许出现重复的值,很多情况下与“auto_increment”递增数字相结合.如下SQL语句所示: My ...

  10. HDU 5791 Two

    题意:给两个序列,求公共序列的个数 分析:很自然想到最长公共子序列的转移的转移形式,用dp[i][j]表示第一个串前i个 和第二个串前j个匹配的答案数量,a[i]==b[i],dp[i][j]=dp[ ...