近日,2022格推TechDay“数治训练营”系列直播第一期课程圆满结束握住。格推资深大数据研发工程师深入浅出地介绍了数据仓库的前世今生以及数据建模的常用方法。本文总结了《数数训练营》第一期《数据仓库与维度建模》的干货内容。同时,还精选了直播间的精彩问题进行问答整理,带大家回顾第一期课程。点击观看直播视频>>https://mp.weixin.qq.com/s/NK...1.数据仓库快速入门一个打不开的概念。“数据仓库之父”BillInmon首先提出了数据仓库的概念,认为“数据仓库是面向主题的、集成的、相对稳定的反映历史变化的数据集合,用于支持管理决策”。另外,大数据架构专家RalphKimball在书中也对数据仓库下了《The Data Warehouse Tookit》的定义:“数据仓库是一个将源系统数据抽取、清洗、归一化,然后提交到维度数据的系统贮存。决策提供查询和分析功能的支持和实现。”BillInmon对数据仓库的定义强调的是整体特性,而RalphKimball则从实现过程的角度来定义数据仓库。无论哪种定义,我们都可以看出它是对于企业建设数据仓库具有重要意义,通过数据仓库的建设,企业不仅可以集中管理分散在各个业务系统中的数据,打破数据孤岛,也为后续数据的高效分析和应用打下基础,并通过大数据赋能业务发展。2.数据仓库构建与数据建模那么,企业如何构建数据仓库?如何构建满足业务需求的高效、稳定、易用的数据仓库?这需要考虑数据模型的选择和数据建模的问题,“数据建模”指的是d的过程数字化地描述和抽象实体以及实体与实体之间的关系。“数据模型”是指组织和存储数据的方法。目前主流的数据建模方法有范式建模和维度建模两种:范式建模范式建模是由BillInmon提出的,指的是从企业的角度对主体进行抽象。我们一般使用E-R实体关系模型将事物抽象为“实体”、“属性”和“关系”来表示事物和事件的关联。范式建模的目的不是抽象特定业务流程中实体和对象之间的关系。它要求建模人员全面、整体地了解企业的??业务和数据。维度建模维度建模由RalphKimball提出,主张从分析和决策的需要出发构建模型,为分析需要服务。因此,它关注的重点是如何让用户更快地完成数据分析,同时保持对大规模、复杂查询的更好响应性能。与范式建模相比,维度建模的构建周期更短,支持敏捷迭代。一般不会对数据仓库架构做太复杂的设计。在构建数据仓库时,我们需要根据具体的数据分析场景和业务处理系统,选择相应的数据建模方式。比如对于OLTP系统(On-lineTransactionProcessing:联机事务处理),由于其主要面向随机读写数据操作,侧重于事务处理,我们建议企业使用OLTP系统和传统数据库tobuildModel方法用于设计数据模型,解决事务处理中的数据冗余和一致性问题。OLAP系统(On-lineAnalyticalProcessing:联机分析处理)面向批量读写数据操作,不关注事务处理的一致性。它主要关注大数据查询和处理中的数据集成和性能。模型方法。具体怎么做范式建模和维度建模呢?让我们分别看看每个案例。3.范式建模方法与实例分析首先,我们来看一下范式建模的基本过程。在进行范式建模时,我们往往要根据不同的规范要求设计合理的模型,而这些不同的规范要求就是“范式”。目前业界存在一范式、二范式、三范式等不同的模型构建规范。范式越高,数据库冗余越小,但数据计算会更复杂。大多数企业采用三范式建模来降低数据处理的复杂性,同时保证灵活性和数据计算速度。范式建模的过程可以拆解为以下四个步骤:抽象主题,梳理主题之间的关系,梳理主题的属性,绘制E-R关系图。比如我们想用范式建模来设计课程管理系统的数据模型。系统主要用来管理某个学校的教师、学生和课程相关的数据,涉及选课、考试成绩、教师授课、学生班级等。那么首先要梳理出实体,分别是教师、课程、学生和班级;其次,梳理实体之间的关系,包括教师讲授的课程、学生的选修课、学生所属的班级等;再次,列出实体和关系的属性,比如“学生”实体的属性包括姓名、性别、年龄等,关系“学生选修课”的属性包括选修时间、总课时等。;第四步,画E-R图,用矩形表示“实体”,“关系”用菱形表示,“属性”用椭圆表示,很清楚地表明了主体和主体之间的关系以视觉方式呈现主题。4.维度建模方法和案例分析与范式建模相比,维度建模稍微复杂一些,包括事实表和维度表。事实表首先来看事实表。事实表分为三种类型,包括事务性事实表、周期性快照事实表和累积快照事实表。事务性事实表通常使用一条记录来表示在某个时间点发生的事件或动作。例如电商业务场景中的订单支付业务,一般采用事务性事实表来组织和存储数据。周期快照事实表中的一条记录描述了某个实体在一定时间内的状态或状态。例如,客户每月的积分余额属于典型的周期性快照事实表记录。累积快照事实表中的一条记录是某个业务流程中发生的多个事件的累积记录,一般是为了满足某个流程节点运行效率的统计需求。下面以事务性事实表的设计流程为例,了解事实表的设计方法:选择与数据分析需求相关的业务流程。“业务流程”是指业务流程中不可分割的行为事件。例如,在电子商务业务场景中,购物业务流程包括追加购买、下单、支付、商户发货、用户确认收货等业务流程。如果我们要分析销售,那么“付款”就是一个必经的业务流程。声明粒度。尽量选择最细粒度的,精确定义事实表每一行所代表的业务意义,以保证事实表最大的灵活性。比如一个用户可能在一个订单中购买了多个商品,那么每一个购买的商品就是一个子订单,我们一般会选择子订单作为申报粒度。确定尺寸。维度是指业务流程的环境信息。例如,用户在某个时间从某个店铺购买了某件商品,则该店铺所属的行业和商品的类目都可以认为是维度。识别事实,即确定业务流程的指标。例如,“支付”业务流程的衡量指标是支付金额。在更复杂的电商业务场景中,还可能包括邮费分成、折扣金额等指标。需要注意的是,每个数据仓库都包含一个或多个事实表。事实表是分析对象的度量。它包含与每个维表关联的外键,并通过Join与维表关联。维表维表是用户分析数据的窗口,记录了事实表中相关事务和事件的属性和属性含义。维度表的设计过程主要分为以下四个步骤:选择维度。比如生成一个产品维度表,我们选择的维度就是产品维度。确定主维表。比如你要创建一个产品维表,主维表就是业务系统的产品表。识别相关的维度表。主维表确定后,其他相关维表也随之确定。例如,产品维度表的相关维度表包括产品类别表、品牌表和产品行业表。确定维度属性。这些属性一般来自主维表和相关维表。我们整合主维度表和相关维度表的属性,合并相同的属性(比如商品类目表和品牌表中可能有行业属性,我们可以合并行业属性),然后把final属性写入要生成的维度表。此外,本期TechDay《数治训练营》还介绍了范式建模和维度建模的基本原理,以及建模中的常见问题(例如范式建模的传递依赖问题、维度建模的缓慢变化问题。维度问题等)、数据仓库分层等进行了详细阐述。更多精彩内容,点击直播回顾视频获取!彩蛋:直播间精选问答1、什么样的数据仓库才算比较完善?数据仓库主要为数据分析服务。一个完整的数据仓库首先要满足企业对业务分析的需求。数据仓库的建设是一个不断迭代优化的过程,需要在成本、性能、效率等方面综合考虑,寻求平衡。一般来说,在企业业务稳定发展阶段,我们的工作主要是维护现有的数据仓库,同时做一些改进和优化工作;对于业务迭代速度比较快的企业,对于一些探索性的业务分析需求,我们需要对数据仓库进行新的开发投入。2、在数据仓库的设计中,需求方的分析粒度会随着对时间、人员和需求变化的理解而发生很大的变化。如何在数据仓库建设初期尽可能的考虑到这个问题?这就需要数据仓库建设团队在前期做好需求调研、业务调研、数据调研等工作。在使用维度建模时,必须严格遵循事实表的设计原则。在声明粒度时,尽量选择最新的粒度,并尽可能多地保留数据维度信息,以保证事实表最大的灵活性。3、对于缓慢变化维度的问题,是否可以将维度表改成拉链表来解决?拉链表也是一种常用的方案,属于插入新行的方案,和直播中提到的插入新行的例子很相似。不同的是,在我们的直播中,使用了“商品键”的代理主键作为关联事实表的字段,所以可以通过修改“商品键”来处理维度变化。添加start和end两个字段来标记数据行的有效时间,使用前需要过滤有效的数据行。相对来说,修改代理主键的方法更容易理解,也更方便用户使用。4、数据指标方面,在多个业务部门的情况下,如何对名称相同或相近的指标进行统一管理?如何处理名称相同但定义不同的指标?这个问题涉及到数据仓库建设规范中索引命名规范的设计。索引命名可以避免这个问题,比如在命名的时候加入部门维度。另外,在我们“数字治理训练营”的后续课程中也会有相应的内容介绍,敬请期待。推荐书目当一家公司战略决定提供云计算和大数据服务时,如何逐步分解战略并最终实施?这涉及技术建设、运营管理、组织能力建设等一系列活动。有哪些方法论和实践可以借鉴?相信这本书能给你带来灵感!**关注格推科技实践微信公众号,后台回复“书仓”获取本期直播课件~**
