
资源介绍
本书围绕数据契约(Data Contracts)展开,旨在帮助开发者和工程师掌握数据契约相关知识,以提高效率、统一数据理解并支持数据治理。书中深入探讨了数据契约的定义、 benefits、实践案例、相关标准格式以及如何确保数据质量等内容,为在数据密集型工作中有效应用数据契约提供了全面指导。
主要章节内容
1. 数据密集型工作的挑战
数据、信息与决策制定:信息对决策至关重要,但人们在决策时易依赖启发式和偏见。数据是信息的结构化分解和封装,若缺乏上下文(元数据),难以满足深入探究需求,常出现 “数据丰富但不可信” 的情况。
数据生产者、消费者与数据管理:数据生产者是产生数据的主体,数据消费者是使用数据的主体,二者关系缺乏管理会带来诸多问题,如数据生产者可能不清楚数据价值,数据存在多个版本且缺乏协调等。
数据作为产品而非副产品:传统将数据视为副产品的观点存在缺陷,“数据作为产品” 理念主张将数据管理和所有权交给熟悉数据生成活动的人,结合 “左移” 理念,让数据管理技能靠近数据源头。产品思维的核心原则包括以客户为中心、持续发现、实践学习和跨职能协作。
2. 数据契约的益处
数据契约的定义:是数据生成者和消费者之间的约定接口,规定了数据相关期望、治理方式等,其结构具有层次性,包含概述、限制、位置、数据模型等组成部分。
数据契约支持的能力:包括数据来源的变更管理、数据质量的持续验证、支持数据治理工作、达成数据含义共识、为数据生产者和消费者生成代码、文档和知识共享以及为人工智能工作提供额外上下文等。
数据契约的原则:包括演进与变化(适应数据反映的现实世界变化)、结构化文档(便于系统处理和自动化任务)、不仅限于模式(提供数据相关的额外上下文)。
相关概念和实践:与数据字典、API 规范、数据目录、数据网格等既有联系又有区别,数据契约可看作是它们的补充或扩展。
定义和执行数据契约的流程与架构:流程包括识别参与方、理解目的和需求等;架构涵盖数据契约仓库、编排、数据产品以及告警、监控和可观测性等部分。
3. 通过零售客户营销细分用例探索参考实现
案例研究介绍:以零售商的实体店和在线店为背景,涉及商店技术团队(数据生产者)和营销团队(数据消费者),营销团队需基于 RFM 模型进行客户细分,依赖商店技术团队的客户交易数据。
RFM 细分探索:RFM 分析基于客户的最近消费、消费频率和消费金额对客户进行排名和分组,有助于制定针对性营销策略。
数据消费的实现选项:包括直接提供数据源访问(需谨慎,可能导致紧耦合和资源竞争)、写入数据消费者控制的接口(需谨慎,可能增加责任和调试难度)、写入专用数据存储(推荐,可避免前两种选项的问题)。
未能对齐的问题:由于团队对数据理解存在偏差,如列名修改、对数据细节存在疑问等,导致工作进展不顺利。
作为边界间接口的数据契约:数据契约可作为不同团队和数据交换间的接口,明确交换点、协议及规则,并在出现问题时重新审视和修订协议。
4. 定义和描述数据
管理定义:需解决定义和修订理解的易用性与所捕获理解对工作的相关性之间的矛盾,可通过让主题专家易于贡献、减少查阅和修改的内容数量、将理解验证融入设计等方式改善。
为提高信心提供上下文:包括变更管理和演进(跟踪理解和结构的变化)、责任方(数据生产者等的联系方式)、语义(数据与现实世界的关系)、分类(数据的敏感级别等)、服务级别目标(数据的质量、可用性等目标)等多方面信息。
不同类型数据的考虑因素:对空值(需明确是否有效及表示方式)、时间数据类型(注意格式和时区)、布尔值(注意二元思维的局限性)、数字(考虑精度、单位等)、文本(需明确结构和模式)等不同类型数据需特殊关注。
捕获定义:以案例研究为例,可在电子表格中捕获数据相关属性,如列名、业务名称等,虽可能存在不足,但能为团队讨论提供基础。
5. 数据契约的开放格式和标准
在工作流中使用数据契约:需进行数据契约验证和数据验证,验证应尽早进行,可通过测试模拟数据、检测变更等方式实现。
数据契约的开放格式和标准概述:包括 JSON Schema、OpenAPI Specification、dbt models、Soda、Open Data Contract Standard、Data Product Descriptor Specification、datacontract.com 等,各有特点和适用场景。
制作自己的数据契约格式:在现有选项不适合技术栈、存在不可接受的权衡或命名约定不兼容时可考虑,但需注意维护成本和知识传承等问题。
数据契约开放格式和标准的比较:从工具支持、可扩展性、指导性等方面比较,其中 datacontract.com 在工具支持等方面有优势,其他选项也各有适用情况。
工具和制品生成:数据契约可用于数据质量测试、变更检测、示例测试、测试数据生成、数据库模式创建和迁移、文档和代码生成、基础设施即代码生成等。
6. 确保质量和编纂共识
建立共识:在详细规定数据规则前,应先明确数据含义,可通过举例(作为早期低 effort 的测试形式)和数据建模(简化复杂信息)等方式,同时需处理实体的多种定义。
阐述数据质量:将数据质量视为 “数据体验”,包括准确性、一致性、完整性等多个维度,可分为内在维度(独立于使用场景)和外在维度(依赖使用场景)。
衡量数据质量:内在维度可由数据生产者独立测量,外在维度需数据消费者输入,可通过分析现有数据集的使用情况、考虑数据错误的后果等方式确定数据重要性并进行测量。
执行数据质量:通过设置环境、创作和迭代数据契约、添加约束和质量检查等步骤实现,可使用 Data Contract CLI 等工具进行验证和测试。
技术要求:需 Python 3.11 或更高版本、能编辑 YAML 的文本编辑器等,并提供了相关代码示例和操作步骤。
通过以上内容,本书全面阐述了数据契约的相关知识和实践方法,为在实际工作中有效应用数据契约提供了详细指导。