Dynamics AX 2012 在BI分析中建立数据仓库的必要性
AX系统已有的BI分析架构
对于AX 的BI分析架构,相信大家都了解,可以看Reinhard之前的译文[译]Dynamics AX 2012 R2 BI系列-分析的架构 。

AX 的BI分析架构的优势
从图上我们可以看出,AX是弱化了数据仓库的概念,直接用多维数据集作为分析报表的数据源。得益于AX与SSAS的深度集成,并且提供了许多预先定义好的多维数据集,可以很快地制作一个简单的分析报表。
Dynamics 365技术架构的优势
在新出的Dynamics 365里,提出了Common Data Model的概念,在一定程度上,从应用的底层解决了多系统数据整合的问题。Reinhard在12月初的微软技术大会上了解到,Dynamics 365 Operations除了Online版本外,On Premise版也在12月初有了销售版,感兴趣的同学可以关注下。

数据仓库
既然说到了数据仓库,那么我们就来看看什么是数据仓库。
数据仓库的定义
数据仓库是一个数据库,这种数据库的设计,可以支持商业智能活动:帮助用户理解和提高组织的绩效。它的设计,是用于查询和分析,而不是事务处理,并且通常包含从交易数据中派生的历史数据,也包含其他数据源中的数据。数据仓库将分析的工作负载,从事务的工作负载中分离出来,让企业能够整合来自多个数据源的数据。
除了一个关系型数据库外,一个数据仓库环境还需要包含ETL解决方案、统计分析、报表、数据挖掘、客户端分析工具。
数据仓库需要使用从多个源收集的数据。这些源数据可能来自企业内部自己开发的系统,采购的应用程序,第三方数据提供商,和其他源。它可能涉及交易,生产,市场,人力资源等。在今天这个大数据的时代,网站上点击事件的数据可能超过数十亿条,还有自动化机器的传感器产生的大量数据流。
为什么不能将AX作为数据仓库来用?
这里,需要说说AX系统与数据仓库主要的区别:
环境上的不同
两者最大的不同,是AX系统其实是一个OLTP系统,它的设计需要遵循3NF标准。而数据仓库并不完全遵循3NF标准。
需求上的不同
工作负载
数据仓库的设计,是为了适应即席查询和数据分析。因为对工作负载无法预知,所以要对大量可能的查询和分析操作,进行性能优化。
AX系统中,执行的其实大多数都是预先定义好的操作,如更新、写入、删除等。
数据修改
数据仓库一般是通过ETL更新,最终用户不能直接更新数据仓库。
AX系统中,最终用户的修改会持久化到数据库中,AX系统总是反映每个商业交易的最新状态。
架构设计
数据仓库总是使用部分非规范化的架构,来优化查询和分析的性能。
AX系统中,总是使用完全规范的架构,来优化更新、写入、删除操作,来保证数据的一致性。
典型操作
数据仓库的典型查询,会扫描上百万的记录。
AX系统的典型操作,是对某一行记录进行操作,这只需访问少量的记录。
历史数据
数据仓库通常需要存储几个月甚至几年的数据,这些数据为历史分析和报表提供支持。
AX系统中,反应的是每个商业交易的最新状态。不过有时也会为了满足当前交易的需要,存储一些相关的历史数据。
建立数据仓库的必要性
传统BI分析
我们知道,OLAP Cube一般而言,在性能上要比RDBMS更好。
对于传统BI分析来说,是需要建立OLAP Cube的。在建立Cube前,一般也会在数据库使用星型架构建立维度化的模型,将数据清洗好,填充进来,作为Cube的数据源。这里的星型架构和OLAP cube其实都属于数据仓库的一部分。
AX的BI分析
对于AX而言,是用表或视图来创建透视,然后定义维度和测量,接着运行分析服务项目向导来生成、部署项目,最后对多维数据集进行处理。每次处理,Cube中的数据都会更新,其实是无法做历史数据分析的。
敏捷BI分析
随着软件发展的日新月异,计算机的硬件也越来越先进,仿佛OLAP Cube的优势也没那么明显了。近几年流行的敏捷BI工具,如Power BI、Tableau、Qlik等,就有意弱化了分析建模的过程。它们使用了内存数据库、列存储数据库等技术,来对数据进行缓存,加快了数据处理、渲染的速度,有时甚至可以直连生产环境且对生产环境性能的影响微乎其微。那么使用敏捷BI分析工具还需要建立数据仓库么?
Reinhard认为,如果你的分析需要整合多个系统的数据,如果你要分析历史数据,如果你的业务系统的数据库无法满足查询和分析的性能需求,那么你仍然需要建立数据仓库。先对多个系统的数据进行整合、清洗,然后将清洗过的数据导入到企业级的数据仓库中,才能用于数据分析和展示。
Dynamics AX 2012 在BI分析中建立数据仓库的必要性的更多相关文章
- [译]Dynamics AX 2012 R2 BI系列-规划分析的注意事项
https://msdn.microsoft.com/en-us/library/gg731898.aspx 在开始实施AX的分析特性前,有很多事情要考虑.本文描述了你必须考虑的事情,和在 ...
- [译]Dynamics AX 2012 R2 BI系列-分析的架构
https://msdn.microsoft.com/EN-US/library/dd309691.aspx 下图显示了包含在AX中的SSAS Cube,和用于访问他们的组件. 下面的 ...
- [译]Dynamics AX 2012 R2 BI系列-Cube概览
https://msdn.microsoft.com/EN-US/library/dd252604.aspx Cube是一个多维度的结构,它是BI应用开发的基础.本文描述了cube的组成部分, ...
- Dynamics AX 2012 R2 从代码中调用SSRS Report
平时,我们制作SSRS Report的方法主要有两种:使用Query或RDP.如果需要为报表传递参数,就要在代码中为报表参数赋值,然后在代码中调用报表.下面我总结下这两种报表在代码中传参和调用的方式: ...
- Dynamics AX 2012 性能优化之 SQL Server 复制
Dynamics AX 2012 性能优化之 SQL Server 复制 分析数据滞后 在博文 Dynamics AX 2012 在BI分析中建立数据仓库的必要性 里,Reinhard 阐述了在 AX ...
- Dynamics AX 2012 R3 Demo 安装与配置 - 配置安装环境 (Step 1)
AX 2012 R3 发布后,Reinhard一直想体验一把,可是Reinhard所在的公司暂时不会升级到R3版本.这不,Reinhard就打算在个人电脑上安装下,可是安装的过程中,遇到了很多问题,R ...
- Dynamics AX 2012 的工业物联网解决方案
Dynamics AX 2012 的工业物联网解决方案 物联网 物联网的概念在这两年非常火,包括近期很火的共享单车初创公司--摩拜单车,在产品中运用了Azure Iot物联网技术.但是,物联网并不是一 ...
- Dynamics AX 2012 R2 安装Reporting Services 扩展
今天Reinhard在VS中部署SSRS报表时,接到以下错误: 部署因错误而被取消.在报表服务器上,验证:-SQL Server Reporting Services 服务是否正在运行. 接着,Rei ...
- Dynamics AX 2012 R2 如何处理运行时间较长的报表
当处理的数据量较多,逻辑比较复杂时,报表可能会超时.为了解决这个问题,Reinhard一直使用SrsReportDataProviderPreProcess来做预处理报表.它会在调用SSRS前,在AX ...
随机推荐
- ASM FailGroup验证
ASM-FailGroup验证 一.FailGroup有效性验证 创建DiskGroup,在Redundancy选项 High:至少3块disk,至少3个failgroup,每一个extent存在1主 ...
- Alfresco.widget.Resizer可拉动div模块
<#include "include/alfresco-template.ftl" /> <@templateHeader> <script type ...
- 雷克萨斯-RC
-型号:RC(双门) -价格:49-59W -动力:2T -变速箱:8挡手自一体 -长宽高:4.70,1.84,1.40 -油箱:66L -发动机:8AR-FTS -大灯:LED
- 神奇的 CURL 命令
CURL? 嗯,说来话长了~~~~ 这东西现在已经是苹果机上内置的命令行工具之一了,可见其魅力之一斑 1) 二话不说,先从这里开始吧! curl http: //www.yahoo.com 回车之 ...
- 数据结构与算法分析——C语言描述 第三章的单链表
数据结构与算法分析--C语言描述 第三章的单链表 很基础的东西.走一遍流程.有人说学编程最简单最笨的方法就是把书上的代码敲一遍.这个我是头文件是照抄的..c源文件自己实现. list.h typede ...
- 给Source Insight做个外挂系列之二--将本地代码注入到Source Insight进程
上一篇文章介绍了如何发现正在运行的“Source Insight”窗口,本篇将介绍“TabSiPlus”是如何进行代码注入的.Windows 9x以后的Windows操作系统都对进程空间进行了严格的保 ...
- yum安装配置
1.删除redhat原有的yum rpm -aq|grep yum|xargs rpm -e --nodeps 2.下载yum安装文件 http://mirrors.163.com/centos/6/ ...
- 获取ip ,百度地图坐标点 和 在 后台调用 url()
protected void getip() { string ips = HttpContext.Current.Request.UserHostA ...
- SqList *L 和 SqList * &L的区别/学习数据结构突然发现不太懂 小祥我查找总结了一下
小祥在学习李春葆的数据结构教程时发现一个小问题,建立顺序表和输出线性表,这两个函数的形参是不一样的. 代码在这里↓↓↓ //定义顺序表L的结构体 typedef struct { Elemtype d ...
- Qt容器类——1. QList类、QLinkedList类和QVector类
在开发一个较高性能需求的应用程序时,程序员会比较关注这些容器类的运行效率,表2.1列出了QList.QLinkedList和QVector容器的时间复杂度比较. 1.QList类 QList<T ...