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 Core 进行开发,也可以仅使用 JavaScript 进行开发。

  • 使用 dataform.json 中的设置将代码编译为编译结果

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

    通过版本配置,您可以为整个代码库配置自定义编译结果。稍后,您可以在工作流配置中安排其执行。

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

  • 在 BigQuery 中执行编译结果

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

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

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

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

单个代码库中的执行环境

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

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

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

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

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

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

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

每个 Google Cloud 项目都用作与代码生命周期的某个阶段(例如开发和生产)对应的执行环境。

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

后续步骤