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 コアを更新して最新バージョンにします。
  2. SQL ワークフローを検査し、非効率性を特定して削減します。
  3. SQL クエリのサイズを小さくします。
  4. メモリ内の JavaScript オペレーションの量を減らします。次に例を示します。

    config { config {type: "table" }}
    js {
        const tooBig = new Uint8Array(110_000_000);
    }
    SELECT ...
    
  5. リポジトリを分割します

Dataform コンパイルにおけるリソースの上限について詳しくは、割り当てと上限をご覧ください。

@dataform/core 依存関係エラー

package.jsondataform-core 依存関係が古い場合、コンパイル中に次のエラーが発生します。

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 を最新バージョンに更新します。

dataform.json を解決できない

Dataform ワークスペースを初期化するときに、初期化プロセスですべてのパッケージをインストールできない場合は、次のエラーが発生します。

Uncaught Error: Failed to resolve dataform.json

このエラーを解決するには、ワークスペースで package.json を開き、[パッケージのインストール] をクリックします。

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 URL を生成し、package.json のパッケージ ターゲットを更新します。Dataform にパッケージをインストールする方法については、Dataform にパッケージをインストールするをご覧ください。

パッケージのインストールがタイムアウトする

package.json で定義されたパッケージのサイズが NPM 依存関係の最大サイズを超えると、次のエラーが発生します。

API request error: Package installation timed out

このエラーを解決するには、package.json から冗長なパッケージを削除します。package.json ファイルに @dataform/cli が含まれておらず、定義される NPM 依存関係の合計サイズが 200 MB を超えていないことを確認します。

リリース構成が Git commit を参照している場合は、ターゲットにある 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 の問題が継続しない限り、予定されている後続のリリースは成功する可能性があります。

リモート リポジトリのシークレットにアクセスできない

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 サービス アカウントがシークレットにアクセスしていることを確認します。
  • VPC-SC サービス境界からシークレットを除外します。現時点では、Dataform は VPC-SC をサポートしていません。