数据仓库设计规范

淺唱寂寞╮ 提交于 2020-03-02 10:15:05

为了解决数据仓库建设过程中出现的各种痛点,我们从模型与规范两个方面进行建设,并提出设计统一归口。

1. 模型

规范化模型分层、数据流向,从而降低研发成本,增强指标复用性,并提高业务的支撑能力。

 

1.1. 模型分层

为了保证数据层的稳定又要屏蔽对下游的影响,并且要避免链路过长,我们将分层进行统一定义为四层:

ODS(Operational Data Store):定义为存储层,仅以技术手段(存储快照形式)保留历史数据,不作任何转换,与业务侧db实体保持同构。

DWD(Data Warehouse Detail):定义为明细层,对数据进行规范化(编码转换、清洗、统一格式、脱敏等),不做横向整合。

DWB(Data Warehouse Basic):定义为汇聚层,集中建设通用性维度和指标,降低业务需求开发成本。

DWS(Data Warehouse Service):定义为主题宽表层,对DWD、DWB各信息进行联合整合。

APP:定义为应用层,面向业务需求进行定制开发。

DIM(Dictionary Data Layer):定义为维度表。

TMP:定义为中间层临时表(建议在一定的周期内删除)。

BAK:定义为备份表。

1.2. 模型数据流向

稳定业务按照标准的数据流向进行开发,即ODS–>DWD–>DWB–>DWS–>APP或者ODS–>DWD–>DWB–>APP。

非稳定业务或探索性需求,可以遵循ODS->DWD->APP或者ODS->DWD->DWS->APP两个模型数据流。在保障了数据链路的合理性之后,又在此基础上确认了模型分层引用原则:

· 正常流向:ODS>DWD->DWB->DWS->APP,对于使用频度非常低的表允许DWD->DWS。

· 尽量避免出现DWS宽表中使用DWD又使用(该DWD所归属主题域)DWB的表。

· 同一主题域内对于DWS生成DWS的表,原则上要尽量避免,否则会影响ETL的效率。

· DWB、DWS和APP中禁止直接使用ODS的表, ODS的表只能被DWD引用。

· 禁止出现反向依赖,例如DWS的表依赖APP的表。

2. 规范

模型是整个数仓建设基石,规范是数仓建设的保障。为了避免出现指标重复建设和数据质量差的情况,我们统一按照最详细、可落地的方法进行规范建设。

2.1. 词根

词根是维度和指标管理的基础,划分为普通词根与专有词根,提高词根的易用性和关联性。

· 普通词根:描述事物的最小单元体,如:类型-type。

· 专有词根:具备约定成俗或行业专属的描述体,如:智能咨询-qa。

(词根标准需大家一起收集并统一标准)

2.2. 表命名规范

· 表名、字段名采用一个下划线分隔词根(示例:clienttype -> client_type)。

· 每部分使用小写英文单词,属于通用字段的必须满足通用字段信息的定义,如英文单词过长,可使用英文首字母代替,并加入专有词根。

· 表名、字段名需以字母为开头。

· 表名、字段名最长不超过64个英文字符。

· 优先使用词根中已有关键字(数仓标准配置中的词根标准),定期Review新增命名的不合理性。

· 在表名自定义部分禁止采用非标准的缩写。

2.3.  表命名规则

2.4. 指标命名规范

结合指标的特性以及词根管理规范,将指标进行结构化处理.

A. 基础指标词根,即所有指标必须包含以下基础词根(需大家共同维护):

基础指标词根

英文全称

Hive数据类型

Oracle数据类型

长度

精度

词根

样例

数量

count

Bigint

Number

10

0

cnt

 

比率/占比

ratio

Decimal

Number

10

4

ratio

0.9818

 

 

 

 

 

 

 

 

 

B.业务修饰词,用于描述业务场景的词汇,例如trade-交易。

C.日期修饰词,用于修饰业务发生的时间区间。

时间类型

全称

词根

备注

小时

hour

h

 

daily

d

 

weekly

w

 

month

m

 

quarter

q

 

year

y

 

 

D.聚合修饰词,对结果进行聚集操作。

聚合类型

全称

词根

备注

平均

average

avg

 

周累计

wtd

wtd

本周一截止到当天累计

总量

total

tol

 

标准差

standard deviation

std

 

 

 

E.基础指标,单一的业务修饰词+基础指标词根构建基础指标 ,例如:交易金额:trade_amt。

F.派生指标,多修饰词+基础指标词根构建派生指标。派生指标继承基础指标的特性,例如:安装门店数量:install_poi_cnt。

G.普通指标命名规范,与字段命名规范一致,由词汇转换即可以。

H.日期类型指标命名规范,命名时要遵循:业务修饰词+基础指标词根+日期修饰词。将日期后缀加到名称后面.例如:7日交易金额:trade_amt_7d

 

I.聚合类型指标,命名时要遵循:业务修饰词+基础指标词根+聚合类型+日期修饰词。将累积标记加到名称后面.如:7日平均交易金额:trade_amt_avg_7d

 

3. 模型设计文档

结合模型与规范,形成模型相关设计文档。模型设计文档涉及内容:

· 需求映射关系表:描述实现某一需求时所涉及的ODS、DWD、DWB、DWB层各个表的详细信息。

· 数据流图:画出从ODS层—->DWD层—->DWB—->DWS—->APP层表之间的数据流向关系图,作为数仓的储备知识库和ETL开发向导。

· 物理模型表结构设计:表所有字段、类型、含义等。

· 词根表:将该物理模型表的新词根由审核人员核验后,更新到文档中(需要wiki文档支持)。

· 贴源层库表来源文档:记录数据源的详细信息。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!