这是关于在每个 dwh 阶段识别数据完整性问题系列中的第四个博客。
在研究数据暂存过程中的数据质量问题之前, 我们需要了解 etl 系统如何处理数据拒绝、替换、清理和富集。为确保成功测试数据质量, 请包括尽可能多的数据方案。通常, 数据质量规则是在设计过程中定义的。例如:
- 拒绝要在数字字段中加载的非数字数据。
- 加载包含完整内容的字段;即数据字段不会按照数据映射中的指定进行中继修剪。
- 确保不会加载重复的记录或字段内容。
- 如果十进制字段具有非数字数据, 则替换 null。
- 如有必要, 根据邮政编码验证并更正 “城市/状态字段”。
- 确保数据完整性约束得到正确处理 (、拒绝、替换等)。
对于另一个示例, 请考虑以下业务规则: “如果在查找表中找不到匹配项, 则仍要加载它, 但在错误 log/报告中报告错误。根据所测试的应用程序的数据质量规则, 要测试的方案可能包括 null 键值、源数据中的重复记录以及字段中的无效数据类型 (例如, 十进制字段中的字母字符)。
为了提高数据仓库的正确性, 可以在数据暂存区域中执行数据清理过程。暂存和 dwh 负载阶段被认为是数据仓库中最关键的一点, 因为数据质量工作是有全部责任的。它是从源或审核和清理数据问题中验证数据质量的主要 etl 阶段。在暂存和后续 etl 期间可能导致数据质量问题的其他因素:
- 各种数据源使用的冲突业务规则。
- 在更新 dwh 时, 无法按时或在分配的时间间隔内计划数据提取。
- 无法捕获源文件中的所有更改 (例如, 插入、更新、删除)。
- 缺乏有效和集中的源元数据存储库。
- etl 代码中缓慢变化维度 (scd) 的误读。
- etl 进程中 null 值的转换或替换值中的错误。
- etl 工具中缺乏自动化或有效的单元测试设施。
- etl 代码中缺乏有效的错误报告、验证和元数据更新。
- 不适当的 etl 过程的数据插入/更新/删除函数。
- etl 过程中的数据丢失 (被拒绝的记录、删除的字段)。
- 无法在不丢失数据的情况下从检查点重新启动 etl 进程。
- etl 代码中缺乏自动有效的数据缺陷和校正功能。
- 无法合并配置文件、清理和 etl 工具来比较和协调数据和关联的元数据。
- 同一类型实体的主密钥策略不一致 (例如, 一个表使用 “社会保障号” 作为密钥存储客户信息, 另一个表使用 “客户 id” 作为密钥, 另一个表使用代理键)。
与业务用户和技术设计人员一起查看详细的测试方案始终很重要, 以确保每个人都同意。应用于数据的数据质量规则通常在应用程序投入生产后对用户不可见;用户将只看到在数据仓库中加载的内容。因此, 必须确保向用户报告对无效数据所做的操作以进行验证。这些数据质量报告提供了宝贵的信息, 有时会发现系统错误。