# 数据仓库和商务智能
数据仓库的概念始于20世纪80年代,该技术赋能组织将不同来源的数据整合到公共的数据模型中去,整合后的数据能为业务运营提供洞察,为企业决策支持和创造组织价值开辟新的可能性。数据仓库还是减少企业建设大量决策支持系统(DSS)的一种手段,企业数据仓库提供了一种减少数据冗余、提高信息一致性,让企业能够利用数据做出更优决策的方法。随着信息化建设的推进,数据仓库建设逐渐成为主流,特别是与商务智能(BI)作为业务决策主要驱动力协同发展。
数据仓库建设的主要驱动力是用来支持运营职能、合规需求和商务智能活动。越来越多的组织被要求用数据来证明他们是合规的,因为数据仓库中包含历史数据,所以经常被用来响应这类要求。不仅如此,商务智能支持一直是建设数据仓库的主要原因,商务智能为组织、客户及产品提供洞察。通过商务智能活动决策知识并采取行动的组织,能提升其运营效率,增强其竞争优势。越来越多的数据可以被越来越快的速度被使用,商务智能从回顾评价发展到预测分析领域。
# 目标和原则
一个组织建设数据仓库的目标通常有:
- 支持商务智能活动。
- 赋能商业分析和高效决策。
- 基于数据洞察寻找数据创新方法。
数据仓库建设应遵循如下指导原则:
- 聚焦业务目标。确保数据仓库用于组织最优先级的业务并解决业务问题。
- 以终为始。让业务优先级和最终交付的数据范围驱动数据仓库内容的建设。
- 全局性的思考和设计,局部性的行动和建设。让最终的愿景知道体系架构,通过集中项目快速迭代构建增量交付,从而实现更直接的投资回报。
- 总结并持续优化。以原始数据为基础,通过汇总和聚合来满足需求并确保性能,但不替换细节数据。
- 提升透明度和自助服务。上线文信息越丰富,数据消费者越能从数据中获得更多数据价值,在这个过程中,需要向利益相关方公开集成的数据内容及其流程信息。
- 与数据仓库一起建立元数据。数据仓库成果的关键是能够准确解释数据,能回答一些基本问题,例如这个数据是怎么计算出来的,这个数据的来源是哪里。元数据的获取应该作为软件开发周期的一部分,元数据的管理也应该作为数据仓库持续运营的一部分。
- 协同。与其他数据活动协作,尤其是数据治理、数据质量和元数据管理活动。
- 千人千面。为每种数据消费者提供正确的工具和产品。
# 基本概念
# 商务智能
商务智能这个术语有两层含义,第一层含义指的是一种理解组织诉求和寻找机会的数据分析活动,数据分析的结果用来提高组织决策的成功率。当人们说数据是竞争优势的关键要素时,他们其实是在说商务智能的内在逻辑:如果一个组织向自己的数据“正确提问”,他就能获得关于产品、服务及客户方面的洞见,为实现战略目标做出更好的决策。第二层含义,商务智能指的是支持这类数据分析活动的技术集合。决策支持工具、商务智能工具不断进化,促成了数据查询、数据挖掘、统计分析、报表分析、场景建模、数据可视化及仪表盘等一系列应用,他们被用于从预算到高级分析的方方面面。
# 数据仓库
数据仓库有两个重要的组成部分:一个集成的决策支持数据库和与之相关的用于收集、清理、转换和存储来自各种操作和外部源数据的软件程序。为了支持历史的、分析类的和商务智能的需求,数据仓库建设还会包括依赖的数据集市,数据集市是数据仓库中数据子集的副本。从广义上来看,数据仓库包括为支持商务智能目标的实现提供数据存储或提取操作。
企业级数据仓库(EDW)是集中化的数据存储,为整个组织的商务智能需求提供服务。EDW的建设遵循企业数据级模型,以确保整个企业内部决策支持活动的一致性。
# 数据仓库建设
数据仓库建设指的是数据仓库中数据的抽取、清洗、转换、控制、加载等操作过程。数据仓库建设流程的重点,是通过强制业务规则、维护适当的业务数据关系,在运营的数据上实现一个集成的、历史的业务环境。数据仓库建设还包括与元数据资料库交互的流程。
传统意义上的数据仓库建设,主要关注结构化数据,其主要表现为:定义字段中的元素,无论是在文件中还是在表中,都要与数据模型中的记录一致。随着技术的不断发展,商务智能和数据仓库空间现在也会包含半结构化数据和非结构化数据,因此定义一个可行的存储结构来维持数据仓库管理中的分析工作负载,一直是数据仓库建设需要攻关的难题。
# 数据仓库建设方法
不同的人对数据仓库建模有不同的实施方法,有人把数据仓库定义为“面向主题的、数据整合的、随时间变化的、相对稳定的、支持管理决策的数据集合”,其强调用规范化的关系模型来存储和管理数据。而其他人则可能把数据仓库定义为“为查询和分析定制的交易数据副本”,这个方法也被人成为多维模型。他们的核心理念是:
- 数据仓库存储的数据来自其他系统。
- 存储行为包括以提升数据价值的方式整合数据。
- 数据仓库便于数据被访问和分析使用。
- 组织建设数据仓库的目的是,需要让授权的利益相关方访问到可靠的、清洗过的集成数据。
- 数据仓库建设需要涵盖工作流支持、运营管理和预测分析。
# CIF
Bill Inmon的企业信息工厂(Corporate Information Factory)是两种主要的数据仓库建设模式之一。其主要的特点是:
- 面向主题。数据仓库是基于主要业务实体组织的,而不关注功能及应用。
- 充分整合。数据仓库中的数据是统一、内聚的。保持相同的关键结构,结构的编码和解码、数据定义和命名规范在整个仓库中都是一致的。因为数据是整合的,数据仓库不是简单的运营数据副本,相反数据仓库成为了数据记录的系统。
- 随时变化。数据仓库存储的是某个时间段的数据,数据仓库中的数据像是快照一样,每一张快照都反映了某个节点的数据状态。无论什么时间去搜索,基于某个时间段的数据查询需要得到相同的结果。
- 保持稳定。在数据仓库中,数据记录不会像在业务系统里那样频繁更新,相反,新数据只会追加到老数据的后面。一组记录可以代表同一交易的不同状态。
- 聚合明细数据。数据仓库中的数据包括原子的交易明细,也包括汇总后的数据。业务系统很少聚合数据,数据仓库一旦建好,出于成本和空间的考虑,都会把数据进行汇总。汇总数据可以持久的存在一个表里,也可以是非持久的,以视图的形式展现,汇总数据是否持久化的决定因素通常是性能上是否需要。
- 历史留存。业务系统的重心是当前的数据,数据仓库要包含历史数据,这可能会额外消耗很大的存储空间。
CIF的组成部分包括:
- 应用程序。应用程序处理业务流程,其产生的明细数据流转到数据仓库和操作型数据存储中,继而用作分析。
- 数据暂存区。它是介于业务系统源数据库和目标数据仓库之间的一个数据库,暂存区是用于数据抽取、转换、加载的地方,它对最终用户透明,暂存区中的大部分数据是短暂留存的,通常只有相当少的一部分数据是持久性的。
- 集成和转换。在集成层,来自不同的数据源的数据被转换整合为数仓和ODS里的标准企业数据。
- 操作型数据存储(ODS)。ODS是业务数据的集成数据库,数据可能直接来源于应用系统,也可能来自其他数据库。操作型数据存储中通常包括当前或近期的数据,而数据仓库还包含历史数据。操作型数据存储的数据变化较快,而数据仓库的数据相对稳定。ODS满足了企业对低延迟数据的需求。操作型数据存储可以作为数据仓库的主要来源,可以用作数据仓库审计。
- 数据集市。数据集市为后续的数据分析提供数据,这里说的数据通常指的是数据仓库的子集,用于支持特定分析或特定种类的消费者。例如,数据集市可以聚合数据,以支持更快的分析,多维模型通常针对面向用户类型的数据集市。
- 操作型数据集市(OpDM)。它是专注于运营决策支持的数据集市。它直接从操作型数据存储而不是数据仓库获取数据,具有操作型数据存储相同的特性,包含当前或进去的数据,这些数据通常是经常变化的。
- 数据仓库。数据仓库为企业数据提供了一个统一的整合入口,以支持管理决策、战略分析和规划。数据从应用程序和操作型数据存储流入数据仓库,然后流到数据集市,这种流动通常是单向的,不符合要求的数据不能进入数据仓库,理想的情况是其源头系统完成更正后,然后再通过ETL流程系统重新加载。
- 运营报告。运营报告根据数据存储的统计结果中输出。
- 参考数据、主数据和外部数据。除了来自应用程序的交易数据,CIF还包括理解交易所需数据,如参考数据和主数据。对通用数据的访问简化集成在数据仓库中,当应用程序使用当前的参考数据和主数据时,数据仓库还需要它们的历史值及其有效的时间范围。
CIF通常有如下特点:
- 目标从业务功能的执行转向数据分析。
- 系统最终用户从一线业务人员变成企业决策者。
- 系统使用从固定操作转向即席查询。
- 响应时间的要求不再重要(战略决策分析比例行操作需要花费更多的时间)。
- 每个操作、查询或流程设计更多的数据。
# 多维数据仓库(Kimball)
Kimball的多维数据仓库是数据仓库开发的另一个主要模式,Kimball将数据仓库简单的定义为“专为查询和分析而构建的事务数据副本”,仓库数据存储在多维数据模型中。多维模型通常成为星形模型,由事实表和维度表组成,事实表与许多维度表关联,为数据消费者解答关于事实表的问题。多个事实数据表通过“总线”共享公共的维度或遵循一致性的维度。
数据仓库的总线矩阵展示的是生成事实数据的业务流程和表示维度数据主题域的交汇。当多个流程使用相同的数据时,存在遵循维度的机会,如下图所示:
企业数据仓库总线可以帮助组织确定可管理的开发工作范围,每一个新的实现都构成整体架构增量的部分,在某种程度上,存在足够多的维度模式,以兑现实现集成企业数据仓库环境的承诺。
# 数据仓库建设的工作
# 理解需求
构建一个数据仓库和开发一套业务系统不同,业务系统的开发取决于精确的、具体的业务需求,数据仓库建设则是把数据汇集到一起,再以各种不同的方式使用这些数据。此外,数据的使用方式也会随着时间的推移、用户分析和探索数据的需求的发展而转变。
在收集数据仓库/商务智能项目的需求时,首先,要考虑业务目标和业务战略,确定业务领域并框定范围,然后,确定并对相关业务人员进行访谈,了解他们想做些什么和这么做的原因,记录他们当下关心的具体问题和想要询问的数据,以及他们如何区分和分类重要信息。在可能的情况下,界定并书面记录关键的性能指标和计算口径。这些信息可以揭示业务规则,为数据质量自动化奠定基础。
将需求进行分类并排出优先级,寻找并快速启动那些简单且有价值的项目,以便在项目初始发布阶段就能获得产出。数据仓库或商务智能项目需求描述应该包括业务领域及范围内流程的完整业务背景。
# 定义和维护数据仓库/商务智能架构
数据仓库/商务智能架构应该描述数据从哪里来、到哪里去、什么时候去、为什么要去,以及用什么样的方式流入数据仓库。这里“用什么样的方式”包括涉及的硬件和软件细节,以及将所有活动组织在一起的组织框架。技术要求应该包括性能、可用性和时间性要求。
确定维护数据仓库/商务智能技术架构 最佳的架构将提供一种能够以原子化的数据处理方式支撑交易级和运营界报表需求的机制,这种机制可以避免数据仓库存储每一笔交易细节。概念模型架构是一个起点,要将非功能需求和业务需求很好的结合起来,做好原型设计可以快速证明或驳斥关键需求的实现,避免对某些技术或架构进行过大的投入。
这种思维转换过程的一个自然延伸是对企业数据模型的维护,重点是哪些组织区域正在使用哪些数据结构,要对照逻辑模型检查物理模型的部署。如果出现遗漏或错误,要及时进行纠正。
确定维护数据仓库/商务智能管理流程 通过协调和集成维护流程进行生产管理,定期向业务团队发布。制定一个标准的发布计划,在理想的情况下,数据仓库项目团队应将部署的数据产品的每一次更新作为一个提供附加功能的软件版本进行管理。
建立一个有效的发布流程,确保管理层理解这是一个以数据产品为中心的主动流程,而不是被动的解决问题。在跨职能团队中积极主动的协同工作对于持续增长和增强功能至关重要,被动式的支持系统会降低采用率。
# 开发数据仓库和数据集市
通常来说,开发数据仓库和数据集市建设有三条并存的构建轨迹:
- 数据。支持业务分析所必须的数据,这条轨迹设计识别数据的最佳来源,设计如何修正、转换、集成、存储以及提供给应用程序使用数据的规则。此步骤还包括决定如何处理不符合预期的数据。
- 技术。支持数据存储和迁移的后端系统及流程,与现有企业系统集成。
- 商务智能工具。数据消费者从已部署的数据产品中获得有意义的数据洞察应用套件。
# 加载数据仓库
在所有数据仓库中,工作量最大的部分都是数据准备和预处理,描述数据仓库中包含的设计决策和原则是数据仓库架构设计关键考量因素。确定数据加载方法时,要考虑的关键因素是数据仓库和数据集市所需的延迟需求、源可用性、批处理窗口或上载间隔、目标数据库及时间帧的一致性。加载方法还必须解决数据质量处理过程、执行转换的时间、延迟到达的维度和数据拒绝等问题。
# 实施商务智能产品组合
实施商务智能产品组合是为了在业务部门内部或业务部门之间为正确的用户社区选定合适的工具,通过协调常见业务流程、性能分析、管理风格和需求找到相似之处。具体做法如下:
- 根据需要给用户分组。了解用户组,然后将工具与公司中的用户进行匹配。
- 将工具与用户要求相匹配。主流的商务智能供应商提供经典级的报表功能,这些国内曾经属于应用程序报告领域。许多应用程序厂商提供嵌入式分析功能,其中包含从预先填充的Qube中提取的标准内容。要根据用户实际的需求,选择合适的产品组合以满足也用户需要。