本文档介绍了如何解决 Dataform 问题。
对 BigQuery 的访问遭拒
如果您在向 Dataform 授予对 BigQuery 的访问权限之前触发流水线调用,则会发生以下错误:
Access Denied: Project PROJECT_ID: User does not have bigquery.jobs.create permission in project PROJECT_ID.
如需解决此错误,请向 Dataform 授予对 BigQuery 的访问权限。
远程仓库的访问令牌被拒绝
如果连接的第三方代码库的身份验证令牌无权访问该代码库,则会发生以下错误:
The access token for remote repository REPOSITORY_NAME was rejected
如需解决此错误,请检查 Git 提供商中的所需权限,并相应地更新 Secret Manager 身份验证令牌。如需详细了解如何在 Dataform 中对第三方 Git 代码库进行身份验证,请参阅连接到第三方 Git 代码库。
超出 BigQuery 查询并发限制
如果针对 BigQuery 运行的并发查询数量超出 BigQuery 查询并发 限制,则会发生以下错误:
Exceeded rate limits: too many concurrent queries for this project_and_region
如需解决此错误,请通过以下方式将并行查询的数量减少到 250 以下:
- 在 Dataform 中,使用标签对操作进行分类, 并一次仅运行选定的标签 。
- 在 Dataform 中,引入操作之间的依赖关系。
- 在 Dataform 中,将操作的执行拆分到不同的 Google Cloud 项目之间。
如需了解如何在 BigQuery 中解决此错误的说明,请参阅排查 配额和限制 错误。
超出 BigQuery 配额
如果 Dataform 发送到 BigQuery 的 API 请求数量超出 BigQuery 配额,则会发生以下错误:
Quota exceeded: Your user_method exceeded quota for concurrent api requests
per user per method.
如需解决此错误,请通过以下方式将并行查询的数量减少到 250 以下:
- 在 Dataform 中,使用标签对操作进行分类, 并一次仅运行选定的标签 。
- 在 Dataform 中,引入操作之间的依赖关系。
- 在 Dataform 中,将操作的执行拆分到不同的 Google Cloud 项目之间。
如需了解如何在 BigQuery 中解决此错误的说明,请参阅排查 配额和限制 错误。
BigQuery 流水线调用错误
在执行到 BigQuery 的工作流期间,会发生以下错误:
- 以 BigQuery 错误 消息开头的流水线调用错误。
如需解决这些错误,请参阅 BigQuery 错误 消息。
编译失败
由于编译查询的大小或数量,在编译期间会发生以下错误:
Compilation timed out. Reduce the complexity of your project to ensure it can compile within limits.Compilation exceeded its allowed heap memory limits. Reduce the complexity of your project to ensure it can compile within limits.Compilation exceeded its allowed ArrayBuffer or string memory limits. Reduce the complexity of your project to ensure it can compile within limits.
如需解决这些错误,请按以下步骤操作:
- 将 Dataform 核心更新到最新 版本。
- 检查工作流以找出并减少低效之处。
- 减小 SQL 查询的大小。
减少内存中的 JavaScript 操作量,例如:
config { config {type: "table" }} js { const tooBig = new Uint8Array(110_000_000); } SELECT ...
如需详细了解 Dataform 编译资源限制,请参阅 配额和限制。
存在冲突的 includeDependentAssertions 属性
如果在同一文件中为同一操作设置了具有不同值的 includeDependentAssertions 参数,则在编译期间会发生以下错误: