教你轻松掌握数据仓库的规划和构建策略
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了教你轻松掌握数据仓库的规划和构建策略相关的知识,希望对你有一定的参考价值。
教你轻松掌握数据仓库的规划和构建策略数据仓库作为决策支持系统(DSS)的基础,具有面向主题的、集成的、不可更新的、随时间不断变化的特
参考技术A 教你轻松掌握数据仓库的规划和构建策略数据仓库作为决策支持系统(DSS)的基础,具有面向主题的、集成的、不可更新的、随时间不断变化的特性。这些特点说明了数据仓库从数据组织到数据处理,都与原来的数据库有很大的区别,这也就需要在数据仓库系统设计时寻求一个适合于数据仓库设计的方法。在一般的系统开发规划中,首先需要确定系统的功能,这些系统的功能一般是通过对用户的需求分析得到的。从数据仓库的应用角度来看,DSS分析员一般是企业中的中高层管理人员,他们对决策支持的需求不能预先做出规范的说明,只能给设计人员一个抽象地描述。
这就需要设计人员在与用户不断的交流沟通中,将系统的需求逐步明确,并加以完善。因此数据仓库的开发规划过程实际上是一个用户和设计人员对其不断了解、熟悉和完善的过程。 数据仓库的开发应用规划是开发数据仓库的首要任务。只有制定了正确的数据仓库规划,才能使组织主要力量有序地实现数据仓库的开发应用。在数据仓库规划中一般需要经历这样几个过程:选择实现策略、确定数据仓库的开发目标和实现范围、选择数据仓库体系结构、建立商业和项目规划预算。 当数据仓库规划完成后,需要编制相应的数据仓库规划说明书,说明数据仓库与企业战略的关系,以及与企业急需处理的、范围相对有限的开发机会,重点支持的职能部门和今后数据仓库开发工作的建议,实际使用方案和开发预算,作为数据仓库实际开发的依据。
1、选择数据仓库实现策略
数据仓库的开发策略主要有自顶向下、自底向上和这两种策略的联合使用。自顶向下策略在实际应用中比较困难,因为数据仓库的功能是一种决策支持功能。这种功能在企业战略的应用范围中常常是很难确定的,因为数据仓库的应用机会往往超出企业当前的实际业务范围,而且在开发前就确定目标,会在实现预定目标后就不再追求新的应用,是数据仓库丧失更有战略意义的应用。由于该策略在开发前就可以给出数据仓库的实现范围,能够清楚地向决策者和企业描述系统的收益情况和实现目标,因此是一种有效的数据仓库开发策略。该方法使用时需要开发人员具有丰富的自顶向下开发系统的经验,企业决策层和管理人员完全知道数据仓库的预定目标并且了解数据仓库能够在那些决策中发挥作用。
自底向上策略一般从某个数据仓库原型开始,选择一些特定的为企业管理人员所熟知的管理问题作为数据仓库开发的对象,在此基础上进行数据仓库的开发。因此,该策略常常用于一个数据集市、一个经理系统或一个部门的数据仓库开发。该策略的优点在于企业能够以较小的投入,获得较高的数据仓库应用收益。在开发过程中,人员投入较少,也容易获得成效。当然,如果某个项目的开发失败可能造成企业整个数据仓库系统开发的延迟。该策略一般用于企业洗碗对数据仓库的技术进行评价,以确定该技术的应用方式、地点和时间,或希望了解实现和运行数据仓库所需要的各种费用,或在数据仓库的应用目标并不是很明确时,数据仓库对决策过程影响不是很明确时使用。
在自顶向下的开发策略中可以采用结构化或面向对象的方法,按照数据仓库的规划、需求确定、系统分析、系统设计、系统集成、系统测试和系统试运行的阶段完成数据仓库的开发。而在自底向上的开发中,则可以采用螺旋式的原型开发方法,使用户可以根据新的需求对试运行的系统进行修改。螺旋式的原型开发方法要求在较短的时间内快速的生成可以不断增加功能的数据仓库系统,这种开发方法主要适合于这样一些场合:在企业的市场动向和需求无法预测,市场的时机是实现产品的重要组成部分,不断地改进对与企业的市场调节是必需的;持久的竞争优势来自连续不断地改进,系统地改进是基于用户在使用中的不断发现。 自顶向下和自底向上策略的联合使用具有两种策略的优点,既能快速的完成数据仓库的开发与应用,还可建立具有长远价值的数据仓库方案。但在实践中往往难以操作,通常需要能够建立、应用和维护企业模型、数据模型和技术结构的、具有丰富经验的开发人员,能够熟练的从具体(如业务系统中的元数据)转移到抽象(只基于业务性质而不是基于实现系统技术的逻辑模型);企业需要拥有由最终用户和信息系统人员组成的有经验的开发小组,能够清楚地指出数据仓库在企业战略决策支持中的应用。
2、确定数据仓库的开发目标和实现范围
为确定数据仓库的开发目标和实现范围,首先需要对企业管理者等数据仓库用户解释数据仓库在企业管理中的应用和发展趋势,说明企业组织和使用数据来支持跨功能系统的重要性,对企业经营战略的支持,以确定开发目标。在该阶段确认与使用数据仓库有关的业务要求,这些要求应该只支持最主要的业务职能部门,将使用精力集中在收益明显的业务上,使数据仓库的应用立即产生效果,不应该消耗太多的精力在各个业务上同时铺开数据仓库的应用。
在确定开发目标和范围以后,应该编制需求文档,作为今后开发数据仓库的依据。 数据仓库开发的首要目标是确定所需要信息的范围,确定用户提供决策帮助时,在主题和指标域需要哪些数据源。这就需要定义:用户需要什么数据?面向主题的数据仓库需要什么样的支持数据?为成功地向用户提交数据,开发人员需要哪些商业知识?哪些背景知识?这就需要定义整体需求,以文件的形式整理现存的记录系统和系统环境,对使用数据仓库中数据的候选应用系统进行标识、排序,构造一个传递模型,确定尺度、事实及时间标记算法,以便从系统中抽取信息且将他们放入数据仓库。通过信息范围确定可为开发人员提供一个良好的分析平台,和用户一起分析哪些信息是数据仓库需要的,进行商业活动需要什么数据。开发人员可以和用户进一步定义需要,例如数据分级层次、聚合的层次、加载的频率以及需要保持的时间表等。 数据仓库开发的另一个重要目标是确定利用哪些方法和工具访问和导航数据?虽然用户都需要存取并且检索数据仓库的内容,但是所存取的粒度有所不同,有的可能是详细的记录,有的可能是比较概括的记录或十分概括的记录。用户要求的数据概括程度不同,将导致数据仓库的聚集和概括工具的需求不同。
数据仓库还有具有一定功能来访问和检索图表、预定义的报表、多维数据、概括性数据和详细记录。用户从数据仓库中获得信息,应该有电子表格、统计分析器和支持多维分析的分析处理器等工具的支持,以解释和分析数据仓库中的内容,产生并且验证不同的市场假设、建议和决策方案。为将决策建议和各种决策方案向用户清楚地表达出来,需要利用报表、图表和图像等强有力的信息表达工具。 数据仓库开发的其他目标,是确定数据仓库内部数据的规模。在数据仓库中不仅包含当前数据,而且包含多年的历史数据。数据的概括程度决定了这些数据压缩和概括的最大限度。如果要让数据仓库提供对历史记录进行决策查询的功能,就必须支持对大量数据的管理。数据的规模不仅直接影响决策查询的时间,而且还将直接影响企业决策的质量。
在数据仓库的开发目标中,还有:根据用户对数据仓库的基本需求,确定数据仓库中数据的含义;确定数据仓库内容的质量,以确定使用、分析和建议的可信级别;哪种类型的数据仓库可以满足最终用户的需求,这些数据仓库应该具有怎样的功能;需要哪些元数据,如何使用数据源中的数据等。 数据仓库的开发目标多种多样,十分复杂,需要开发人员和用户在开发与使用的过程中不断交互完善。因此,在规划中需要确定数据仓库的开发范围。使开发人员能够根据需求和目标的重要性逐步进行,并且在开发中吸取经验教训,为数据仓库在企业中的全部实现提供技术准备。因此,在为数据仓库确定总体开发方向和目标以后,就必须确定一个有限的能够很快体现数据仓库效益的使用范围。在考虑数据仓库苦的应用范围时,主要从使用部门的数量和类型、数据源的数量、企业模型的子集、预算分配以及开发项目所需的时间等角度分析。
在分析这些因素时,可从用户的角度和技术的角度两方面进行。 从用户的角度应该分析哪些部门最先使用数据仓库?是哪些人员为了什么目的使用数据仓库?以及数据仓库首先要满足哪些决策查询?因为这些决策查询往往确定了关于数据维数、报表的种类,这些因素都将确定数据仓库定义时所需要的数量关系。查询的格式越具体,越容易提供数据仓库的维数、聚集和概括的规划说明。 从技术角度分析,应该确定数据仓库中元数据库的规模,数据仓库的元数据库是存储数据仓库中数据定义的模型。数据定义存储在仓库管理器的目录中,可以作为所有查询和报表工具构造和查询数据仓库的依据。元数据库的规模直接表示了数据仓库中必须管理的数据规模。通过对元数据库规模的管理,实际上就确定了数据仓库中所需要管理的数据规模。
3、数据仓库的结构选择
数据仓库的结构可以进行灵活的选择,可将组织所使用的各种平台进行恰当的分割,把数据源、数据仓库和最终用户使用的工作站分割开来进行恰当的设计。
(1)数据仓库的应用结构
基于业务处理系统的数据仓库 在这种结构中,将运作的数据用于无需修改数据的只读应用程序中。具有这种结构的数据仓库元数据库是一种虚库,而不是数据仓库自身的元数据。在数据仓库元数据库的直接指导下,对数据仓库的查询就是简单的从数据库中抽取数据。
单纯数据仓库
利用在数据仓库中的数据源净化、集成、概括和集成等操作,将数据源从业务处理系统中传输进集中的数据仓库,各部门的数据仓库应用只在数据仓库中进行。这种结构经常发生在多部门、少用户使用数据仓库的情况下。这里的集中仅仅是逻辑上的,物理上可能是分散的。
单纯数据集市
数据集市是指在部门中使用的数据仓库,因为企业中的各个职能部门都有自己的特殊需要,而统一的数据仓库可能不能满足这些部门的特殊要求。这种体系结构经常发生在个别部门对数据仓库的应用感兴趣,而组织中其他部门却对数据仓库的应用十分冷漠之时,由热心的部门单独开发式所采用。
数据仓库和数据集市
企业各部门拥有满足自己需要的数据集市,其数据从企业数据仓库中获取,而数据仓库从企业各种数据源中收集和分配。这种体系结构是一种较为完善的数据仓库体系结构,往往发生在组织整体对数据仓库应用感兴趣之时所采用的体系结构。
(2)数据仓库的技术平台结构 单层结构
单层结构主要是在数据源和数据仓库之间共享平台,或者让数据源、数据仓库、数据集市与最终用户工作站使用同一个平台。共享一个平台可以降低数据抽取和数据转换的复杂性,但是共享平台在应用中可能遇到性能和管理方面的问题,这种体系结构一般在数据仓库规模较小,而组织的业务系统平台具有较大潜力之时所采用。
客户/服务器两层结构
一层为客户机,一层为服务器,最终用户访问工具在客户层上运行,而数据源、数据仓库和数据集市位于服务器上,该技术机构一般用于普通规模的数据仓库。
三层客户/服务器结构
基于工作站的客户层、基于服务器的中间层和基于主机的第三层。主机层负责管理数据源和可选的源数据转换;服务器运行数据仓库和数据集市软件,并且存储仓库的数据;客户工作站运行查询和报表运用程序,且还可以存储从数据集市或数据仓库卸载的局部数据。在数据仓库稍具规模,两层数据仓库结构已经不能满足客户的需求,要讲数据仓库的数据存储管理、数据仓库的应用处理和客户端应用分开之时,可以采用这种结构。
多层式结构
这是在三层机构基础上发展起来的数据仓库结构,在该结构中从最内数据层到最外层的客户层依次是:单独的数据仓库存储层、对数据仓库和数据集市进行管理的数据仓库服务层、进行数据仓库查询处理的查询服务层、完成数据仓库应用处理的应用服务层和面向最终用户的客户层。体系层次可能多达五层,这种体系结构一般用于超规模数据仓库系统。
4、数据仓库使用方案和项目规划预算
数据仓库的实际使用方案与开发预算,是数据仓库规划中最后需要确定的问题。因为数据仓库主要用于对企业管理人员的决策支持,确保其实用性是十分重要的,因此需要让最终用户参与数据仓库的功能设计。这种参与是通过用户的实际使用方案进行的,使用方案是一个非常重要的需求模型。实际使用方案必须有助于阐明最终用户对数据仓库的要求,这些要求有的只使用适当的数据源就可以得到基本满足,而有的却需要来自企业外部的数据源,这就需要通过使用方案将这些不同的要求联系起来。 实际使用方案还可以将最终用户的决策支持要求与数据仓库的技术要求联系起来。因为当用户确定最终要求后,为元数据库的范围确定一个界限。还可以确定所需要的历史信息的数量,当根据特定的用户进行数据仓库的规划时,就可确定最终用户所关心的维度(时间、方位、商业单位和生产企业),因为维度与所需要的概括操作有明显的关系,必须选择对最终用户有实际意义的维度,如:“月”、“季度”、“年”等。最后,还可以确定数据集市/数据仓库的结构需要,使设计人员确定采用单纯数据仓库结构,还是单纯的数据集市结构或者是两者相结合的结构。
在实际使用开发方案确定后,还需要对开发方案的预算进行估计,确定项目的投资数额。投资方案的确定可以依据以往的软件开发成本,但是这种预算的评估比较粗糙。另一种方法是参照结构进行成本评估,也就是说,将数据仓库实际使用方案所确定的构件进行分解,根据各个构件的成本进行预算估算。数据仓库的构件包含在数据源、数据仓库、数据集市、最终用户存取、数据管理、元数据管理、传输基础等部分中,这些构件有的在企业原有信息系统中已经具备,有的可以选择商品化构件,有的则需要自我开发。根据这些构件的不同来源,可以确定比较准确的预算。 在完成数据仓库规划后,就需要编制数据仓库开发说明书,说明系统与企业战略目标的关系,以及系统与企业急需处理的范围相对有限的开发机会,所设想的业务机会的说明以及目标任务概况说明、重点支持的职能部门和今后工作的建议。数据仓库项目应有明确的业务价值计划开始,在计划中需要阐明期望取得的有形和无形的利益。无形利益包含利用数据仓库使决策完成得更快更好等利益。
业务价值计划最好由目标业务主管来完成,因为数据仓库是用户驱动的,应该让用户积极参与数据仓库的建设,在规划书中要确定数据仓库开发目标的实现范围、体系结构和使用方案及开发预算。
掌握这个Python小技巧,轻松构建cytoscape导入文件
今天小编和大家分享如何借助Python脚本轻松构建cytoscape导入文件。Cytoscape是一个非常适合展示各种相互作用关系的可视化软件。
具体来说就是可以用于蛋白互作网络的展示,miRNA与蛋白质或者TF与RNA的相互作用等内容的可视化,是一个生信分析不可或缺的神器。但是当要处理的数据比较多,并且需要根据Cytoscape要求整理数据的时候,会不会整理到眼花?不知道你们会不会,反正小编每次都整理得想吐血~~~
更多Python视频、源码、资料加群960410445免费获取
上一次的利用Cytoscape中展示富集分析的结果教程中,Cytoscape导入的文本内容大致有图中的那几列,
将基因富集后,我们打开的原始文件一般如下图
为了举例说明,我们仅选取了一个性质,通过分列将gene里的gene分散到各个单元格里,形成下图。
具体问题是:将图1中source,性质和target三类数据转化为图2里的具有一对一关系样式,原本的解决方法是利用excel的复制横纵转化粘贴,之后可能还有重新整合起来,太过繁琐。
不懂编程的医学狗,还幻想用excel的函数,妄想解决上述问题,多次尝试还是失败。最后依靠大神大腿,学了用python来解决上述问题。下面和大家分享一下具体步骤。
安装和环境变量设计
网址:https://www.python.org/doc/
安装完还不算,必须先设置好python的环境变量(具体什么东西我一脸懵逼,就知道这个不设置好,错误警告!!!)
设置也很简单:先找到你你python的安装路径,
然后根据一下箭头指示操作
在最后一个编辑系统变量里面,在原来的变量值后面加入“;+python的路径”(这里的分号:,必须是半角下的分号)
创建文本和文件存储
在安装好python以及设计好变量环境后,创建一个文本,改后缀为.py用于存python代码以及一个.txt文本用于存数据。
其中data2.txt里面的数据应该是下图所显示那样,具体拓展看文末,
之后打开,cmd,
先确定刚刚.py和数据文件data.txt所在文件夹。
在命令框里,进入后默认出现1框所出现的,在1框后输入cd+文件存储位置
将索引引到文件存储位置,才可以进行下一步分析
数据转换
然后动动手指按下“python xxx.py”,然后就出现了一个out.txt
打开,看下,刺激不刺激,幸福不幸福!这样就解决了上次的困扰了,希望对大家有帮助。这个事情告诉我们,有个会懂代码的同学是个多么好的体验,睡觉都能笑醒!!!!
代码分析和拓展
1、代码如下
coding: utf-8
打开data2.txt
input = open("data2.txt", ‘r‘)
output = open("out.txt",‘w‘)
while True:
line = input.readline()
if not line: #文件读完退出
break;
line = line.strip().split(‘ ‘)
#print(line)
for i in line[2:]:
if not i:
continue
else:
output.write(line[0] + ‘ ‘ + line[1] + ‘ ‘ + i + ‘
‘)
input.close()
output.close()
(’ ’代表excel表里一个空格,’
’是换位,靠i循环。
for i in line[2:]里的line[2:]是用来定循环起点)<p><strong>2、代码拓展</strong></p> <p>上面这个代码的关键在与</p> <p><strong>output.write(line[0] + ‘ ‘ + line[1] + ‘ ‘ + i + ‘ ‘)</strong>这一步,一般不需要更改其余的参数,通过下面几个图来感受下修改后的变化。(这个代码可以拓展,拓展什么样靠自己的想象力了下面我就展示他可伸缩的性质)</p> <p><strong>加法:(构建具有更多性质属性的输入文件)</strong></p> <pre> output.write(line[0] + ‘ ‘ + line[1] +’ ’+line[2]+ ‘ ‘ + i + ‘ ‘)
公式改变处用红色标明,可以看出这次输出的文件,在原先的基础之上,出现了第三列这一列,也就意味着第三列的输出信息是’ ’+line[2]所表示的。之前说了,line[2]中2是定位的,我们看下我们最先需要处理的数据源。
Line[X]中X的顺序是从0开始的,也就是说line[0]代表A列,line[2]代表C列。
减法:(删减输入性质的文件)
output.write(line[0] + ‘ ‘ + i + ‘
‘)
<p><img alt="掌握这个Python小技巧,轻松构建cytoscape导入文件" class="has" src="http://p99.pstatp.com/large/pgc-image/bfa186b3123445fc9d9685d137611054" /></p> <p> </p> <p>同样我们删去了‘ ‘ + line[1],也就是把line[1]代表的源数据B列给去掉。</p> <p>根据以上的稍微改动,对于处理这类数据,通过对这段循环语句稍微改动</p> <pre> #print(line) for i in line[X:]: if not i: continue else: output.write(line[0] + ‘ ‘ + line[1] + ‘ ‘ + i + ‘ ‘)
即通过对x的赋值,结合我们的需要,定好合适的起点就对这个脚本有了全面的了解了。
这个代码是开源的,对于将david,bingo插件等富集分析的输出文件转化成符合cytoscape输入格式是非常便利省时的,不需要什么编程的底子,零基础快速掌握一个python小技巧达到构建配置文件的目的。
来源:https://blog.csdn.net/sinat_38682860/article/details/85636619
以上是关于教你轻松掌握数据仓库的规划和构建策略的主要内容,如果未能解决你的问题,请参考以下文章