注意:以下翻译的准确性尚未经过验证。这是使用 AIP ↗ 从原始英文文本进行的机器翻译。
本页面概述了在 Foundry 中使用项目构建数据管道的推荐方式,以实现:
此外,我们还介绍了在生产环境中成功管理管道所需的角色和职责。
这提供了各个管道阶段的概念性概述,以及每个阶段的作用。有关如何在 Foundry 中设置此结构的分步指南,请参考平台安全文档中的保护数据基础。
这些阶段定义了构成有序管道的项目的逻辑分离。我们将在下面更详细地介绍每个阶段。
数据源项目
。数据源项目
,定义每个原始数据集的基本清理步骤并应用一致的模式。数据源项目
中导入数据集并进行变换以生成规范、可重用的数据集。变换项目
中导入数据集并进行变换,以生成表示离散操作对象的规范表。单个 Ontology 项目通常会将相关的对象集组合在一起,以便于管理。每个管道阶段都是一个独立的单元,输出的数据集可供下游项目导入并用于其他应用案例、管道开发、分析等。在每个项目中,负责的团队除了实施变换步骤外,还应该管理其输出的稳定性和完整性。这涉及到管理搭建计划、配置和监控数据健康检查,以及在相关情况下编写单元测试或其他数据完整性测试。
以下部分将详细介绍每种下游项目类型,以便遵循管道中的数据流。在设计管道的过程中,建议从 Ontology 层开始反向推导,以确定需要连接的源系统和需要实现的管道变换。
项目在 Foundry 中提供了一种组织数据和代码的方式。它们是管理个人和团队在特定工作范围内协作时的访问和权限的主要单位。此外,项目还提供功能来捕获和共享元数据,例如项目活动的事件日志、项目文档的空间以及项目资源消耗和计算指标。
当考虑什么构成一个好的项目时,可以类比什么构成一个好的微服务:明确的目的、清晰的输出数据集/API 供下游依赖使用、由足够小的人员集体拥有,以便他们能够有效地进行协调并为项目管理设定自己的标准。
在决定是创建一个新项目还是在现有项目中搭建时,请考虑:
在 Foundry 中流经管道的数据通常来自外部源系统。数据连接服务提供了一个管理界面,用于注册源系统。对于每个源系统,配置一个或多个独立同步以将数据落地到数据源项目中的原始
数据集中。
为了配置源系统或同步,通常需要代理管理员配置数据连接代理。每个代理应存储在仅代理管理员可访问的专用项目中。
管理新数据源的连接是一个多学科的工作,需要数据源所有者、代理管理员和数据源开发人员的协作,尽管通常需要合规/法律官员批准将数据从源系统移出到新环境中。
一旦配置了源系统,数据源开发人员就可以独立工作来配置单个同步。这大大减少了团队之间的往返,确保连接新系统的工作量低且一次性。
每个连接的一个关键考虑因素是选择SNAPSHOT
(每次同步时替换当前数据)和APPEND
(每次同步时累加到现有数据)之间的选择。要更全面地了解这些概念以及在增量管道部分中创建高效、性能良好的管道的影响。
有关数据源和同步的原则、架构和配置的更多信息,请访问数据连接文档。
有关监控连接并确保流入管道的数据准确且符合预期的更多想法,请查看维护管道部分。
每个源系统应在平台内的匹配项目中落地数据。通常的模式是尽可能以“原始”格式落地每个同步的数据。在项目_代码库_中定义为“干净”数据集的变换步骤。
建立这种每个数据源一个项目的模型有许多便利的好处:
在每个数据源项目中,目标是为组织中的广泛用户、应用案例和管道准备同步的数据进行消费。
输出数据集及其模式应被视为 API,即目标是使其在逻辑上有序并随时间保持稳定,因为数据源项目的输出数据集是所有下游工作的基础。输出应与源表或文件 1:1 映射;数据集中的每一行应与源系统中的一行直接匹配。
为此,原始 → 干净变换的一些典型目标包括:
即使源系统提供列数据类型信息,有时也需要以 字符串
类型引入值。特别注意 日期
、日期时间
和 时间戳
类型,这些类型在源系统中通常以非标准格式表示,数字类型有时也会出现问题。如果这些类型在格式上确实不可靠,从源系统导入为 字符串
类型提供了实施更稳健解析和定义处理格式错误值或删除不可用或重复行的逻辑的选项。
除了这些程序步骤,干净的数据集应严谨地记录。数据集的定性描述、源系统来源、适当的联系人和管理协议以及相关情况下的列元数据描述数据特征将确保未来的开发人员适当地使用数据。
虽然每个数据源都有其独特性,但清理和准备源系统的步骤通常有共同步骤,例如解析原始字符串值为给定类型和处理错误。当数据源具有许多类似的清理变换时,最佳实践是用Python定义一个库,以提供一组一致的工具并减少重复代码。
/raw
:用于来自数据连接同步的数据集。/processed
(可选):文件级别的变换,用于从非表格文件创建表格数据。/clean
:用于与 /raw
中的数据集 1:1 映射但应用了清理步骤的数据集。/analysis
:用于创建以测试或记录清理变换并展示数据形态的资源。/scratchpad
:在构建或测试清理变换过程中创建的任何临时资源。/documentation
:展示清理管道步骤的数据沿袭图以及在 Foundry Notepad 中编写的额外文档(超出顶级项目 README)。变换项目的目标是封装共享的、语义上有意义的数据分组,并生成规范视图以馈送到 Ontology 层。
这些项目从一个或多个数据源项目中导入清理后的数据集,并与查找数据集合并以扩展值,规范化或去规范化关系以创建对象中心或时间中心的数据集,或聚合数据以创建标准的共享指标。
/data
/transformed
(可选):这些数据集是变换项目中间步骤的输出。/output
:这些数据集是变换项目的“输出”,是下游 Ontology 项目中唯一应依赖的数据集。/analysis
:创建以测试或记录清理变换并展示数据形态的资源。/scratchpad
:在构建或测试清理变换过程中创建的任何临时资源。/documentation
:展示清理管道步骤的数据沿袭图以及在 Notepad 中编写的额外文档(超出顶级项目 README)。Ontology 在 Foundry 中实施共享的沟通层——有时称为“语义层”——并且清理、组织和稳定 Ontology 的策划是确保多种有价值的项目能够同时推进并丰富共同操作视图的最高目标。有关设计和管理 Ontology 的概念和实际操作的更多信息,请参考Ontology 概念文档。
Ontology 项目是任何管道的中心点,代表了生成符合 Ontology 中定义的单个或相关对象组定义的数据集所需的最终变换。这些项目还(单独地)生成同步以支持对象浏览器视图的数据集。
由于 Ontology 数据集代表了它们所代表的操作对象的规范真相,因此它们是所有“消费”项目的起始点。虽然上游清理和管道步骤的来源和变换逻辑是可见的,但概念上这些步骤和中间数据集对于仅从 Ontology 项目消费数据的项目开发人员、分析师、数据科学家和操作用户来说可能是一个黑箱。在这个意义上,Ontology 层充当了操作对象的 API。
与数据源项目类似,维护 Ontology 项目的关键因素包括:
这些将在维护管道中以及下面关于记录项目的提示中更详细地讨论。
此外,随着 Ontology 变得更稳健,并且更多团队为 Ontology 层做出贡献,维护数据集“API”的完整性变得更加关键。为此,请考虑实施额外的检查,以确保建议的更改保留输出数据集模式的完整性。这将在即将提供的额外文档中更详细地讨论。
/data
/transformed
(可选):这些数据集是 Ontology 项目中间步骤的输出。/ontology
:这些数据集是 Ontology 项目的“输出”,是下游应用案例或工作流项目中唯一应依赖的数据集。/analysis
:创建以测试或记录清理变换并展示数据形态的资源。/scratchpad
:在构建或测试清理变换过程中创建的任何临时资源。/documentation
:展示清理管道步骤的数据沿袭图以及在报告中编写的额外文档(超出顶级项目 README)。工作流项目,也称为应用案例项目,应根据具体情况灵活设计,但通常围绕单个项目或团队构建,以成为有效的协作单位,并划定责任和访问的边界。
一般而言,工作流项目应引用 Ontology 项目的数据,以确保操作工作流、商业智能分析和应用程序项目共享世界的共同视图。如果在开发工作流项目的过程中,Ontology 层中可用的数据源不足以作为来源,则表明应丰富和扩展 Ontology。避免引用管道中较早(或较晚)的数据,因为这可能会导致特定数据类型的真相源分裂。
每个项目应在开发过程中彻底记录。以下是一些常见模式和最佳实践:
工作流项目的结构将比其他项目类型更为多样,应专注于使主要资源立即可访问且记录良好。
/data
/transformed
(可选):这些数据集是工作流项目中间步骤的输出。/analysis
(可选):这些数据集是分析工作流的输出。/model_output
(可选):这些数据集是模型工作流的输出,然后可以分析以确定模型拟合。/user_data
(可选):如果您的工作流允许用户创建自己的数据“切片”,请将它们存储在用户特定的文件夹中。/analysis
:创建以驱动决策和反馈循环的资源和报告。/models
:创建的任何模型应存储在此处。
/templates
:共享用于项目特定用途的任何代码工作簿模板应存储。/applications
:存储其他工作流应用程序或子应用程序。主要应用程序应存储在项目根目录中以方便访问。
/develop
:存储正在开发的应用程序、新功能和模板。/scratchpad
:在构建或测试清理变换过程中创建的任何临时资源。/documentation
:展示清理管道步骤的数据沿袭图以及在报告中编写的额外文档(超出顶级项目 README)。以下角色是 Foundry 中管道范围、设计、实施和管理中常见的角色示例。并非所有情况下都需要这些角色,尤其是在平台开发的早期阶段,个人可能同时担任多个角色。然而,通常考虑这些角色描述及其交互方式将有助于创建有序且有效的团队。
下图将主要角色与它们最常活跃的管道部分相关联。