本文档可帮助您了解代码库大小如何影响 SQL 工作流开发和 Dataform 编译资源用量,以及如何估算代码库的编译资源用量。
Dataform 中的代码库大小简介
代码库的大小会影响 Dataform 中以下方面的开发:
- 协作
- 多个协作者共同处理大型代码库时,可能会产生过多拉取请求,从而增加合并冲突的风险。
- 代码库可读性
- 在单个代码库中构成 SQL 工作流的文件数量过多可能会导致难以浏览代码库。
- 开发流程
- 单个代码库中大型 SQL 工作流的某些部分可能需要自定义权限或进程(例如调度),这些权限或进程不同于应用于 SQL 工作流其余部分的权限和进程。代码库大小较大,因此很难根据 SQL 工作流的特定领域量身定制开发流程。
- 工作流编译
- Dataform 会对编译资源实施用量限制。大型代码库可能会导致超出这些限制,从而导致编译失败。
- 工作流执行
- 在执行期间,Dataform 会在您的工作区中执行代码库代码,并将资源部署到 BigQuery。代码库越大,Dataform 执行它所需的时间就越长。
如果代码库的大小对您在 Dataform 中的开发产生负面影响,您可以将代码库拆分为多个较小的代码库。
关于代码库编译资源限制
在开发期间,Dataform 会编译工作区中的所有代码库代码,以生成代码库中 SQL 工作流的表示法,称为编译结果。Dataform 会对编译资源强制执行用量限制。
您的代码库可能会因以下原因而超出使用量上限:
- 代码库代码中存在无限循环 bug。
- 代码库代码中存在内存泄露 bug。
- 代码库大小较大,大约超过 1, 000 个 SQL 工作流操作。
如需详细了解编译资源的使用限制,请参阅 Dataform 编译资源限制。
估算代码库的编译资源用量
您可以估算代码库的以下编译资源的使用情况:
- CPU 时间使用情况
- 在您的代码库中定义的生成的操作图的序列化数据总大小上限
如需大致估算代码库编译的当前编译 CPU 时间用量,您可以在本地 Linux 或 macOS 机器上对 Dataform SQL 工作流的编译进行计时。
- 如需对 SQL 工作流的编译时间进行计时,请在代码库中按照以下格式执行 Dataform CLI
dataform compile
命令:
time dataform compile
以下代码示例展示了执行 time dataform compile
命令的结果:
real 0m3.480s
user 0m1.828s
sys 0m0.260s
您可以将 real
结果视为代码库编译所用 CPU 时间的粗略指标。
如需大致了解在代码库中生成的操作图的总大小,您可以将图的输出写入 JSON 文件。您可以将未压缩 JSON 文件的大小视为图表总大小的粗略指标。
- 如需将 SQL 工作流程的已编译图表的输出写入 JSON 文件,请在代码库中执行以下 Dataform CLI 命令:
dataform compile --json > graph.json
后续步骤
- 如需详细了解 Dataform 编译资源限制,请参阅 Dataform 编译资源限制。
- 如需详细了解如何在 Dataform 中拆分代码库,请参阅拆分代码库。