数据仓库架构

数仓架构

老生常谈

一个数据仓库是一个统一的架构下组织不同数据源的异类集合。有两种构建数据仓库的方法:解释自上而下的方法和自下而上的方法。

1.自上而下的方法:



基本组件讨论如下:

  1. 外部源–
    外部源是从中收集数据的源,与数据类型无关。数据也可以是结构化,半结构化和非结构化的。
  2. 阶段区域–
    由于从外部源提取的数据没有遵循特定的格式,因此需要验证此数据以加载到数据仓库中。为此,建议使用ETL工具。
    • E(提取):从外部数据源提取数据。
    • T(转换):数据转换为标准格式。
    • L(加载):将数据转换为标准格式后,将其加载到数据仓库中。
  3. 数据仓库–
    清除数据后,将其作为中央存储库存储在数据仓库中。它实际上存储元数据,而实际数据存储在数据集市中。请注意,数据仓库以这种自顶向下的方法以最纯粹的形式存储数据。
  4. 数据
    集市数据集市也是存储组件的一部分。它存储由单个权限处理的组织特定功能的信息。一个组织中取决于功能的数量可以有很多。我们也可以说数据集市包含存储在数据仓库中的数据子集。
  5. 数据挖掘–
    分析数据仓库中存在的大数据的实践是数据挖掘。它用于借助数据挖掘算法查找数据库或数据仓库中存在的隐藏模式。

    Inmon将这种方法定义为–数据仓库作为整个组织的中央存储库,并在创建完整的数据仓库之后从中创建数据集市。 

2.自下而上的方法:

  1. 首先,从外部来源提取数据(与自顶向下方法相同)。
  2. 然后,数据通过暂存区域(如上所述)并装入数据集市而不是数据仓库。首先创建数据集市并提供报告功能。它涉及单个业务领域。
  3. 然后将这些数据集市集成到数据仓库中。

Kinball提供了这种方法,因为–首先创建了数据集市,并在创建完整的数据集市之后为分析提供了一个简单的视图并创建了数据仓库。

数仓数据架构

数仓各层定义
ODS:Operational Data Store,操作数据层,在结构上其与源系统的增量或者全量数据基本保持一致。它相当于一个数据准备区,同时又承担着基础数据的记录以及历史变化。
CDM:Common Data Model,公共维度模型层,又细分为DWD和DWS。它的主要作用是完成数据加工与整合、建立一致性的维度、构建可复用的面向分析和统计的明细事实表以及汇总公共粒度的指标。
DWD:Data Warehouse Detail,明细数据层。
DWS:Data Warehouse Summary,汇总数据层。
ADS:Application Data Service,应用数据层。
备注:手工表 手工表是手工维护的表, 手工初始化一次之后, 一般不会自动改变, 后面变更,也是手工来维护,一般放在dwd层,取名规范: dwd_业务域_manual_xxx

数仓规范

通用命名规范
1、目前主流的命名方法大体分类:大驼峰命名法 (camelCase) 和小驼峰命名法 (snake_case),
本规范要求使用小驼峰命名法 (snake_case),统一为小写字符,单词之间使用下划线隔开,贴源层字段可以不遵守,字段命名和源系统保持一致。
2、单词长度不超过 64 个字符,字段或者表命名小于 6 级
3、命名尽量做到见名知意,言简意赅,尽量使用英文以及符合业界要求的字符,特殊情况下可以使用汉语拼音缩写
4、尽量避免使用关键字,确实需要使用关键字情况下使用“`”转义
5、优先使用词根管理规范中已有的关键字,定期维护词根规范表
6、定期 review 新增命名使用的字段规范性

数仓各层表命名规范
ODS  [业务库名]{业务库原始表名}[ delta] 
dwd {主题缩写}{业务过程缩写}[自定义标签缩写】{单分区增量、全量标识}
DWS  {数据域缩写}[ 自定义标签缩写]{刷新周期标识} 
ADS  [业务应用缩写][ 维度][ 自定义标签缩写]{刷新周期标识}
DIM dim_{维度定义}

表后缀规范
日 d day 每天
 周 W week 每周
 月 m month 每月
 年  year 每年
 小时 h hour 每小时
 半小时 hh halfhour 每半小时

抽取方式 字段 字段全称
 全量 f full
 增量 i incremental
 拉链 C chain

后缀会出现 _di 或者 _df,这里的 i 和 f 表示增量和全量


字段级规范
新增指标的命名参考已有字段命名方式,避免出现同一个字段,10个人有10个命名方法。
字段分类包括:明细,维度,指标,时间,代码,标志位,命名规范如下:
id结尾表示编号,部分维度编号对应含义需关联数仓相应维度表获取含义;
name结尾表示名称,多与id对应,解释其含义,独立的以name结尾的字段;
code结尾表示代码字段,对应含义部分可在文档直接查看,部分需关联数仓代码表获取;
time结尾表示时间字段,格式为yyyy-mm-dd hh:mi:ss,从源系统获取,不作处理;
amt结尾表示金额,都为系统相应交易金额;
is_开头表示标志字段,此字段只有0,1,含义:1是,0否;
除以上规范字段,其他字段根据中文含义对应生成英文字段,多为一些属性字段,意义不大。

 

 

posted @ 2020-04-27 14:48  zzuCharles  阅读(1681)  评论(0编辑  收藏  举报