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 项目中保持代码库的代码库不变。如需自定义代码库的每个副本的编译和执行,请使用工作区编译替换版本配置工作流配置

后续步骤