排查 Dataform 问题

本文档介绍了如何解决 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 配额

当 Dataform 发送到 BigQuery 的 API 请求数超出 BigQuery 配额时,会发生以下错误:

Quota exceeded: Your user_method exceeded quota for concurrent api requests
per user per method.

如需解决此错误,请使用以下方式将并行查询数量减少到 250 个以下:

如需了解如何在 BigQuery 中解决此错误,请参阅排查配额和限制错误

超出了 BigQuery 查询并发限制

当对 BigQuery 执行的并发查询数量超出 BigQuery 查询并发限制时,会发生以下错误:

Exceeded rate limits: too many concurrent queries for this project_and_region

如需解决此错误,请使用以下方式将并行查询数量减少到 250 个以下:

如需了解如何在 BigQuery 中解决此错误,请参阅排查配额和限制错误

BigQuery 工作流调用错误

执行到 BigQuery 的 SQL 工作流期间会出现以下错误:

如需解决此类错误,请参阅 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.

若要解决这些错误,请按以下步骤操作:

  1. 将 Dataform core 更新到最新版本。
  2. 检查您的 SQL 工作流,找出低效问题并加以降低。
  3. 缩减 SQL 查询的大小。
  4. 减少内存中的 JavaScript 操作次数,例如:

    config { config {type: "table" }}
    js {
        const tooBig = new Uint8Array(110_000_000);
    }
    SELECT ...
    
  5. 拆分代码库

如需详细了解 Dataform 编译资源限制,请参阅配额和限制

@dataform/core 个依赖项错误

如果 package.json 中的 dataform-core 依赖项已过时,则编译期间会出现以下错误:

Failed to resolve @dataform/core
@dataform/core version should be X.X.X or newer

package.json 中需要 @dataform/core 依赖项。当您初始化代码库中的第一个工作区时,Dataform 会使用当前版本的 @dataform/core 自动填充 package.json。在最新版 @dataform/core 推出时,您需要将其更新到最新版本。

如需解决此类错误,请@dataform/core 更新到最新版本

未能解决“dataform.json”问题

如果初始化 Dataform 工作区,但初始化过程无法安装所有软件包,则会出现以下错误:

Uncaught Error: Failed to resolve dataform.json

如需解决此错误,请在工作区中打开 package.json 并点击 Install packages(安装软件包)。

不支持 git+ 软件包目标

如果您在 package.json 中定义目标前缀为 git+ 的软件包时会出现以下错误:

'git+' prefixed package targets are not currently supported. However,
in most cases they can be used via a '.tar.gz' suffixed target instead.

Dataform 不支持前缀为 git+ 的软件包目标。

如需解决此错误,请生成软件包的 tar.gz 网址,并更新 package.json 中的软件包目标。如需详细了解如何在 Dataform 中安装软件包,请参阅在 Dataform 中安装软件包

软件包安装超时

package.json 中定义的软件包的大小超过 NPM 依赖项的大小上限时,会发生以下错误:

API request error: Package installation timed out

如需解决此错误,请从 package.json 中移除冗余软件包。请确保 package.json 文件不包含 @dataform/cli,并且定义的 NPM 依赖项的总大小不超过 200Mb。

如果您的版本配置引用了 Git 提交,请确保其目标处的 package.json 文件有效。

无法访问私有软件包注册表

专用软件包的 Dataform 身份验证过期后,会发生以下错误:

Permission denied when fetching one or more npm packages. Please verify that
private registry authentication details are valid for each npm registry

如需解决此错误,请验证每个 NPM 注册表的私有注册表身份验证详细信息是否有效。如需了解详情,请参阅在 Dataform 中对专用软件包进行身份验证

无法访问远程代码库

如果 Git 不稳定,或者连接的第三方 Git 代码库中的分支名称包含非 ASCII 字符或非英语字符,则会发生以下错误:

Remote repository REPOSITORY_NAME could not be reached.

如需解决此错误,请检查关联的第三方代码库中的分支名称。如果分支名称包含非 ASCII 或非英语字符,请删除该分支。

无法访问远程代码库:generic::invalid_argument

当预定的版本偶尔遇到 GitHub、GitLab 或 Bitbucket 连接速度缓慢、不稳定或断开时,版本配置详情页面上会出现以下错误:

generic::invalid_argument: Remote repository 'REMOTE_REPOSITORY_URL' could not be reached.

您无需采取任何行动。除非 GitHub、GitLab 或 Bitbucket Cloud 问题仍然存在,否则后续预定的发布可能会成功。

无法访问远程代码库的 Secret

当您的 Dataform 服务帐号无法访问关联的第三方代码库的 Secret Manager 密钥时,会发生以下错误:

Dataform's service account is unable to reach the configured secret.
Make sure the secret exists and is shared with your Dataform service account:
SERVICE_ACCOUNT_ID.

要解决此错误,请执行以下操作:

  • 验证您的 Dataform 服务帐号是否有权访问 Secret
  • 将该 Secret 从您的 VPC-SC 服务边界中排除。Dataform 目前不支持 VPC-SC。