数据中台架构(企业数字化最佳实践)-读书笔记2

数据资产建设

一、数据资产建设概述

1、前期准备

  • 数据资产建设的第一步是正确的数据观:数据资产以价值为依据,以场景化为驱动;能解决场景需求,带来业务价值的数据都可为数据资产。
  • 数据资产建设前期需要详细的调研(业务、数据):需在前期调研上下功夫,明确目标和使用客户是谁、业务痛点是什么、数据有哪些。
  • 数据域设计:对业务的整理理解最终会反映在数据域的设计上,数据域的实现会预先为未来的数据开发提供更充分的支撑。

2、数据资产建设方法论

2.1 识别三种对象(根目录)

       人、物、关系是建设数据资产的基本要素,要将公司、业务中所包含的所有对象的数据表达识别,将之归类到三种对象池中。

  • 人(根目录):泛指客观世界中的人,是主动的一方,是动作的发起方。
  • 物(根目录):泛指客观世界中的物体,一般是动作的承受方。
  • 关系(根目录):通常指一种行为或者行动,关联发起方和承受方,如购买行为、浏览行为、收藏行为、下单行为等。

2.2 建设数据目录体系

  • 按“业务场景和业务流程”组织数据:记录各种业务交易和行为的数据;
  • 按“物”组织数据,统一汇总、记录;
  • 按“人”组织数据,统一汇总、记录。

2.3 设计主题域及类目体系

       当某种对象下标签越来越多时,就需要通过设计类目体系的方法来组织、管理和规划标签,同时将数据按照主题域进行再次汇聚和组织。

3、数据资产建设的步骤

  • 产品选择:数据资产建设需要一个或者一系列软件(数据平台)作为支撑
  • 技术方案设计:与数据资产相关的技术方案设计包括数据平台的部署方式、数据平台与其他应用的关系、数据平台与现有数据仓库的关系等
  • 数据资源了解:通过数据资源盘点工作充分了解企业的数据资源情况。
  • 数据仓库模型设计:通过对企业业务的了解和对数据资源情况的了解构建数据仓库模型,同时基于对企业数据化未来的发展规划选择合适的数据仓库模型设计规范。
  • 数据开发规范制定:要执行明确的和可监控的数据开发规范。
  • 数据仓库建设:要抽取数、清洗数据、进行数据任务开发,完成数据仓库建设。
  • 数据应用支撑:当企业的数据应用需求明确后,要在数据资产层中做数据应用的数据相关部分的而开发工作,同时通过独立应用或数据API形式构建数据应用的展示层。

二、产品选型与技术方案设计

  • 整合当前各类数据仓库产品,构建逻辑统一的数据资产层:统一规划数据资产、构建逻辑完整的数据资产层;保持数据资产在各个数据仓库间的流转,保证每个数据仓库对数据应用的支撑。
  • 推翻当前数据建设成果,依托最新技术平台重新构建:对企业内的数据进行完整规划,构建一体化的数据资产层,使用一套数据工具;这种方案完全基于最新技术平台重新构建数据资产层。虽然投入大,但数据逻辑清晰,后期应用效果好。

三、数据模型设计规范

1、基本设计思路

       数据模型是抽象描述现实业务的一种工具,是通过抽象的实体及实体之间关系的形式表示现实世界中事务相互关系的一种映射。数据模型架构采用分层设计思路,将数据分为ODS(操作数据存储)层、CDM(公共维度模型)层、ADS(应用数据)层。

ODS层从业务系统过渡到数据仓库核心层的操作数据的存储层,ODS层的数据结构与业务系统基本保持一致,同时不做长时间的数据存储。
CDM层DWD层维度和事实属性、度量信息融合所生成的明细宽表层,目的是为后续的DWS层提供基础,也可在DWS层无法支撑需求时直接为ADS层提供数据
DWS层面向分析主题建模,目的是为ADS层提供足够的灵活性和扩展性的基础
ADS层包括对数据结果的加工整合,以满足数据应用的最终使用需要。

2、主题域设计

       主题域的设计涉及企业核心业务系统的业务过程,需要对企业核心业务系统的业务流与数据流进行详细的调研和梳理。

3、数据模型开发规范

       数据模型开发的基本原则如下:

  • 数据要干净、有效:保证进入数据模型的数据是经过清洗和规范的
  • 模型可扩展:核心模型要尽可能保持稳定,经常变化的业务可以通过扩展模型进行分离。
  • 禁止逆向调用:不能出现ods层调用cmd层和ads层的数据
  • 数据可回滚:数据模型多次重跑的结果数据必须保持一致
  • 成本控制:在构建数据模型时,要充分考虑计算和存储资源建的平衡

4、数据表的命名规范

  • ods层数据表命名规范:ods_{数据源}_{原始表名}
  • dwd层数据表命名规范:dwd_{数据域缩写}_{业务过程缩写}_{刷新周期标识}_{表名}
  • dws层数据表命名规范:dws_{数据域缩写}_{业务过程缩写}_{刷新周期标识}_{表名}
  • 维表命名规范:dim_{维表定义}
  • ads层数据表命名规范:ads_{数据域缩写}_{业务应用缩写}_{刷新周期标识}_{表名}

