数据仓库模型建设规范10Word下载.docx
- 文档编号:19955527
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:22
- 大小:28.95KB
数据仓库模型建设规范10Word下载.docx
《数据仓库模型建设规范10Word下载.docx》由会员分享,可在线阅读,更多相关《数据仓库模型建设规范10Word下载.docx(22页珍藏版)》请在冰豆网上搜索。
一般来说,事实表数据不物理删除,如果物理删除,增量抽取方式无法判断出来。
1.无时间戳
2.数据量小的表
3.代码表
4.主数据表
5.初始数据加载
全量抽取
全量加载
只适合系统初始化数据加载,
不区分增删改
查找对应代理键,全部加载,适合数据量小的场合,ETL简单快捷。
获取增量标识增删改添加时间戳
插入记录
改记录
维表不处理被删除的维度记录。
根据事务流水号,删除目标表。
查找代理键,直接插入目标表。
根据事务流水号,删除目标表.
可以处理物理删除现象。
2.3.准备层L0
2.3.1.主要数据结构
临时表:
从数据源抽取,直接落地到临时表。
临时表总是保存这次抽取的数据,不保留历史数据。
也就是说,如果是全量抽取的话,就是源系统整个表的数据,如果是增量抽取的话,就是自从上次修改后的数据。
接口表:
从临时表,经过清洗、转换到达接口表。
接口表保存历史数据,也就是说,如果是全量抽取的话,就是源系统整个表的数据,如果是增量抽取的话。
接口表里面也是源系统整个表的数据。
转换表:
为了进行清洗和转换建立的中间辅助表。
2.3.2.命名规范
L0_TMP_源系统_具体业务或L0_TMP_业务主题_具体业务(对单一源)举例:
L0_TMP_POS_SALESORDER
L0_DCI_业务主题_具体业务表举例:
L0_DCI_SALES_SALESORDER
L0_MAP具_体业务表举例:
L0_MAP_SALES
2.3.3.开发工作
开发数据抽取接口,落地TMP区
开发数据清洗转换程序,落地DCI区,多源系统进行合并开发数据装载程序,装载到L1层
2.4.原子层L1
2.4.1.主要数据结构
维度表:
整个数据仓库一致的维度
代码表:
维度属性,非维度代码等。
原子事实表:
根据业务主题,形成原子事实表汇总事实表:
根据分析主题,业务主题形成合并或汇总的事实表
2.4.2.命名规范
DW_DIM维_度。
举例:
组织维DW_DIM_ORG日期维DW_DIM_DATE.
DW_COD代E_码。
性别DW_CODE_GENDER
原子事实表:
L1_DW_FACT分_析主题_具体分析
汇总事实表:
L1_DM_FACT分_析主题_具体分析
2.4.3.开发工作
维护聚集。
衍生计算,二次指标计算。
2.5.应用层L2
2.5.1.主要数据结构宽表:
根据需求,从L1层抽取成宽表,表现形式为固定报表,仪表盘等等。
立方体:
根据分析主题,从L1生成OLAP立方体。
视图:
根据需要,从L1,L0层产生L2层的视图。
前端应用,不仅仅可以利用L2层的数据结构,还可以利用L1层的数据结构。
对于源系统,还可以利用L0层的DCI区数据,可以做详单和明细查询。
2.5.2.命名规范
宽表:
L2_FACT_【应用主题】_【分析主题】_应用。
举例:
L2_FACT_FIN_ZCFZB(财务->
资产负债表)
立方体:
根据分析主题,从L1生成OLAP立方体。
根据需要,从L1,L0层产生L2层的视图。
如明细单举例:
L2_VIEW_原L1层表。
2.5.3.开发工作
数据从L1层经过计算,汇总,根据前端分析需求,形成可以有效支撑前端应用查询的结构。
3.建模方法
要成功地建立一个数据仓库,必须有一个合理的数据模型。
数据仓库建模在业务需求分析之后开始,是数据仓库构造的正式开始。
在创建数据仓库的数据模型时应考虑:
满足不同层次、用户的需求;
兼顾查询效率与数据粒度的需求;
支持用户需求变化;
避免业务运营系统性能影响;
提供可扩展性。
数据模型的可扩展性决定了数据仓库对新的需求的适应能力,建模既要考虑眼前的信息需求,也要考虑未来的需求。
目前两类主流的数据仓库模型分别是由Inmon提出的企业级数据仓库模型和由Kimball提出的多维模型。
Inmon提出的企业级数据仓库模型采用第三范式(3NF),先建立企业级数据仓库,再在其上开发具体的应用。
企业级数据仓库固然是我们所追求的目标,但在缺乏足够的技术力量和数据仓库建设经验的情况下,按照这种模型设计的系统建设过程长,周期长,难度大,风险大,容易失败。
这种模型的优点是信息全面、系统灵活。
由于采用了第三范式,数据存储冗余度低、数据组织结构性好、反映的业务主题能力强以及具有较好的业务扩展性等,但同时会存在大量的数据表,表之间的联系比较多,也比较复杂,跨表操作多,查询效率较低,对数据仓库系统的硬件性能要求高等问题。
另一方面,数据模式复杂,不容易理解,对于一般计算机用户来说,增加了理解数据表的困难。
Kimball提出的多维模型降低了范式化,以分析主题为基本框架来组织数据。
以维模型开发分析主题,这样能够快速实施,迅速获得投资回报,在取得实际效果的基础上,再逐渐增加应用主题,循序渐进,积累经验,逐步建成企业级数据仓库。
这也可以说是采用总线型结构先建立数据集市,使所有的数据集市具有统一的维定义和一致的业务事实,这种方法融合了自下而上和自上而下两种设计方法的思想。
这种模型的优点是查询速度快,做报表也快;
缺点是由于存在大量的预处理,其建模过程相对来说就比较慢。
当业务问题发生变化,原来的维不能满足要求时,需要增加新的维。
由于事实表的主码由所有维表的主码组成,所以这种维的变动将是非常复杂、非常耗时的。
而且信息不够全面、系统欠灵活、数据冗余多。
本规范我们主要针对维度建模的方法来阐述规范。
3.1.维度建模
多维数据建模以直观的方式组织数据,并支持高性能的数据访问。
每一个多维数据模型由多个多维数据模式表示,每一个多维数据模式都是由一个事实表和一组维表组成的。
多维模型最常见的是星形模式。
在星形模式中,事实表居中,多个维表呈辐射状分布于其四周,并与事实表连接。
位于星形中心的实体是指标实体,是用户最关心的基本实体和查询活动的中心,为数据仓库的查询活动提供定量数据。
每个指标实体代表一系列相关事实,完成一项指定的功能。
位于星形图星角上的实体是维度实体,其作用是限制用户的查询结果,将数据过滤使得从指标实体查询返回较少的行,从而缩小访问范围。
每个维表有自己的属性,维表和事实表通过关键字相关联。
使用星形模式主要有两方面的原因:
提高查询的效率。
采用星形模式设计的数据仓库的优点是由于数据的组织已经过预处理,主要数据都在庞大的事实表中,所以只要扫描事实表就可以进行查询,而不必把多个庞大的表联接起来,查询访问效率较高。
同时由于维表一般都很小,甚至可以放在高速缓存中,与事实表作连接时其速度较快;
便于用户理解。
对于非计算机专业的用户而言,星形模式比较直观,通过分析星形模式,很容易组合出各种查询。
3.2.建模步骤
第一步:
选取建模的业务过程
设计过程的第一步是确定要建模的业务过程或者度量事件。
业务过程是在业务需求收集过程明确下来。
在很多的生产活动中,存在着很多价值链,这些价值链就是有一系列的业务过程来组成的。
比如在供应链管理中。
存在着下面的业务过程:
原材料购买
原材料交货
原材料库存
材料账单
生产制造
将产品运到仓库
制成品库存
客户订单
为客户送货
货品计价
付款
退货
第二步:
定义模型的粒度
业务过程被确定下来后,就建模师就必须声明事实表的粒度。
清楚地定义事实表的行到底代表什么在提出业务过程维度模型的过程至关重要。
如果没有在事实表的粒度上达成一致,那么设计过程就不可能成功地向前推进。
第三步:
选定维度一旦事实表的粒度已经稳固地确定下来,对维的选择就相当简单了。
也正是在此时,就可以开始考虑外键的问题了。
一般来说,粒度本身就能够确定一个基本或者最小的维度集合,设计过程就是在此基础上添加其他维。
这些维在已经声明的事实表粒度都有一个唯一对应的值。
第四步:
确定事实四步设计过程的最后一步是仔细选择适用于业务过程的事实和指标。
事实可以从度量事件中采用物理手段捕捉,或者也可以从这些度量中导出。
对于事实表粒度来说,每个事实都是必须设计存在的,不要将那些明确声明的粒度不相匹配的其他时间段的事实或者其他细节层次的事实混杂进来。
4.维度表设计维度表包含内容:
1)代理键:
整型,不可重复,唯一标识每一条记录,不包含任何商业信息。
(必选)
2)代理键有效开始时间和结束时间。
3)当前有效标志。
4)主键:
传统意义的业务键,包含相应的商业信息,如员工编号。
5)名称:
数据分析时显示的内容,如员工名称等;
6)排序键:
自定义序列。
(可选)
7)自定义汇总:
利用自定义表达式进行特定的数据运算。
可选)
8)父键:
父子维度中用来标识主键的上级。
9)一元运算符:
在父子维度中用来定义上下级的汇总关系。
(可选)(详细)
10)属性:
属性包含有关维度的信息。
例如,Customer维度可以包含Name、PhoneNumber、Gender、City、State等属性。
属性通过属性层次结构显示出来。
维度中的属性层次结构同时包含可选的(All)级别和该属性的非重复成员。
例如,Customer维度可以包含具有两个级别的Name属性层次结构:
(All)级别以及为每个姓名包含一个成员的级别。
父子层次结构的处理方式有所不同。
属性不一定要具有属性层次结构。
如果未创建属性层次结构,多维数据集的空间将与属性无关。
例如,通常不会为PhoneNumber属性创建属性层次结构,因为通常不会按电话号码导航维度。
如果没有为属性创建属性层次结构,则该属性可用作成员属性,但不能用作用户层次结构中的级别。
属性可以通过前端展示软件进行展现。
11)属性层次结构:
属性层次结构完全定义多维数据集的空间。
多维数据集是由多维数据集的属性层次结构的交集产生的多维空间。
4.1.时间维度
时间维度是必不可少的一个维度,可以参考如下的模板:
Name
Code
DataType
Length
日期代理键
DATEPK
INTEGER
日期描述
DATEDESC
VARCHAR2(8)
8
日期长描述
DATELDESC
VARCHAR2(20)
20
日期中文描述
DATECNDESC
天
DAY
NUMBER
天中文
DAYCN
VARCHAR2(10)
10
月
MONTH
月中文
MONTHDESC
年
YEAR
年中文
YEARDESC
年月
YEARMONTH
VARCHAR2(6)
6
周月
WEEKMONTH
周月中文描述
WEEKMONTHCND
EVSACRCHAR2(20)
年中第几周
WEEKYEAR
年中第几周描述
WEEKYEARCN
周几
WEEKNO
周几中文描述
WEEKCN
旬
XUN
旬中文
XUNCN
季度
QUARTER
季度中文
QUARCN
是否周末
IFWEEKEND
是否月末
IFMONTHEND
节假日名称
HOLIDAY
上月同一天
LASTMONTHDAY
去年同一天
LASTYEARDAY
4.2.层级维度
层级维度也是我们模型设计最常遇见的维度,比如组织结构,区域,产品树,行业结构等等。
在设计时,可以采用如下模板:
针对数据存储时,采用自关联的结构:
组织代码
ORGCODE
上级组织代码
PORGCOD
EVARCHAR2(20)
组织名称
ORGNAME
VARCHAR2(100)
100
上级组织名称
PORGNAM
EVARCHAR2(100)
组织类型
ORGTYPE
组织层级
ORGLEVE
LVARCHAR2(20)
组织描述
ORGDESC
VARCHAR2(200)
200
组织简称
ORGSNAM
组织地址
ORGADDR
针对数据展现时,将自关联的结构展开,以列存储层次:
根据需要可以把组织层级具体化。
组织代理键
ORGKEY
VARCHAR2(30)
30
VARCHAR2(50)
50
ORGSNAME
ORGLEVEL
ORGPCODE
ORGPNAME
组织1级代码
ORG1CODE
组织1级名称
ORG1NAME
组织2级代码
ORG2CODE
组织2级名称
ORG2NAME
组织3级代码
ORG3CODE
组织3级名称
ORG3NAME
组织4级代码
ORG4CODE
组织4级名称
ORG4NAME
组织5级代码
ORG5CODE
组织5级名称
ORG5NAME
组织6级代码
ORG6CODE
组织6级名称
ORG6NAME
组织7级代码
ORG7CODE
组织7级名称
ORG7NAME
组织8级代码
ORG8CODE
组织8级名称
ORG8NAME
代理键开始时间
KEYSTARTDATE
代理键结束时间
KEYENDDATE
有效标志
CURRENTFLAG
修改时间
KEYMODIFYDAT
EVARCHAR2(30)
4.3.缓慢变化维
缓慢变化维定义数据会发生缓慢变化的维度就叫”缓慢变化维”。
举个例子就清楚了:
在一个零售业数据仓库中,事实表保存着各销售人员的销售记录,某天一个销售人员从北京分公司调到上海分公司了,那么如何来保存这个变化呢?
也就是说销售人员维度要怎么恰当的处理这一变化。
先来回答一个问题,为什么要处理,或保存这一变化?
如果我们要统计北京地区或上海地区的总销售情况的时候,这个销售人员的销售记录应该算在北京还是算在上海?
当然是调离前的算在北京,调离后的算在上海,但是如标记这个
销售人员所属区域?
这里就需要处理一下这个维度的数据,即我们缓慢变化维需要做的事情。
处理缓慢变化维一般按不同情况有以下几种解决方案:
4.3.1.新数据覆盖旧数据
此方法必须有前提条件,即你不关心这个数剧的变化。
例如,某个销售人员的英文
名改了,如果你不关心员工的英文名有什么变化则可直接覆盖(修改)数据仓库中的数
据。
4.3.2.保存多条记录,并添加字段加以区分
这种情况下直接新添一条记录,同时保留原有记录,并用单独的专用的字段保存区别。
如:
(以下表格中Supplier_State表示上面例子中所属区域,为描述清晰,不用代理键表示)
Supplierkey
SupplierCode
SupplierName
SupplierState
Disa
001
ABC
PhlogisticalSupplyCompany
CA
Y
002
IL
N
或:
Version
Phlogistical
SupplyCompany
1
以上两种是添加数据版本信息或是否可用来标识新旧数据。
下面一种则是添加记录的生效日期和失效日期来标识新旧数据:
Supplierk
SupplierCo
SupplierNa
SupplierSta
StartDat
EndDate
ey
de
me
te
e
PhlogisticalSupplyCompany
01-Jan-20
00
21-Dec-20
04
22-Dec-20
空的End_Date表示当前版本数据,或者你也可一用一个默认的大时间(如:
12/31/9999)来代替空值,这样数据还能被索引识别到.
4.3.3.不同字段保存不同值
Supplier_key
Supplier_Name
Original_Supplier_
State
Effective_Date
Current_Supplier_
PhlogisticalSupply
Company
22-Dec-2004
这种方法用不同的字段保存变化痕迹.但是这种方法不能象第二种方法一样保存所有变化记录,它只能保存两次变化记录.适用于变化不超过两次的维度。
4.3.4.另外建表保存历史记录
即另外建一个历史表来表存变化的历史记录,而维度只保存当前数据
Supplier:
SupplierHistory:
CreateDate
这种方法仅仅记录一下变化历史痕迹,其实做起统计运算来还是不方便的
4.3.5.混合模式
这种模式是以上几种模式的混合体,相对而言此种方法更全面,更能应对错综复杂且易变化的用户需求,也是较为常用的。
RowKey
Supplier
_key
_Code
_Name
StartDate
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据仓库 模型 建设 规范 10