数仓知识
一.数据清洗有哪些方面?
1.缺省值处理
对于数据源为空、null的值进行统一处理。
处理方式:删除、替换赋值、标记
2.重复值
由于数据源等原因出现数据重复。
处理方式:按照主键进行去重。 可选择保留时间最新的值
3.格式统一
日期、编码 格式统一
4.异常值检测
例如年龄为负。 选择删除或者修正:替换为合理值或者进行脏数据标记
5.脏数据处理
保留原始数据与清洗后的数据。生成数据清洗的日志报告
二.数据治理
数据治理的目标:保证数据的准确性、完整性、一致性、及时性。
做法:执行完善的质量管理规则、部署质量监控工具、晚上异常数据的闭环处理流程:检测-告警-修复-复盘
包括哪些?
1.元数据管理
构建元数据管理,建立血缘系统,使数据可发现、可追踪、可管理
2.数据安全管理
设置数据敏感级别、设置数据访问权限、对敏感数据脱敏
3.数据标准管理
构建企业统一的数据字典,统一制定 命名规范、编码规范、时间规范、单位规范等。消除字段定义的歧义,制定ETL 实现自动转换非标准数据
4.数据生命周期管理
a.到期数据自动清除
b.冷数据自动归档
c.临时数据自动清理
5.主数据管理MDM
集团各子公司、客户、商品、供应商等统一维护到MDM主数据管理系统中。
主数据包括:客户、产品、供应商、员工、物料等。具有高价值长期稳定的特点。
统一数据标准,制定数据格式和编码规范,进行权限控制,如只有管理员可进行修改,一切修改的操作都需要走工单申请。保证一数一源,一源多用。下游系统中的主数据应只从主数据系统中获取。
准确性:
保证数据真实无误,能反应实际的业务情况
做法:
1.输入校验:
a.在进行数据采集时,设置规则。如手机号码的长度,年龄不得为负数
b.通过正则匹配,枚举值检验 拦截非法值
2.业务规则校验
设置业务规则:比如 退款金额 小于等于 付款金额。 等类似的业务规则校验
3.数据溯源
做好血缘关系,表级别和字段级别的血缘关系图。用于 数据的追溯和快速定位
完整性
数据覆盖完整,关键字段无缺失
做法:
1.强制必填约束
在进行数据库设计时,对于关键要素设置 not null。或者通过etl 过滤掉空值记录
2.数据补全策略
对于一些要素,如果缺失,是否可以用过其他要素进行补全
3.数据监测
监测字段的缺失率。如省份信息的缺失率
设置阈值告警。如字段缺失率的告警,日增数据下降或者上升百分比的告警
3.容错设计
设置数据存储副本,以保证数据的可靠性,防止数据丢失
一致性
数据在各个业务系统保证编码、格式、释义的一致。
1.设置企业级的数据字典。统一时间、日期、编码、单位等
2.主数据管理
客户主数据统一由MDM系统管理
3.跨系统校验
定期对比关键数据。如商品数量需在各个系统中的数据保持一致
4.逻辑规则校验
a.检查外键约束。如订单表中的用户id,一定存在于用户表中
b.验证数据关联性。如订单总价=单价*数量
及时性
保证数据满足时效性的要求
1.优化数据链路
通过优化,缩短etl周期。 比如历史数据和当天数据分开处理
2.监控告警
监控数据处理延迟指标。及时发现问题并改进
3.调整资源
对于高时效性的任务,给予更多的资源。进行资源优先级保障
三.如何进行数仓建设
整个数仓围绕着采存管用来进行建设。即采集、存储、管理和应用。
采集
采集:
采集多方数据源,数据源来自不同业务,不同系统,不同数据格式。需要统一采集到数据仓库中。数据来源众多,采集方式也有多种:总的来分为使用数据同步工具和不使用同步工具。同步工具如datax等,进行数据源和数据目标、以及字段、调度周期等配置,实现自动数据采集,不实用同步工具即使用编程,将数据采集到系统中,如数据源是一个文件。
在进行数据采集的实施中,尤其要注意数据的完整性,保证关键要素不可缺失,以及建立相应的监控,如数据波动阈值告警,字段缺失率告警。
存储
存储:
即将数据在仓库中进行合理高效的储存,为数据查询、数据分析、数据应用等提供有效的支撑。
按照五层架构进行存储,从ods贴源层到dwd聚合层再到ads应用层。按照维度建模进行表的设计。
ods贴源层:尽量存储原始数据,不做过多的处理。
dwd明细层:会进行重要的数据ETL清洗。
包括 缺省值处理:删除、赋值、null设定
时间、日期、单位等格式 的统一
编码、枚举值的统一,如true还是1,男 女 。
数据脱敏、维度退化等
同时进行数据清洗的报告产出,以及对应的脏数据监控告警
dws聚合层:轻度汇总的主题宽表
按照不同的主题,进行表之间的轻度聚合汇总,形成主题宽表,为数据分析提供有力支撑。 如在产品主题域:将产品的属性、价格、交易、库存等整合到一起。
在这一层,要划分不同的主题,充分结合对业务上的理解和业务上的需求,构建主题宽表,主题宽表是面向数据分析的有力支撑。
ads应用层:
高度聚合,直接面向对外输出 数据分析,如报表、可视化大屏、对外api接口输出。 尽量精简,保留必需字段。
管理
即数据治理相关的内容。保证数据的 完整性、准确性、一致性、及时性。包括 元数据管理、数据标准管理、主数据管理、数据生命周期管理、数据安全管理。
1.元数据管理:
搭建企业级别的统一数据字典,使用atlas构建表级别和字段级别的血缘关系
2.数据标准管理:
制定统一的数据标准:
表名(业务域_主题域_自定义_调度周期等)、
字段命名(关键 通用字段 统一命名)
时间、日期、编码、单位等统一
3.数据安全管理
数据脱敏
构建数据安全级别
设置访问权限
4.主数据管理
将主数据统一管理,实现一数一源,一源多用。
5.数据生命周期管理
到期数据自动清除
冷数据自动归档
临时数据定期清除
应用
即面向业务需求:BI报表
指标、可视化展示、数据传输等
四.如何评价数仓建设的好坏
总的来说:数据是否安全可靠可信,关键报表是否能在10秒内稳定打开,用户能否实现较高自由度的自主查询分析。
详细来讲:
1. 从业务上来讲,是否具有业务价值
关键用例的覆盖率、
指标的一致性:在不同报表中指标是否一致
用户体验是否流畅 是否能满足所需
2.模型与架构设计
建模是否合理,主题域是否清晰,是否有统一的数据标准规范。
3.数据质量上
是否能保证数据的 完整性、一致性、及时性、准确性
4.生态与集成
生态是否丰富,是否上下游都有集成,采集、管理、各种检测告警是否完善
5.成本上
成本是否透明 成本与收益是否平衡
五、标签建设
如何进行标签建设?
1.明确标签建设的目标
即确定要做什么标签? 基于什么业务场景?标签有何价值? 确保标签口径一致,可复用。
2.确立标签体系与标准
按照不同的业务域进行划分,例如用户域、产品域。确定业务域下的核心主体,例如用户域中用户信息为核心主体。
制定不同的标签类型:
静态属性:性别、年龄段、地区等
行为标签:浏览数、评论量、点赞量
偏好标签:颜色、价格、品牌、卖点等偏好
...
设置标签分层:一级、二级、三级标签
确定标准:
统一前缀:如 域名_主体_类别_名称_调度周期
建立元数据:标签口径、业务释义、数据类型、取值域、数据量级、调度周期、负责人、版本
3.数据建模与标签开发
根据时效性的要求不同可分为 批处理标签与实时标签。批处理标签调度周期为T+1或者小时级别。实时标签借助kafka spark-streaming flink进行生产。
4.质量与使用检测
质量方面:检测标签的覆盖率(通过业务反馈不断迭代)、打标率、一致性(多个系统中同一标签是否一致)
以及标签的使用率检测,如果使用率过低,则应考虑是有优化的空间,或者是否该废弃,例如新老标签的替代
5.标签自主生成
在标签池达到一定规模的时候,可考虑实现标签自主生成,由子标签生成更多的组合标签。全流程:需求提交--审批--标签生成--标签检测-标签迭代-标签下线的全流程
六.hive优化
1.设置存储和压缩格式
snappy 压缩+ parquet列式存储
2.合理设置map 和 reduce的个数
map个数:hdfs中默认文件块128M 为一个map
reduce:单个reduce的处理量约为256M 根据输出的数据量确定reduce的个数
3.建立 分区分桶表
4.
查询时,只选取需要的列
join时先进行where过滤再join
使用union all + greoup by去重,来代替union,去重更高效
使用in 来代替join
使用count 来代替 count distinct
5.
开启hive中join自动优化
开启map和reduce阶段小文件合并机制
6.选择更换spark引擎
6万+

被折叠的 条评论
为什么被折叠?



