代码库大小最佳实践
代码库大小会影响 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 项目中保持代码库的代码库不变。如需自定义代码库的每个副本的编译和执行,请使用工作区编译替换、版本配置和工作流配置。
后续步骤
- 如需详细了解 Dataform 中的代码库大小,请参阅代码库大小概览。
- 如需详细了解拆分代码库的最佳实践,请参阅拆分代码库。
- 如需详细了解代码库结构的最佳实践,请参阅在代码库中构建代码
- 如需详细了解 Dataform 中的代码生命周期以及配置它的不同方法,请参阅 Dataform 中的代码生命周期简介。
- 如需详细了解代码生命周期,请参阅管理代码生命周期。