FOCUS数据管理:数据字典与多维模型
这是我从工厂出来的第五个年头,也是我第一次主动写年终总结;
回想这一年来一点成就都没有,想想都有点后怕;而且每天还是干着同样的事情,容易被新手代替,由于我比较厌烦每天重复的干同样的活,所以我开始思考是否有系统能帮我干活或者帮我处理掉大部分工作来提高工作效率和解决问题的速度。我的工作是每天处理不同的数据问题,这些数据几乎是整个企业的数据整合,所以得建立数据仓库来管理企业数据支持企业各层次的业务需求。
建数据仓库大部分是体力活,看在体力活的面子上我萌发出一个想法,把体力活让系统来完成。这个想法就是《FOCUS数据管理》的第一个版本《BI项目管理》,它能帮我管理数据库、SSIS(ETL)、SSAS。经过不知道多少个凌晨终于有了《BI项目管理》,通过在公司项目上一段时间的使用,觉得《BI项目管理》的功能不过完善;决定推倒重新开发《FOCUS数据管理》。
FOCUS数据管理
《FOCUS数据管理》最初的设想是分为四个模块:(一)系统配置管理,(二)内部数据采集,(三)内部数据管理,(四)外部数据管理。我想大部分人看到这些名称就知道这些模块的功能作用;
系统配置管理:用于管理系统参数、业务SQL语句配置、权限控制。
内部数据采集:用于帮助解决企业没有主数据系统或者管理企业基础字典规范。
内部数据管理:用于管理数据仓库元数据、数据处理过程监控、多维分析模型分解、随时提取数据等。
外部数据管理:开放接口用于企业需要的外部数据提取并整合为企业内部的数据仓库。
截止到19年1月中旬已经完成系统配置管理和内部数据管理模块。这里我介绍一下内部数据管理模块如何提高我的工作效率;
首先登录《FOCUS数据管理》
数据库表结构
数据字典管理:
数据字典可以说是数据仓库的命门,数据仓库可以被删除但是数据字典不能没有,很可惜的是95%以上的BI项目都没有数据字典,即使有也只是占时的可能你们是用excel或word一个一个的记录,更改变化记录多了慢慢的就不会在去记录。在数据仓库建立的过程中它是从各个业务系统中提取几百上千个字段及几十张表组合而成,这些字段不是固定的随着业务的需要会对数据仓库进行修改;人的天性是懒惰的我也不例外,随着数据仓库的壮大,各种事情越来越多,就不会去记录这些字段的中文描述或含义。
不管你的数据仓库分为几层,那么我们必须层层管理,即使你的数据仓库有业务层我们也的对业务层数据库进行数据字典管理。我现在已经成为了一种习惯只要是要我去接手的数据库我第一件事就是对它逆向工程。《FOCUS数据管理》中的数据字典管理很简单,只要连接你的数据库服务器就行了,可以对服务器上的任何数据库、任何表进行数据字典管理,如果没有表说明、列说明就直接在数据字典管理中进行增、删、改就行了,而且这个是随时可以打开查询的。
数据空间管理
数据空间相当于你的房间,当你房间里面的东西越来越多的时候是不是会考虑多租一间,同时也会产生很多垃圾把房间搞的很脏这时你就会清理,这就是数据空间管理的作用。当数据行和表空间达到一定的量级数据库的性能会越来越慢,这时就应该考虑分区或者分表;索引空间也是一样,当表在不断的增加数据时二叉树算法会产生很多索引碎片拉低查询速度,这时就应该重建索引。
数据字段空值率
不管是业务库还是数据仓库只要数据字段出现空值就应该警惕,可能业务库会容许大量字段有空值,这就直接导致了数据仓库没几个分析维度属性可以使用。数据仓库中的字段空值一定要小心、要小心、要小心,重要的事情说三遍。空值的后果就是直接导致数据不准确,如果运营部门、管理层、决策层没有看出来数据是错的,拿着从数据仓库中提取的数据做了一些决策,这样后果会很严重。如果能提前知道字段空值把它处理掉或者能说出为什么是空值,后面就不会跟业务部门各种扯皮。数据仓库中有几百上千个字段怎样才能知道哪些字段有空值?《FOCUS数据管理》提供了一键出结果,直接告诉你哪个表哪个字段总行数空值行数占比而且数据库任你选。
数据表关系
我发现很多人都不愿意给表做外键,以前我也不太喜欢做外键,因为外键让人非常痛苦,后来我明白不做外键让人更痛苦,这个只能自己体会。
SSIS监控
请阅读:
SSAS管理
SSAS确实为很多企业提供了很好的决策服务,但是创建一个企业成熟的多维分析服务项目不是一时半会就能搞定,也不是半年一年就能成功;它需要至少三到五年才能与企业各个部门融合,让企业文化认可,需要成熟的商业分析师和技术专家配合才能做得好BI项目;成功的BI项目非常少。一般情况下BI人员流动性很大,挖墙脚的到处都是;项目人员流失不能及时招人顶替,源源不断的业务需求只好堆积在那里,招到人后只给一两天的时间熟悉项目看下文档就要上手干,那文档就是个四不像,一百多张表、一千多个计算量值、几百个指标,招到人后也容易把人给逼走。有很多人觉得是PM不合格,不是你学了PMP就能管理好项目带得好团队。培养一位合格的BI人才不容易,培养一位合格的BI项目经理更不容易,在培养很难流失容易的环境下让新来的随时拿到项目最新的文档、随时查看之前项目人员完成的工作包。唯一的办法就是对 数据仓库、SSIS、SSAS逆向工程而且是随时逆向工程。
维度数据
SSAS逆向工程能拿到CUBE的每一个维度及维度属性的值。这些维度数据有什么作用?基础数据也就是主数据。
事实数据
SSAS逆向工程能拿到CUBE的每一个量值组的值,而且这个量值组对应的维度键同时带出来,这些数据就是业务部门、管理层需要的、代表业务场景的指标数据,虽然大类没有出现在这里但是经过简单的处理就很方便拿到。
模型管理
我在《总线矩阵》中写过:总线矩阵也是BI核心之一,基本上只要详细了解企业业务战略线就能得出总线矩阵,它对应着企业每一个业务单元,提取业务单元中的一致性维度和事实量值组 组合成企业总线矩阵也就是多维分析模型;总线矩阵也是BI项目实施交付的必要成果之一,它与数据仓库的概念模型非常吻合。
下图是通过人工处理得到的,现在《FOCUS数据管理》中可以自由选择项目和模型就能得到矩阵图,虽然还有一点点技术问题没有解决。解读一下下图:量值组就是指标类别、维度就是指标的分析角度,下面的维度属性就是分析角度中的因子;意思就是说你想看某个指标只要找到对应的维度红点下面对应的维度属性,也就是说同指标找不同的维度组合、不同的指标找同维度组合。在项目初期可能做了维度和量值组个十个左右很容易掌握,随着越来越多的业务部门和需求加入到BI项目中,项目不断扩大,需求越来越广,越来越难以驾驭,也许你最多做过不超过30个维度和量值组的项目,你是无法想象80多个量值组、50多个维度、600多个指标这样的项目,之前的人走了新来的不敢动。
计算量值
量值是对应真实业务场景的指标,得到每一个指标不是单纯的汇总,它必定是多个分支组合而成或者再计算如:最后一个非空值、非重复计数、半累加等。我以前给一个有600多个指标的项目修改一个量值组,我花费了两天还没有搞定,修改过程中不是在找关联的量值就是在找关联量值的路上,内部错综复杂 还涉及到 数据仓库和ETL,也许是我从其他行业项目调过去对业务不了解,其实关键原因是项目文档四不象有跟没有一样。
数据自由查询
拿起保温杯泡一杯枸杞菊花茶后继续。SSAS通过各种比或率监控到业务出现问题,这时业务会找你拿明细数据,SSAS的优点是展现业务指标让你发现问题,而不能很好的同时向下钻取查看明细数据。平时业务部门或领导们想要一些临时数据,你很负责任的拿着小本本记录他们的需求,思考需求取数的逻辑,写完十几个表的关联几十行SQL,跑完数据给他们,他们说取的数据不是他们想要的那种或者需求有变或者不用这些数据了,此时你大脑中的几十行SQL突然变成几十只草泥马 闪闪而过。发现问题的指标明细数据 和 业务需求的临时数据 都能用业务语言描述的很清楚,那么是否有一种用业务语言查询数据的方法就是让数据需求人员自己用业务语言拿数据,把业务说完立马出来他想要的数据。
配置查询源
要以业务语言去查询数据库那必须要准备好业务模块对应的表。《FOCUS数据管理》中用配置查询源来管理和配置数据源方案,这里你可以选择与业务模块有关的任何数据库任何表来作为数据源。做好数据源方案后就可以自由查询。
自由查询
自由查询很简单,只要在配置查询源选好表,查询源就会在右下角下拉框出现,这里你可以自由选择查询源,选择玩查询源后最上方就会出现查询源中的所有表字段元数据,你可以任意选择你业务需要的字段,然后点击刷新按钮下方就会出现数据,刷新完按钮后你就可以开始选择你需要的业务数据的条件例如:你需要租一间位置在天河区租金1000到2000元而且是简单装修的房子;选择完条件后点击刷新按钮,你想要的数据就出来了就这么简单。如果你想把这个方案保存下来方便下次查询那就点击保存按钮 输入你的方案名称就会在方案区域出现你保存的方案, 你可以随时重新查看数据。
总结
任何项目开发比较简单,但是后期维护和修改就很难,因为开发和维护及修改并不是同一个人或着是同一个团队。《FOCUS数据管理》对BI项目提供了后期维护和修改的项目文档,就是对项目实时逆向工程随时获取项目各种信息。做项目就是在源源不断的获取原来的信息为现在的业务需求实现做准备,所以管理好 业务层、标准层、仓库层数据结构信息,监控好ETL,随时查看SSAS组成成分以及问题指标明细数据和临时需求数据 让需求人员随时自己用业务语言可以查,就能减少你工作中百分之六七十的工作,这样你基本上可以同时搞的两个项目,这并不能满足我的想法,我的想法是SSAS能不能不要人工去做有没有只要配置就能出来SSAS,ETL能不能不要人工去做有没有只要业务人员自己像自由查询一样选择字段描述条件就能打包成SSIS每天自动跑数,数据仓库能不能不要人工去做有没有只要业务人员自己像自由查询一样取各个业务系统选择要提取的字段选择好后自动生成数据仓库;说完我的想法感觉自己都要失业了。
商业智能教程课件下载
关注微信公众号:FocusBI,下载教程PDF,已关注回复课件获取下载地址。
历史文章
FocusBI: 使用Python爬虫为BI准备数据源(原创)
FocusBI关注者
FocusBI:SSAS体系结构(原创)
FocusBI:租房分析&星型模型
FocusBI:地产分析&雪花模型
FocusBI:MDX检索多维模型
FocusBI:租房分析可视化(网址体验)
FocusBI: 《DW/BI项目管理》之数据库表结构 (原创)
FOCUS数据管理:数据字典与多维模型的更多相关文章
- FocusBI:MDX检索多维模型
微信公众号: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关注可了解更多的商业智能.数据仓库.数据库开发.爬虫知识及沪深股市数据推送.问题或建议,请关注公众号发送消息留言;如果你觉得FocusBI对你有帮助,欢迎转发朋友圈或在文章末 ...
- Revit如何模型导入到InfraWorks中
Infraworks也就是以前的Autodesk Infrastructure Modeler(AIM)作为一款优秀的概念设计软件,能接收来自各种来源的数据,这篇介绍如何把revit中的建筑模型导入到 ...
- ASP.NET MVC5学习笔记之Action参数模型绑定之模型元数据和元数据提供
一. 元数据描述类型ModelMetadata 模型元数据是对Model的描述信息,在ASP.NET MVC框架中有非常重要的作用,在模型绑定,模型验证,模型呈现等许多地方都有它的身影.描述Model ...
- osg项目经验1<MFC+OSG中模型点选效果>
点选主要是重载osg的GUIEventHandler, class CPickHandler : public osgGA::GUIEventHandler{ //自定义回调函数名:CPickHand ...
- 基于HTML5 Canvas 点击添加 2D 3D 机柜模型
今天又返回好好地消化了一下我们的数据容器 DataModel,这里给新手做一个典型的数据模型事件处理的例子作为参考.这个例子看起来很简单,实际上结合了数据模型中非常重要的三个事件处理的部分:属性变化事 ...
随机推荐
- Linux socat轻松实现TCP/UDP端口转发
1.TCP端口转发 socat -d TCP4-LISTEN:,reuseaddr,fork TCP4: 2.UDP端口转发 socat -T UDP4-LISTEN:,reuseaddr,fork ...
- Bootstrap变形记
bootstrap审美疲劳了,想个招换换样子,THINKING... 变形 >>> 哈,不用改已有代码,添加我的Harley.js即可,有空在玩... 真实好久不玩博客园了,200字 ...
- python 单线程实现并发
单线程下支持并发(服务端): from gevent import spawn,monkey;monkey.patch_all() from socket import * def server(ip ...
- 深入了解java虚拟机(JVM) 第十章 字节码指令
一.字节码指令的含义 Java字节码指令由一个字节长度的,代表某种特定操作含义的数字(操作码)以及其后的零至多个代表此操作所需参数(操作数).此外字节码指令是面向操作数栈的,这里操作数栈在功能上对应实 ...
- 【OCP|052】OCP最新题库解析系列-2
2.Which two are true about Optimizer Statistics? ❑ A) They do not persist across Instance restarts. ...
- “全栈2019”Java第一百零三章:匿名内部类详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- java中继承的关系
当有父子关系的两个类(继承关系),当子类实例化对象的时候 会默认调用父类的无参构造方法,如果有 super()的话,调用的是父类有参的构造方法! 也就是说 父类必须有 有参构造 没有的话super ...
- MysqliDb 库的一些使用简单技巧(php)
一.分页功能 假设接口要接受输入:page, page_limit,key,value,table 来查询 table 中 key like value 的元组中以 page_limit 为 page ...
- Servlet(汇聚页)
Servlet(汇聚页) --------------------------------------------------------------------------------------- ...
- kinect 2 for xbox畸变矫正
kinect 2 for xbox畸变矫正 畸变校正的详细方法在iai_kinect2/kinect2_calibration的readme文件中. 由于通过kinect2获得的图像数据有不同的模式( ...