このドキュメントでは、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 プロパティ
1 つのファイル内で同じアクションに対して異なる値で includeDependentAssertions パラメータが設定されている場合、コンパイル中に次のエラーが発生します。
Conflicting "includeDependentAssertions" properties are not allowed. Dependency
dependencyName has different values set for this property.
このエラーを解決するには、ファイルを編集して、includeDependentAssertions パラメータの競合する繰り返しを削除します。
includeDependentAssertions パラメータ
を使用してアサーションを依存関係として設定する方法について詳しくは、
選択したアクションのアサーションを依存関係として設定するをご覧ください。
プロジェクト間のサービス アカウントの接続がブロックされる
Dataform リポジトリとは異なるプロジェクトのカスタム サービス アカウントを使用しようとしたときに、組織のポリシーの制約によってオペレーションがブロックされると、次のエラーが発生します。
The caller does not have permission to act as service account: SERVICE_ACCOUNT_EMAIL
このエラーを解決するには、次の操作を行います。
- カスタム サービス アカウントがある プロジェクトを特定します。 Google Cloud
- そのプロジェクトで、
iam.disableCrossProjectServiceAccountUsage組織のポリシーの制約を無効にします。 詳細については、 プロジェクト間でサービス アカウントの接続を有効にするをご覧ください。 - 呼び出し元のプリンシパルに、カスタム サービス アカウントに対する
サービス アカウント ユーザーロール
(
roles/iam.serviceAccountUser)があることを確認します。
詳細については、 プロジェクト間のサービス アカウントの接続を処理するをご覧ください。
@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 を最新バージョンに更新します。
エンドユーザー認証情報の権限が拒否された
Google アカウントのユーザー認証情報を使用してワークロードを実行したときに、Dataform に必要な権限がない場合、次のエラーが発生します。
Dataform does not have the necessary permissions to run your workload using end user credentials. Error details: Account restricted: https://accounts.google.com/info/servicerestricted?...
このエラーは、組織がユーザー ID とコンテキストに基づいて サービスへのアクセスを制限する Google Cloud コンテキストアウェア アクセス ルールを使用している場合に発生することがあります。
このエラーを解決するには、Dataform が Google アカウントのユーザー認証情報を使用できるように、コンテキストアウェア アクセスの構成を更新する必要があります。 これを行うには、アクセスレベル構成で Dataform の OAuth クライアント ID を除外する必要があります。アプリケーションの除外について詳しくは、 サポートされているアプリケーションのアクセスレベルを構成するをご覧ください。
Dataform の OAuth クライアント ID を取得するには、Cloud カスタマーケアにお問い合わせください。