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 身份验证令牌。有关 有关在 Google Cloud 中对第三方 Git 代码库进行身份验证的信息 Dataform,请参阅连接到第三方 Git 代码库

已超出 BigQuery 配额

如果删除的 API 请求数 Dataform 发送到 BigQuery 的次数超过了 BigQuery 配额:

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

要解决此错误,请在 方法:

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

已超出 BigQuery 查询并发限制

将对实例执行的并发查询数量 BigQuery 超出了 BigQuery 查询并发数上限 limit

Exceeded rate limits: too many concurrent queries for this project_and_region

要解决此错误,请在 方法:

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

BigQuery 工作流调用错误

执行 SQL 工作流时会发生以下错误, BigQuery:

要解决这些错误,请参阅 BigQuery 错误 消息

有冲突的 includeDependentAssertions 个资源

编译期间会发生以下错误, 针对同一个项目设置了 includeDependentAssertions 参数, 一个文件中具有不同值的操作:

Conflicting "includeDependentAssertions" properties are not allowed. Dependency
dependencyName has different values set for this property.

要解决此错误,请修改该文件并删除 includeDependentAssertions 参数。

详细了解如何使用 includeDependentAssertions 参数 如何将断言设置为依赖项,请参阅 将所选操作的断言设置为依赖项

编译失败

由于已编译的 查询:

  • 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 核心更新到最新版本 版本。
  2. 检查 SQL 工作流,找出并减少低效环节。
  3. 缩减 SQL 查询的大小。
  4. 减少内存中的 JavaScript 操作量,例如:

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

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

@dataform/core 个依赖项错误

如果 dataform-core 依赖项 package.json 中的以下版本已过期:

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

package.json 中需要 @dataform/core 依赖项。当您 初始化代码库中的第一个工作区 Dataform 会在package.json中自动填充 @dataform/core.您需要以如下身份将@dataform/core更新到最新版本: 结果。

如需解决这些错误,请@dataform/core 更新到最新版本 version

未能解决“dataform.json

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

Uncaught Error: Failed to resolve dataform.json

如需解决此错误,请在您的工作区中打开 package.json 然后点击安装软件包

未能解决“workflow_settings.yaml

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

Uncaught Error: Failed to resolve workflow_settings.yaml

如需解决此错误,请在您的工作区中打开 workflow_settings.yaml,然后 点击安装软件包

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 中完成指定。

软件包安装超时

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

API request error: Package installation timed out

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

如果您的版本配置 引用了 Git Commitish 时,请确保其下的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
  • 从 VPC-SC 服务边界中排除该 Secret。Dataform 目前不支持 VPC-SC。