5、数据表的设计策略

5.1 DWD层数据表设计策略

  • 根据业务过程来定义并建立事实表,在事实表内描述业务过程对应的原子粒度的事物信息;
  • 通过元数据系统查询判断当前模型对应业务过程是否已有dwd层事实表,吧相同业务过程的度量指标维护在同一个基础层模型表内;
  • dwd层大维度表上的常用统计属性可以冗余到事实表中,以便引用和关联。

5.2 DWS层数据表设计策略

  • 确定dwd层模型所对应的维度和度量信息;
  • 确定对度量进行的衍生计算方式,如求和统计、去重统计;
  • 确定数据的刷新周期。

四、数据开发规范及数据开发

1、数据开发规范

  • 代码书写规范
代码结构规范
  • 所有代码应放入对应的目录中,如dwd层应放入DWD目录,且以dwd为命名首字母
  • 不允许tmp、test任务出现在目录结构中
  • 如需创建tmp、test任务,不可配置周期调度任务,使用完后立即删除
  • 代码最上面部门,要添加任务名称、开发者、创建时间、任务描述等注释
  • 在代码中间部分,需添加目录表的create table if not exists语句,以确保表存在或被顺利构建。
  • 在代码下面部分,需要添加insert overwrite语句,确保数据真正插入。
任务命名规范
  • 任务需要以产出表的名称命名
  • 中间表,以_mid结尾
  • 如任务业务逻辑复杂,需要用到子任务,那么要将任务和子任务放到同一个文件夹下。
代码格式统一SQL语句中的关键字用大写,其余的语句用小写
时间格式统一
  • 统一数据插入时间:yyyy-mm-dd hh:mi:ss
  • 统一数据统计日期:yyyymmdd
  • 统一带小时的时间格式:yyyy-mm-dd hh:mi:ss
  • 统一日期格式:yyyymmdd

函数使用建议

对于能封装成函数来使用的复杂逻辑,尽量使用函数
代码开发建议
  • 在表关联中尽量合理使用子查询完成数据预处理,然后在进行关联;
  • 不使用select * 语句
  • 子查询只查询必需的列
  • 如脚本需要支撑重跑,那么注意覆盖原有数据
  • 代码要有缩进规范,要便于阅读理解,要有关键注释
周期调度配置
  • 支持的调度周期:天、周、月、分钟、小时
  • 调度规则:任务实例是否能完成需要看以下条件(上游任务实例是否运行成功;是否已经到了任务实例的设定时间;当前调度资源是否充足)
  • 调度周期和调度时间参数配合使用
动态分区使用如果数据延迟,那需要刷新以前的分区数据,可使用动态分区(动态分区指在插入数据时不指定具体分区,而按查询出来的数据判断应该插入哪个分区)
  • 任务发布规范
任务发布前提
  • 已配置好周期调度
  • 已配置好上游依赖
  • 已配置好相应的参数
  • 任务测试运行通过
  • 已测试并验证过数据产出的正确性
任务发布流程数据运维人员需将数据开发人员提交的作业发布到生产环境,并在生成环境里运行成功,要尽量防止出现生产故障。
  • 数据质量核查规范

       检查数据行数是否符合预期、检查数据不可为空的列是否有空值、检查是否有数据不符合规范的格式、检查表的主键值是否唯一、将检查规则脚本配置为周期调度任务,对每日周期性任务的数据产出进行数据质量的检查。

2、数据采集

       数据采集是指从不同数据存放介质中奖数据同步至数据中台(即数据集成、数据同步、数据上云)

2.1 准备工作

  • 数据源分类:确定数据源种类,并根据数据的及时性要求,确定采集的技术组件;
  • 确定网络信息和环境信息:根据采集方案,对现有网络和环境进行必要改造、优化;
  • 调研数据内容:调研数据全量大小、增量大小、分布情况;
  • 调研数据质量:调研数据的增量标记、索引、主键信息等;
  • 调研数据范围:调研需要集成的数据范围,筛选出需要集成到数据中台的相关数据,一般以支撑业务流程或带业务属性的数据为主。

2.2 技术架构

数据采集方式及支持引擎数据库离线同步数据库、离线、定时、批量离线计算引擎
数据库实时同步数据库、实时、流式、订阅流计算引擎
日志类数据同步日志、实时、流式、订阅离线计算引擎+流计算引擎

3、数据开发

       数据开发是根据数据业务需求,利用大数据开发平台和大数据开发技术,将业务需求构建为数据模型,并通过开发任务支撑数据模型,最终达到满足业务需求的过程。常见的大数据开发工具提供6种对象,如下:

  • 任务:对不同任务类型(如sql、shell、python等)任务配置,包括周期属性、依赖关系、人物参数等。
  • 脚本:数据开发辅助对象,一般用于临时性分析,不包含周期属性和依赖关系;
  • 资源:数据开发中使用的资源,如IP映射库、引用的第三方jar包
  • 函数:自定义函数、系统函数分类介绍和使用说明
  • 流程:任务和任务之间的依赖关系
  • 工作流:多个任务之间形成的关系图,用来解决某一个子业务和模块的全开发过程。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值