FocusBI:MDX检索多维模型
微信公众号: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: 使用Python爬虫为BI准备数据源(原创)
FocusBI:SSAS体系结构(原创)
FocusBI:租房分析&星型模型
FocusBI:地产分析&雪花模型
FocusBI:MDX检索多维模型
FocusBI:租房分析可视化(网址体验)
FocusBI: 《DW/BI项目管理》之数据库表结构 (原创)
FocusBI:MDX检索多维模型的更多相关文章
- FOCUS数据管理:数据字典与多维模型
这是我从工厂出来的第五个年头,也是我第一次主动写年终总结: 回想这一年来一点成就都没有,想想都有点后怕:而且每天还是干着同样的事情,容易被新手代替,由于我比较厌烦每天重复的干同样的活,所以我开始思考是 ...
- FocusBI:租房分析&星型模型
微信公众号:FocusBI关注可了解更多的商业智能.数据仓库.数据库开发.爬虫知识及沪深股市数据推送.问题或建议,请关注公众号发送消息留言;如果你觉得FocusBI对你有帮助,欢迎转发朋友圈或在文章末 ...
- 使用 x3dom 框架及 WebGL 在浏览器上显示 3 维模型
如果需要在浏览器上显示 3D 画面的话, 现在一般会使用 WebGL, 典型的例如 three.js(http://mrdoob.github.com/three.js/), 但是 WebGL 对 ...
- Cesium官方教程7--三维模型
原文地址:https://cesiumjs.org/tutorials/3D-Models-Tutorial/ 三维模型 (3D Models) 这篇教程给大家介绍,如何在Cesium中通过Primi ...
- FocusBI:地产分析&雪花模型
微信公众号:FocusBI关注可了解更多的商业智能.数据仓库.数据库开发.爬虫知识及沪深股市数据推送.问题或建议,请关注公众号发送消息留言;如果你觉得FocusBI对你有帮助,欢迎转发朋友圈或在文章末 ...
- FocusBI: 微软商业智能教程目录介绍(原创)
关注微信公众号:FocusBI 查看更多文章:加QQ群:808774277 获取学习资料和一起探讨问题. <商业智能教程>pdf下载地址 链接:https://pan.baidu.com/ ...
- FocusBI:《DW/BI项目管理》之SSIS执行情况
微信公众号:FocusBI关注可了解更多的商业智能.数据仓库.数据库开发.爬虫知识及沪深股市数据推送.问题或建议,请关注公众号发送消息留言;如果你觉得FocusBI对你有帮助,欢迎转发朋友圈或在文章末 ...
- FocusBI:租房分析可视化(PowerBI网址体验)
微信公众号:FocusBI关注可了解更多的商业智能.数据仓库.数据库开发.爬虫知识及沪深股市数据推送.问题或建议,请关注公众号发送消息留言;如果你觉得FocusBI对你有帮助,欢迎转发朋友圈或在文章末 ...
- FocusBI: 《DW/BI项目管理》之数据库表结构 (原创)
关注微信公众号:FocusBI 查看更多文章:加QQ群:808774277 获取学习资料和一起探讨问题. <商业智能教程>pdf下载地址 链接:https://pan.baidu.com/ ...
随机推荐
- 原生 javaScript 百叶窗 效果的实现及原理介绍
百叶窗大家都见过吧!如图: 原理: 如图所示,空心格子就好比是每个li,给它设定相对定位属性,设置overflow:hidden: 黑块为li子元素,高度为li的2倍,设置absolute属性,我们正 ...
- docker 配置 overlay 存储
1.查看overlay模块是否安装 lsmod | grep over 2.将OverlayFS加到module目录下 echo "overlay" > /etc/modul ...
- jquery中的$()详解
一.jQuery的三种$() $号是jQuery“类”的一个别称,$()构造了一个jQuery对象.所以,“$()”可以叫做jQuery的构造函数. 1.$()可以是$(expresion),即css ...
- declare命令
还是围绕以下几个问题进行学习; 1.declare是什么? 2.问什么要用declare? 3.怎样使用declare? 1.declare是什么? ♦declare应用的很多,向我们各种语言都会有声 ...
- JavaScript的几种(原型)继承
定义Foo,Bar 其中,Bar继承Foo a是Bar的实例,包含有Foo和Bar的函数和属性: function Foo(name) { this.name = name; } Foo.protot ...
- CUDA安装
1.CUDA是什么? CUDA(Compute Unified Device Architecture),显卡厂商NVidia推出的运算平台. 随着显卡的发展,GPU越来越强大,而且GPU为显示图像做 ...
- linux 将进程或者线程绑定到指定的cpu上
基本概念 cpu亲和性(affinity) CPU的亲和性, 就是进程要在指定的 CPU 上尽量长时间地运行而不被迁移到其他处理器,也称为CPU关联性:再简单的点的描述就将指定的进程或线程绑定到相应的 ...
- ltp-ddt eth过程中遇到的问题
eth_iperf_tcp ETH_S_PERF_IPERF_TCP_INTPACING_8K_1448B source 'common.sh'; iface=`get_eth_iface_name. ...
- 任务调度SpringTask
一.什么是任务调度 在企业级应用中,经常会制定一些“计划任务”,即在某个时间点做某件事情,核心是以时间为关注点,即在一个特定的时间点,系统执行指定的一个操作.常见的任务调度框架有Quartz和Spri ...
- 分布问题(二元,多元变量分布,Beta,Dir)
这涉及到数学的概率问题. 二元变量分布: 伯努利分布,就是0-1分布(比如一次抛硬币,正面朝上概率) 那么一次抛硬币的概率分布如下: 假设训练数据如下: 那么根据最大似然估计(MLE),我 ...