Dataform 最佳实践概览

本文档简要介绍了在 Dataform 中管理代码库大小、代码库结构和代码生命周期的最佳实践。

代码库大小方面的最佳实践

代码库大小会影响 Dataform 的多方面开发,例如:

  • 协作
  • 代码库可读性
  • 开发流程
  • 工作流编译
  • 工作流执行

Dataform 会对编译资源强制执行 API 配额和限制。代码库大小过大可能会导致您的代码库超出这些配额和限制。这可能会导致 SQL 工作流的编译和执行失败。

为降低此风险,我们建议拆分大型代码库。拆分大型代码库时,您需要将大型 SQL 工作流拆分为多个较小的 SQL 工作流,这些工作流存储在不同的代码库中,并通过跨代码库依赖项进行连接。

这种方法可让您遵守 Dataform 配额和限制、精细流程和权限,并提高代码库的可读性和协作能力。不过,与管理单个代码库相比,管理分屏代码库可能更具挑战性。

如需详细了解 Dataform 中代码库大小的影响以及拆分代码库的最佳实践,请参阅拆分代码库

代码库结构的最佳实践

我们建议您在 definitions 目录中构建文件结构,以反映工作流的各个阶段。请注意,您可以采用最符合您需求的自定义结构。

以下 definitions 子目录的推荐结构反映了大多数 SQL 工作流的关键阶段:

  • sources,用于存储数据源声明
  • intermediate,用于存储数据转换逻辑
  • output,用于存储输出表的定义
  • 可选:extras,用于存储其他文件

Dataform 中的所有文件的名称都必须符合 BigQuery 表命名准则。我们建议 Dataform 仓库中 definitions 目录中的文件名反映子目录结构。

如需详细了解在代码库中设置文件结构和命名文件的最佳实践,请参阅在代码库中设置代码结构

代码生命周期最佳实践

Dataform 中的默认代码生命周期包括以下阶段:

  • 在 Dataform 工作区中开发 SQL 工作流代码

    您可以使用 Dataform 核心仅使用 JavaScript 进行开发。

  • 使用工作流设置文件中的设置将代码编译为编译结果

    您可以使用版本配置和工作区编译替换配置自定义编译结果。

    借助发布配置,您可以配置整个代码库的自定义编译结果。您稍后可以在工作流配置中安排其执行。

    借助工作区编译替换,您可以为代码库中的所有工作区配置编译替换,从而为每个工作区创建自定义编译结果。

  • 在 BigQuery 中执行编译结果

    您可以使用工作流配置安排执行作业或代码库编译结果。

如需在 Dataform 中管理代码生命周期,您可以创建执行环境,例如开发环境、预演环境和生产环境。

如需详细了解 Dataform 中的代码生命周期,请参阅 Dataform 中代码生命周期简介

您可以选择将执行环境保存在单个代码库中,也可以保存在多个代码库中。

单个代码库中的执行环境

您可以使用工作区编译替换版本配置,在单个 Dataform 代码库中创建隔离的执行环境,例如开发环境、预演环境和生产环境。

您可以通过以下方式创建隔离的执行环境:

  • 按架构拆分开发环境表和生产环境表
  • 按架构和 Google Cloud 项目拆分开发环境表和生产环境表
  • 按 Google Cloud 项目拆分开发、预演和生产表

然后,您可以使用工作流配置在预演环境和生产环境中安排执行作业。我们建议您在开发环境中手动触发执行。

如需详细了解在 Dataform 中管理代码生命周期的最佳实践,请参阅管理代码生命周期

多个代码库中的代码生命周期

如需根据代码生命周期的每个阶段量身定制 Identity and Access Management 权限,您可以创建代码库的多个副本,并将其存储在不同的Google Cloud 项目中。

每个 Google Cloud 项目都充当一个执行环境,与代码生命周期的某个阶段相对应,例如开发和生产。

在此方法中,我们建议在所有 Google Cloud 项目中保持代码库的代码库一致。如需在代码库的每个副本中自定义编译和执行,请使用工作区编译替换发布配置工作流配置

后续步骤