微信公众号:FocusBI
关注可了解更多的商业智能、数据仓库、数据库开发、爬虫知识及沪深股市数据推送。问题或建议,请关注公众号发送消息留言;
如果你觉得FocusBI对你有帮助,欢迎转发朋友圈或在文章末尾点赞[1]

  《商业智能教程》pdf下载地址

  链接:https://pan.baidu.com/s/1f9VdZUXztwylkOdFLbcmWw 密码:2r4v

MDX引擎


MDX是一种结构化查询语言,它比SQL查询语言更复杂,因为MDX是面向多维数据模型进行数据检索用来支持复杂的商业环境数据验证。MDX支持两种不同的模式,一是表达式语言:定义和操作Analysis Service 对象和数据以计算值。二查询语言:从Analysis Service中检索数据。

多维数据集是用户为了进行数据分析而设计和使用的对象。在数据仓库设计阶段已经对维度和事实数据进行了分割和处理,通过SSAS引擎组装成多维型,虽然每个事实量值可以按照事先设计好的维度分析数据,这个通过SQL语句很容易实现;根据多维模型的特性它是用来支持复杂的商业环境数据验证的,所以不管业务人员还是管理人员提出的商业场景应该是很容易实现的;这里已最为常用的同比环比做一个简单案例的介绍。

同比环比


这个案例我采用地产数据给签约金额做一个签约金额同比、签约金额环比;

同比=((本期/同期)-1)* 100%;环比=((本期/上期)-1)* 100%;通过分析这个计算公式本期是已有的量值在签约量值组中存在,关键是如何拿到同期和上期;而MDX引擎提供了如何取这两个数据的方法函数,但是必须要借助日期维度,同期的思想是要取去年的今天,上期的思想是要取上个月的今天;所以上期可以通过日期维度CurrentMember.PrevMember 获得,同期可以通过日期维度ParallelPeriod 日期维度.CurrentMember 获得

实现步骤


这里使用MDX支持的模式:表达式语言来定义和操作计算量值。

第一步:打开项目把日期维度的属性改成时间类型(Type);

第二步:打开多维模型,单击计算按钮,单击新建计算成员,名称改成[测试_签约金额上期],表达式:([Measures].[签约金额],[A日期].[年-季-月-日].CurrentMember.PrevMember),显示文件夹填写测试。

第三步:单击计算按钮,单击新建计算成员,名称改成[测试_签约金额环比],表达式:format([Measures].[签约金额]/([Measures].[签约金额],[A日期].[年-季-月-日].CurrentMember.PrevMember) -1,"0.00%"),显示文件夹填写测试。

第四步:单击计算按钮,单击新建计算成员,名称改成[测试_签约金额同期],表达式:(ParallelPeriod([A日期].[年-季-月-日].[年],1,[A日期].[年-季-月-日].CurrentMember),[Measures].[签约金额]),显示文件夹填写测试。

第五步:单击计算按钮,单击新建计算成员,名称改成[测试_签约金额同比],表达式:format ([Measures].[签约金额]/(ParallelPeriod([A日期].[年-季-月-日].[年],1,[A日期].[年-季-月-日].CurrentMember),[Measures].[签约金额]) -1,"0.00%"),显示文件夹填写测试。

第六步:部署多维模型,这里就不介绍了前面的文章有介绍如何部署。

第七步:单击浏览器,从模型中拖日期维度层次结构年-月-日到选择维度区域并且选择2016年2月和2017年2月的前四天,年-季-月-日拖到量值区域;从签约量值组中拖签约金额到量值区域,测试量值组分别拖测试_签约金额上期、测试_签约金额环比、测试_签约金额同期、测试_签约金额同比,完成后点击查询。

第八步:根据同比和环比的公式我们可以看到2016年1季度二月20160201 签约金额=16128001,2016年1季度二月20160202 测试_签约金额上期=16128001,2017年1季度二月20160201 测试_签约金额同期=16128001;这两个都等于本期说明上期和同期的数据取正确了,这时我们可以把日期维度上的日去掉在验证一下数据是否正确?

MDX函数字典


MDX比SQL要难太多,它涉及到很多空间概念一时半会很多人很难理解而且学习起来比较困难因为有关MDX的官方学习资料和书籍非常少;我在对多维数据模型进行逆向工程的时候,拿到了一份非常全面的MDX语言函数表一共有404个函数的使用方法,这份表已经嵌入到《BI项目管理》系统中,这里我导入来分享给大家。关注FocusBI发送 MDX函数 获取下载链接,已经关注了的直接发送就行了。这份MDX函数表有部分是全英文的如果你有能力翻译只要翻译说明列就行,请翻译好后分享一份给我。

历史文章:

FocusBI: SQL Server内核

企业数据管理战略

FocusBI: 总线矩阵(原创)

FocusBI: 数据仓库 (原创)

FocusBI: 商业智能场景(原创)

FocusBI: SSIS体系结构(原创)

FocusBI: 使用Python爬虫为BI准备数据源(原创)

FocusBI: SSIS 开发案例(原创)

FocusBI:SSAS体系结构(原创)
FocusBI:租房分析&星型模型
FocusBI:地产分析&雪花模型
FocusBI:MDX检索多维模型
FocusBI:租房分析可视化(网址体验)

FocusBI: 《DW/BI项目管理》之数据库表结构 (原创)

