数仓规划原则
基本原则遵循阿里三One原则,OneEntity,OneData,OneService,遇到矛盾的取舍,秉承推动数据中台实现企业数据拉通,指标统一最有利的方向做决策。
主要考虑的要素:
- 原生数据:基础数据统一,唯一出口;
- 维度数据:分析维度统一,主数据统一;
- 权限管理:便于按部门分配使用权限;
- 组织架构:适应组织架构多变;
- 指标通用:在指标理解和通用性方面,做平衡;
几个问题考虑背景
为什么不采用垂直按部门分模式的方式?
虽然这种模式以每个部门划分schema,非常有利于权限控制, 每个shcema里面再分ods……ads,权限管理简单了,但是会带来后期指标难以统一,全局取数困难的问题。又是各种烟囱林立,所以从大的原则出发不能采取这种模式。
为什么不采用一个公共schema里面按表名ods-dwd-dws进行划分,ads按模式划分?
虽然这种模式开发变得简单了,而且公共的部分都在一个schema里面。这种模式不利于权限控制,同时一个schema里面存在太多表,实际使用和维护的时候也不方便。
为什么ads命名没有采取带内涵的,如:yxb(营销部)命名?
常规做法确实按简拼或者英文命名比较多,但是从考虑组织架构调整,人员更替带来的理解问题数字编码更不容易带来歧义。初期适应成本会高一点点,但是对未来的扩展性要好很多。比如:yx划给大运营管了,或者某个部门就撤销了,但是数据还是需要用。数字会有更好的兼容性。
数仓分层架构
ODS层
数据引入层ODS(Operational Data Store)
ods层划一个独立模式(Schema),汇集所有子系统进来的原始数据,数据结构和源系统数据尽量保持一致,需注意数据类型,不一定保持一致,比如:money的兼容性问题。
- 表名:通常采用schema或者表名前缀增加来源系统标识区分,需要注意的是前缀最好带有系统厂家标识。销售系统,这种标识就不好,因为销售系统在企业里面可能有多个。
- 字段名:完全保持和业务系统一抹一样。
DIM层
公共维度模型层DIM(Common Data Model)
dim层划一个独立模式(Schema),数据核心来源于ods的主数据,是维度数据,DIM的数据结构命名规则标准不遵循业务系统,由数仓统一构建。
- 表名:通常采用schema或者dim_来区分;
- 字段名:统一称为公司规范;
DWD层
明细数据层DWD(Data Warehouse Detail)
dwd层划一个独立模式(Schema),数据核心来源于ods的事实和维度数据关联,实现对业务数据明细还原,表命名规则数仓统一,字段命名尽量和业务系统一致。通过企业的业务活动事件构建数据模型。基于具体业务事件的特点,构建最细粒度的明细数据表。您可以结合企业的数据使用特点,将明细数据表的某些重要维度属性字段适当冗余,即宽表化处理。同时,也可以减少明细数据表及维度表的关联,提高明细表的易用性。
- 业务还原比如数据回溯,union不同来源的数据相同域的数据。
- 日期字段全部统一规范。
- 维度信息全部统一。
- 按照数仓总线进行构建。
- 常用的表进行关联。
for_dws层
指标口径层,也叫DWM中间层,对应原子指标,是早见云数创新的一层,目的是在没有系统的情况下,管理指标口径。因为dws需要按对象拉通,如果全部在dws处理,dws(周期、对象的多表都需要复用)会变得很复杂。for_dws细化到最细颗粒度,以解决数据口径核对的问题。
- case when 和where口径的核心写法在for_dws
- 数值型字段统一空值表示,比如0;
DWS层
汇总数据层DWS(Data Warehouse Summary)
dws层划一个独立模式(Schema),核心是要对for_dws的数据进行打通和汇总,定义派生指标口径,是数仓建设口径统一的关键层。数据表,字段命名规则全局统一,是数据构建的关键公共层。
- 以对象为主线进行所有指标关联。
- 按维度进行汇总。
-
ADS00层
应用数据层ADS(Application Data Service)
这一层是针对决策层应用的,数据范围最为宽广,表命名规则可以灵活,字段命名规则全局统一。 老板有关的
-
ADS**层
应用数据层ADS(Application Data Service)
这一层是这对部门应用的专业层,主要包含条线需要用的数据。表命名规则可以灵活,字段命名规则全局统一。 部门级的
- 一般为视图,除非性能问题否则不做实体
数据表命名规则
全局命名规则
表、视图、储存过程等均采取:
- 全部采取小写字母和数字;
- 连接符统一为“_”;
- 必须字母开头;
- 储存过程规则:
<函数名称>,以fn作为前缀; - 实时表规则:<表名>_
,以t0作为后缀; - 所有表都必须包含技术名和业务名;
ODS层命名规则
这一层维护的主要场景是面向业务系统做数据抽取,所以最好和业务系统相对应保持一致。
表名规则:
规则举例:ods_xsxt_s_contract,ods_xsxt2_s_hetong,ods_xsxt_s_contract_t0(代表实时数据)
为什么要用1位流水号,主要是两个原因:一是同一个系统可能会更换,比如SAP销售系统换成明源销售系统;二是大型企业不排除同一个集团有两套销售系统。当出现重复的时候从2开始命名;
字段名规则:完全和子系统保持一致。
DIM层命名规则
这一层是使用频率最高的,通用性最高的数据,也是不容易重复的层,所以尽量以英文名称进行命名。
表名规则:
规则举例:
dim_yetai_05,五级业态
dim_yetai_04,四级业态
dim_yetai_03,三级业态
dim_yetai_02,二级业态
dim_yetai_01,一级业态
代码规范,严格执行
| 代码全拼 | 中文名 | 示例 |
|---|---|---|
| zuzhi | 组织 | 台易集团 |
| faren | 法人组织 | 上海台易网络科技有限公司 |
| bumen | 费用组织 | 集团-本部-营销中心-销售部 |
| yuangong | 公司员工 | 签订劳动合同的员工 |
| guyuan | 所有雇员 | 包括合同员工,外包员工,乙方驻场员工等 |
| dikuai | 地块 | 人民北路1#地块 |
| xiangmu | 项目 | 台易美好生活项目 |
| fenqi | 项目分期 | 台易美好生活项目-一期 |
| loudong | 楼栋 | 台易美好生活项目-一期-1号楼 |
| fangyuan | 房源 | 台易美好生活项目-一期-1号楼-8楼-801 |
| yetai | 产品类型 | 住宅-高层 |
| kehu | 客户 | 所有客户,意向客户,成交客户,租户 |
| yezhu | 业主 | 一手业主,二手业主 |
| gongyingshang | 供应商 |
DWD层命名规则
命名主要解决易于使用和权限分配的问题,整体思路上借鉴平衡积分卡的分类方法,涵盖比较全面。常见的命名规范通常只考虑了业务流程,没有考虑到全局不适合数仓建设。平衡积分卡一共有四个层面财务、客户、内部运营、学习与成长。
表名规则:
规则举例:dwd_yx_qianyue_di,dwd_yx_qianyue_df
明细代码:di:事务型,df:周期快照型
代码规范,严格执行
| 序号 | 数据域代码 | 中文名 | 示例 |
|---|---|---|---|
| 1 | tz | 投资管理 | |
| 2 | cp | 产品设计 | |
| 3 | gc | 工程建造 | |
| 4 | cb | 成本管理 | |
| 5 | zc | 招采管理 | |
| 6 | yy | 运营管理 | |
| 7 | yx | 营销管理 | dwd_yx_qianyue_di,dwd_yx_qianyue_df |
| 8 | kf | 客户服务 | |
| 9 | cw | 财务管理 | |
| 10 | kh | 客户管理 | |
| 11 | hb | 伙伴管理 | |
| 12 | rl | 人力行政 | |
| 13 | xx | 信息流程 | |
| 14 | fx | 风险管理 | |
| 15 | wb | 外部信息 |
DWS层命名规则
DWS将相同统计周期+统计粒度的指标集成到一起形成大宽表,因此DWS表名由统计周期与统计粒度组成。
指标表命名规则:
指标表规则举例:dws_yx_zx_xiangmu_yetai_05,最新项目5级业态汇总表
ADS层命名规则
表名规则:
规则举例:ads_customer,ads_sales01
其它命名规范
针对外部表,其它临时表,统一挂到独立的模式里面统一命名为:ext。
针对外部表,其它临时表,ext的外部表,和ods表名一致,实体文件名三者保持一致。
字段命名规则
DIM维度字段命名规则
命名规则:<词组>_<词组>
规则举例:xiangmu_mc,项目名称 ;xiangmu_bm,项目编码
| 代码全拼 | 中文名 | 示例 |
|---|---|---|
| zuzhi_01_mc | 一级组织 | 如:集团 |
| zuzhi_02_mc | 二级组织 | 如:区域集团 |
| zuzhi_03_mc | 三级组织 | 如:大区 |
| zuzhi_04_mc | 四级组织 | 如:城市公司 |
| zuzhi_05_mc | 五级组织 | 如:片区 |
| zuzhi_06_mc | 六级组织 | 预留 |
原子指标命名规则
命名规则:<业务动作>_<度量>
规则示例:qianyue_je
代码规范,严格执行
| 序号 | 度量 | 代码标识 | 备注 |
|---|---|---|---|
| 01 | 金额 | je | 示例:年度项目签约金额 |
| 02 | 面积 | mj | 示例:年度项目签约面积 |
| 03 | 套数 | ts | 示例:年度项目签约套数 |
| 04 | 率 | lv | 示例:年度项目签约回款率 |
| 05 | 比 | bi | 示例:年度项目供销比 |
| 06 | 日期 | rq | 示例:计划开工日期 |
| 07 | 天数 | tian | 示例:逾期天数 |
| 08 | 月数 | yue | 示例:库龄月数 |
| 09 | 单价 | dj | 示例:认购单价 |
派生指标命名规则
命名规则:<统计周期><统计粒度><业务限定>_<原子指标>
规则举例:nd_jt_qianyue_je
统计周期代码规范,严格执行
| 序号 | 统计周期 | 代码标识 | 备注 |
|---|---|---|---|
| 01 | 年度 | nd | 示例:年度项目签约金额、年度项目回款金额 |
| 02 | 年度期初 | nd_qc | 示例:年度项目期初库存 |
| 03 | 年度期末 | nd_qm | 示例:年度项目期末库存 |
| 04 | 季度 | jd | 示例:季度项目签约金额、季度项目回款金额 |
| 05 | 季度期初 | jd_qc | 示例:季度期初项目库存 |
| 06 | 季度期末 | jd_qm | 示例:季度期末项目库存 |
| 07 | 月度 | yd | 示例:月度项目签约金额、月度项目回款金额 |
| 08 | 月度期初 | yd_qc | 示例:月度期初项目库存 |
| 09 | 月度期末 | yd_qm | 示例:月度期末项目库存 |
| 10 | 单周 | dz | 示例:单周项目来访人数 |
| 11 | 单日 | dr | 示例:单日集团回款金额 |
| 12 | 年初至统计月 | yd_nc | 示例:年初至统计月项目计划供应金额 |
| 13 | 统计月至年末 | yd_nm | 示例:统计月至年末项目计划供应金额 |
| 14 | 最新 | zx | 示例:最新项目动态货值金额 |
| 15 | 历史至今 | lj | 示例:历史至今项目签约金额 |
附录:
阿里云维度表模型图参考

中国会计科目对照表参考
中英文对照最新会计科目 北京市审计局发布