FocusBI:《DW/BI项目管理》之SSIS执行情况

FocusBI:MDX检索多维模型的更多相关文章

  1. FOCUS数据管理:数据字典与多维模型

    这是我从工厂出来的第五个年头,也是我第一次主动写年终总结: 回想这一年来一点成就都没有,想想都有点后怕:而且每天还是干着同样的事情,容易被新手代替,由于我比较厌烦每天重复的干同样的活,所以我开始思考是 ...

  2. FocusBI:租房分析&星型模型

    微信公众号:FocusBI关注可了解更多的商业智能.数据仓库.数据库开发.爬虫知识及沪深股市数据推送.问题或建议,请关注公众号发送消息留言;如果你觉得FocusBI对你有帮助,欢迎转发朋友圈或在文章末 ...

  3. 使用 x3dom 框架及 WebGL 在浏览器上显示 3 维模型

    如果需要在浏览器上显示 3D 画面的话, 现在一般会使用 ​WebGL, 典型的例如 three.js(​http://mrdoob.github.com/three.js/), 但是 WebGL 对 ...

  4. Cesium官方教程7--三维模型

    原文地址:https://cesiumjs.org/tutorials/3D-Models-Tutorial/ 三维模型 (3D Models) 这篇教程给大家介绍,如何在Cesium中通过Primi ...

  5. FocusBI:地产分析&雪花模型

    微信公众号:FocusBI关注可了解更多的商业智能.数据仓库.数据库开发.爬虫知识及沪深股市数据推送.问题或建议,请关注公众号发送消息留言;如果你觉得FocusBI对你有帮助,欢迎转发朋友圈或在文章末 ...

  6. FocusBI: 微软商业智能教程目录介绍(原创)

    关注微信公众号:FocusBI 查看更多文章:加QQ群:808774277 获取学习资料和一起探讨问题. <商业智能教程>pdf下载地址 链接:https://pan.baidu.com/ ...

  7. FocusBI:《DW/BI项目管理》之SSIS执行情况

    微信公众号:FocusBI关注可了解更多的商业智能.数据仓库.数据库开发.爬虫知识及沪深股市数据推送.问题或建议,请关注公众号发送消息留言;如果你觉得FocusBI对你有帮助,欢迎转发朋友圈或在文章末 ...

  8. FocusBI:租房分析可视化(PowerBI网址体验)

    微信公众号:FocusBI关注可了解更多的商业智能.数据仓库.数据库开发.爬虫知识及沪深股市数据推送.问题或建议,请关注公众号发送消息留言;如果你觉得FocusBI对你有帮助,欢迎转发朋友圈或在文章末 ...

  9. FocusBI: 《DW/BI项目管理》之数据库表结构 (原创)

    关注微信公众号:FocusBI 查看更多文章:加QQ群:808774277 获取学习资料和一起探讨问题. <商业智能教程>pdf下载地址 链接:https://pan.baidu.com/ ...

随机推荐

  1. Postgresql fillfactor

    一个表的填充因子(fillfactor)是一个介于 10 和 100 之间的百分数.100(完全填充)是默认值.如果指定了较小的填充因子,INSERT 操作仅按照填充因子指定的百分率填充表页.每个页上 ...

  2. 使用Intellij Idea连接Team Foundation Server (TFS)实现代码版本管理

    Intellij Idea是一个Java项目开发工具,支持Windows,MAC OS和Linux的跨平台开发环境,具备良好和智能的用户界面,在欧洲市场拥有很多粉丝.https://www.jetbr ...

  3. 搭建自己的 Docker 私有仓库服务

    关于 Docker 的介绍这里就省了,Docker 在其相关领域的火爆程度不亚于今年汽车行业里的特斯拉,docCloud 甚至把公司名都改成了 Docker, Inc. 好东西总是传播很快,我们现在已 ...

  4. raiserror 的用法

    if exists(select top 1 UserName from [dbo].[LJS_Test_User] where UserName=@UserName) begin raiserror ...

  5. Spring Boot 学习系列(06)—采用log4j2记录日志

    此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 为什么选择log4j2 log4j2相比于log4j1.x和logback来说,具有更快的执行速度.同时也支 ...

  6. django系列3.1--url路由配置, 正则, 分发include, 分组命名匹配

    一.url配置 在django项目中urls.py文件中就是为这个url调用的view(视图)函数之间的映射表,来配置访问的一个url执行什么代码 默认的基本格式: from django.conf. ...

  7. C# 未安装Office环境下使用NPOI导出Excel文件

    1.NuGet直接安装NPOI程序包: 2. using NPOI.XSSF.UserModel; 3.导出Excel代码: private void TsbExport2ExcelClick(obj ...

  8. Thread.sleep(1000)

    public class Wait { public static void main(String[] args) { System.out.println(System.currentTimeMi ...

  9. mxonline实战15,用户中心:我的课程, 我的收藏,我的消息,登出和点击数以及收藏数

     对应github地址:第15天     一.  我的课程   1. 继承usercenter-base页面 2. 编写url, view

  10. c++之随堂笔记

    1.指针篇 给指针赋值时,只能等号右边只能使用&符号将一个对象的地址赋值给指针,不能直接把一个具体的数或者字符串直接赋值给指针. 举例: int* ptr_num = 100;  //这种写法 ...