Fehlerbehebung in Dataform

In diesem Dokument wird beschrieben, wie Sie Probleme mit Dataform beheben.

Zugriff auf BigQuery verweigert

Der folgende Fehler tritt auf, wenn Sie einen Pipelineaufruf auslösen, bevor Sie Dataform Zugriff auf BigQuery gewähren:

Access Denied: Project PROJECT_ID: User does not have bigquery.jobs.create permission in project PROJECT_ID.

Gewähren Sie Dataform Zugriff auf BigQuery, um diesen Fehler zu beheben.

Zugriffstoken für ein Remote-Repository wird abgelehnt

Der folgende Fehler tritt auf, wenn Ihr Authentifizierungstoken für ein verbundenes Drittanbieter-Repository keinen Zugriff auf dieses Repository hat:

The access token for remote repository REPOSITORY_NAME was rejected

Prüfen Sie die erforderlichen Berechtigungen bei Ihrem Git-Anbieter und aktualisieren Sie das Secret Manager-Authentifizierungstoken entsprechend, um diesen Fehler zu beheben. Weitere Informationen zur Authentifizierung von Git-Repositories von Drittanbietern in Dataform finden Sie unter Verbindung zu einem Git-Repository eines Drittanbieters herstellen.

Secure Source Manager-Verbindung ohne Developer Connect-Proxy

Der folgende Fehler tritt auf, wenn Sie ein Dataform-Repository mit einer Developer Connect-Verbindung, für die der Proxy nicht aktiviert ist, mit einem Secure Source Manager-Repository (Vorabversion) verknüpfen:

This repository uses a Secure Source Manager connection that does not have the Developer Connect proxy enabled. Dataform cannot access it. Select a different repository, or link a new repository using a connection with the proxy enabled.

Wählen Sie ein anderes Repository aus, verknüpfen Sie ein neues Repository über eine Verbindung mit aktiviertem Proxy oder aktualisieren Sie die vorhandene Developer Connect-Verbindung, um den Proxy zu aktivieren. Weitere Informationen finden Sie unter Remote-Repository mit Developer Connect verbinden.

BigQuery-Abfrage-Nebenläufigkeitslimit überschritten

Der folgende Fehler tritt auf, wenn die Anzahl der gleichzeitigen Abfragen an BigQuery das BigQuery-Limit für gleichzeitige Abfragen überschreitet:

Exceeded rate limits: too many concurrent queries for this project_and_region

So beheben Sie diesen Fehler: Reduzieren Sie die Anzahl der parallelen Abfragen auf weniger als 250. Gehen Sie dazu so vor:

Eine Anleitung zur Behebung dieses Fehlers in BigQuery finden Sie unter Fehler bei Kontingenten und Limits beheben.

BigQuery-Kontingent überschritten

Der folgende Fehler tritt auf, wenn die Anzahl der API-Anfragen, die Dataform an BigQuery sendet, das BigQuery-Kontingent überschreitet:

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

So beheben Sie diesen Fehler: Reduzieren Sie die Anzahl der parallelen Abfragen auf weniger als 250. Dazu haben Sie folgende Möglichkeiten:

Eine Anleitung zur Behebung dieses Fehlers in BigQuery finden Sie unter Fehler bei Kontingenten und Limits beheben.

Fehler beim Aufruf von BigQuery-Pipelines

Die folgenden Fehler treten während der Ausführung eines Workflows in BigQuery auf:

Informationen zum Beheben dieser Fehler finden Sie unter BigQuery-Fehlermeldungen.

Kompilierung schlägt fehl

Die folgenden Fehler treten während der Kompilierung aufgrund der Größe oder Anzahl der kompilierten Abfragen auf:

  • 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.
  • Compilation cancelled because it exceeded size limits.

So beheben Sie diese Fehler:

  1. Aktualisieren Sie Dataform Core auf die neueste Version.
  2. Prüfen Sie Ihren Workflow, um Ineffizienzen zu erkennen und zu reduzieren.
  3. Reduzieren Sie die Größe von SQL-Abfragen.
  4. Reduzieren Sie die Anzahl der JavaScript-Vorgänge im Arbeitsspeicher, z. B.:

    config { config {type: "table" }}
    js {
        const tooBig = new Uint8Array(110_000_000);
    }
    SELECT ...
    
  5. Repository aufteilen

Weitere Informationen zu den Ressourcenlimits für die Dataform-Kompilierung finden Sie unter Kontingente und Limits.

In Konflikt stehende includeDependentAssertions-Eigenschaften

Der folgende Fehler tritt während der Kompilierung auf, wenn der Parameter includeDependentAssertions für dieselbe Aktion mit unterschiedlichen Werten innerhalb einer Datei festgelegt ist:

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

Bearbeiten Sie die Datei und entfernen Sie in Konflikt stehende Wiederholungen des Parameters includeDependentAssertions, um diesen Fehler zu beheben.

Weitere Informationen zum Verwenden des Parameters includeDependentAssertions, um Assertions als Abhängigkeiten festzulegen, finden Sie unter Assertions einer ausgewählten Aktion als Abhängigkeiten festlegen.

Projektübergreifender Dienstkontoanhang ist blockiert

Der folgende Fehler tritt auf, wenn Sie versuchen, ein benutzerdefiniertes Dienstkonto aus einem anderen Projekt als Ihrem Dataform-Repository zu verwenden, und der Vorgang durch eine Einschränkung der Organisationsrichtlinie blockiert wird:

The caller does not have permission to act as service account: SERVICE_ACCOUNT_EMAIL

So beheben Sie diesen Fehler:

  1. Ermitteln Sie das Google Cloud -Projekt, in dem sich das benutzerdefinierte Dienstkonto befindet.
  2. Deaktivieren Sie in diesem Projekt die Einschränkung der Organisationsrichtlinie iam.disableCrossProjectServiceAccountUsage. Weitere Informationen finden Sie unter Ermöglichen, dass Dienstkonten projektübergreifend angehängt werden können.
  3. Achten Sie darauf, dass das aufrufende Hauptkonto die Rolle „Dienstkontonutzer“ (roles/iam.serviceAccountUser) für das benutzerdefinierte Dienstkonto hat.

Weitere Informationen finden Sie unter Projektübergreifendes Anhängen von Dienstkonten verarbeiten.

@dataform/core Abhängigkeitsfehler

Die folgenden Fehler treten während der Kompilierung auf, wenn die dataform-core-Abhängigkeit in package.json veraltet ist:

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

Die Abhängigkeit @dataform/core ist in package.json erforderlich. Wenn Sie den ersten Arbeitsbereich in Ihrem Repository initialisieren, füllt Dataform package.json automatisch mit der aktuellen Version von @dataform/core. Sie müssen @dataform/core auf die aktuelle Version aktualisieren, sobald sie veröffentlicht wird.

Aktualisieren Sie @dataform/core auf die aktuelle Version, um diese Fehler zu beheben.

Berechtigung für Anmeldedaten von Endnutzern verweigert

Der folgende Fehler tritt auf, wenn Sie Ihre Arbeitslast mit Nutzeranmeldedaten für ein Google-Konto ausführen, Dataform aber nicht die erforderlichen Berechtigungen hat:

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?...

Dieser Fehler kann auftreten, wenn Ihre Organisation Regeln für kontextsensitiven Zugriff verwendet, die den Zugriff auf Google Cloud -Dienste basierend auf der Nutzeridentität und dem Kontext einschränken.

Um diesen Fehler zu beheben, müssen Sie möglicherweise Ihre Konfiguration für den kontextsensitiven Zugriff aktualisieren, damit Dataform Google-Konto-Nutzeranmeldedaten verwenden kann. Dazu müssen Sie die OAuth-Client-ID von Dataform in Ihrer Zugriffsebenenkonfiguration ausnehmen. Weitere Informationen zum Ausnehmen von Anwendungen finden Sie unter Zugriffsebenen für unterstützte Anwendungen konfigurieren.

Wenden Sie sich an Cloud Customer Care, um die OAuth-Client-ID für Dataform zu erhalten.

dataform.json konnte nicht aufgelöst werden

Der folgende Fehler tritt auf, wenn Sie einen Dataform-Arbeitsbereich initialisieren, aber der Initialisierungsprozess nicht alle Pakete installiert:

Uncaught Error: Failed to resolve dataform.json

Öffnen Sie in Ihrem Arbeitsbereich package.json und klicken Sie auf Pakete installieren, um diesen Fehler zu beheben.

workflow_settings.yaml konnte nicht aufgelöst werden

Der folgende Fehler tritt auf, wenn Sie einen Dataform-Arbeitsbereich initialisieren, aber der Initialisierungsprozess nicht alle Pakete installiert:

Uncaught Error: Failed to resolve workflow_settings.yaml

Öffnen Sie in Ihrem Arbeitsbereich workflow_settings.yaml und klicken Sie auf Pakete installieren, um diesen Fehler zu beheben.

git+-Paketziele werden nicht unterstützt

Der folgende Fehler tritt auf, wenn Sie Pakete in package.json mit Zielen definieren, die das Präfix git+ haben:

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

Dataform unterstützt keine Paketziele mit dem Präfix git+.

Um diesen Fehler zu beheben, generieren Sie eine tar.gz-URL des Pakets und aktualisieren Sie das Paketziel in package.json. Weitere Informationen zum Installieren von Paketen in Dataform finden Sie unter Paket installieren.

Zeitüberschreitung bei der Paketinstallation

Der folgende Fehler tritt auf, wenn die Größe der in package.json definierten Pakete die maximale Größe von NPM-Abhängigkeiten überschreitet:

API request error: Package installation timed out

Entfernen Sie redundante Pakete aus package.json, um diesen Fehler zu beheben. Achten Sie darauf, dass die Datei package.json nicht @dataform/cli enthält und dass die Gesamtgröße der definierten NPM-Abhängigkeiten 200 MB nicht überschreitet.

Wenn Ihre Release-Konfigurationen auf Git-Commits verweisen, müssen die package.json-Dateien an ihren Zielen gültig sein.

Berechtigung zum Agieren als Dienstkonto verweigert

Der folgende Fehler tritt auf, wenn das Hauptkonto, das die Aktion ausführt, nicht die Berechtigung iam.serviceAccounts.actAs für das effektive Dienstkonto hat:

Permission denied: Principal CALLER_EMAIL is missing 'iam.serviceAccounts.actAs' permission on service account SERVICE_ACCOUNT_EMAIL.

Dieser Fehler kann bei folgenden Aktionen auftreten:

  • Repository erstellen oder aktualisieren
  • Workflowkonfiguration erstellen oder aktualisieren
  • Workflowaufruf erstellen
  • Releasekonfiguration aktualisieren

Weisen Sie dem Hauptkonto für das effektive Dienstkonto die Rolle „Dienstkontonutzer“ (roles/iam.serviceAccountUser) zu, um diesen Fehler zu beheben. Weitere Informationen finden Sie unter Erforderliche IAM-Rollen zuweisen.

Private Paket-Registry kann nicht erreicht werden

Der folgende Fehler tritt auf, wenn die Dataform-Authentifizierung für ein privates Paket abläuft:

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

Prüfen Sie, ob die Authentifizierungsdetails für die private Registry für jede NPM-Registry gültig sind, um diesen Fehler zu beheben. Weitere Informationen finden Sie unter Privates Paket authentifizieren.

Remote-Repository ist nicht erreichbar

Einer der folgenden Fehler tritt auf, wenn Dataform keine Verbindung zu Ihrem Remote-Git-Repository herstellen kann:

Remote repository 'REMOTE_REPOSITORY_URL' could not be reached.
Error during remote operation: SSH connection to remote repository 'REMOTE_REPOSITORY_URL' timed out.
Error during remote operation: `Read timed out`.
Error during remote operation: `Connection time out`.
Error during remote operation: The remote repository 'REMOTE_REPOSITORY_URL' closed connection during remote operation.

Wie Sie diese Verbindungsfehler beheben, hängt davon ab, ob der Fehler dauerhaft oder vorübergehend ist.

Dauerhafte Verbindungsfehler

Wenn der Fehler bei jedem Kompilierungsversuch oder während der Ersteinrichtung des Repositorys auftritt, ist der Verbindungsfehler dauerhaft. Die Verbindung ist nicht richtig konfiguriert oder die Anmeldedaten sind abgelaufen. Führen Sie die folgenden Schritte aus, um diesen Fehler zu beheben:

  1. Prüfen Sie, ob Ihr Git-Repository-Host über das öffentliche Internet erreichbar ist.
  2. Wenn Ihr Remote-Git-Repository nicht über das öffentliche Internet zugänglich ist, verwenden Sie Developer Connect, um eine sichere Verbindung von Dataform herzustellen.
  3. Prüfen Sie, ob Ihr Authentifizierungstoken oder Ihre SSH-Schlüssel gültig und nicht abgelaufen sind und Zugriff auf das Repository haben.
  4. Führen Sie alle Schritte unter Verbindung zu einem Git-Repository eines Drittanbieters herstellen aus.

Vorübergehende oder zeitweise Verbindungsfehler

Wenn der Fehler sporadisch während geplanter Ausführungen oder beim gleichzeitigen Auslösen mehrerer Workflows auftritt, ist der Verbindungsfehler vorübergehend. Ihre externe Netzwerkverbindung zum Remote-Repository ist möglicherweise vorübergehend unzuverlässig.

Beachten Sie die folgenden Best Practices, um die Zuverlässigkeit der Produktion zu optimieren und vorübergehende Verbindungsfehler zu vermeiden:

  1. Häufige Commitish-Kompilierungen in der Produktion vermeiden: Wenn Sie CreateCompilationResult direkt für einen Git-Commitish aufrufen, z. B. main oder ein bestimmtes Git-Tag, muss Dataform bei jeder Ausführung einen neuen Git-Klon erstellen und Pakete über das Netzwerk installieren. Wenn häufige Commitish-Kompilierungen über mehrere Pipelines hinweg ausgelöst werden, erhöht sich die Abhängigkeit von externen Netzwerken und die Ausführungslatenz.
  2. Releasekonfigurationen verwenden: Verwenden Sie für die Produktionsausführung Releasekonfigurationen. Eine Release-Konfiguration kompiliert Ihr Repository nach einem kontrollierten Zeitplan und speichert das unveränderliche Kompilierungsergebnis. Nachgelagerte Workflowausführungen verwenden dieses im Cache gespeicherte Ergebnis sofort, ohne Ihr externes Git-Repository abzufragen.
  3. Geplante Ausführungen staffeln: Wenn Sie mehrere Kompilierungen oder Release-Trigger planen, sollten Sie die Cron-Zeitpläne staffeln, um die Netzwerklast zu verteilen. Versetzen Sie die Zeitpläne beispielsweise um 5–10 Minuten, anstatt alle Jobs gleichzeitig auszuführen.
  4. Wiederholungsversuche in Orchestrierungs-Workflows hinzufügen: Wenn Sie Dataform-Kompilierungen über externe Planer wie Managed Service for Apache Airflow orchestrieren, konfigurieren Sie automatische Wiederholungsversuche mit exponentiellem Backoff für Ihren Operator, um vorübergehende Netzwerkprobleme ordnungsgemäß zu verarbeiten. In einem Airflow-DAG, der DataformCreateCompilationResultOperator verwendet, können Sie Wiederholungsversuche beispielsweise so konfigurieren:
from datetime import timedelta
from airflow.providers.google.cloud.operators.dataform import (
    DataformCreateCompilationResultOperator,
)

create_compilation_result = DataformCreateCompilationResultOperator(
    task_id="create_compilation_result",
    project_id="PROJECT_ID",
    region="REGION",
    repository_id="REPOSITORY_ID",
    compilation_result={
        "git_commitish": "GIT_COMMITISH",
    },
    retries=5,
    retry_delay=timedelta(minutes=2),
    retry_exponential_backoff=True,
)

Repositories in Dataform nicht sichtbar

Einige Dataform-Repositories werden möglicherweise in Cloud Asset Inventory-Suchen oder IAM-Berechtigungsprüfungen angezeigt, aber nicht in Dataform in der Google Cloud Console.

Informationen zum Identifizieren des Ursprungs dieser Repositories mithilfe von Labels finden Sie unter Repositories für BigQuery-Assets identifizieren.

Secret für ein Remote-Repository ist nicht zugänglich

Der folgende Fehler tritt auf, wenn der Dataform-Dienst-Agent nicht auf Ihr Secret Manager-Secret für ein verbundenes Drittanbieter-Repository zugreifen kann:

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.

Prüfen Sie, ob der Dataform-Dienst-Agent Zugriff auf das Secret hat, um diesen Fehler zu beheben.

Dienstkonto im Drop-down-Menü nicht sichtbar

Wenn Sie ein Repository oder einen Workflowaufruf konfigurieren, wird im Menü Dienstkonto möglicherweise kein vorhandenes benutzerdefiniertes Dienstkonto aufgeführt.

Dataform verwendet die Identity and Access Management API, um Dienstkonten aufzulisten. Dafür ist die Berechtigung iam.serviceAccounts.list auf Projektebene erforderlich.

Führen Sie einen der folgenden Schritte aus, um das Problem zu lösen:

  • Klicken Sie auf Manuell eingeben und geben Sie die Dienstkonto-ID ein.
  • Bitten Sie Ihren Projektadministrator, Ihnen die Rolle „Dienstkonten ansehen“ (roles/iam.serviceAccountViewer) oder eine andere Rolle mit der Berechtigung iam.serviceAccounts.list für das Projekt zuzuweisen.

Unbekanntes Argument: tags

Der folgende Fehler tritt auf, wenn Ihre Version der Dataform CLI das Argument tags nicht erkennt:

Unknown argument: tags

So beheben Sie diesen Fehler:

  • Aktualisieren Sie die Version der CLI auf 3.0.0 oder höher. Testen Sie neue Paketversionen immer in einer Nicht-Produktionsumgebung, bevor Sie sie in Ihrer Produktionsumgebung bereitstellen.
  • Es empfiehlt sich, immer die neueste verfügbare Version des Dataform Core-Pakets zu verwenden.
  • Geben Sie die Paketversion in package.json explizit an, z. B. 3.0.0. Verwenden Sie keine anderen dependencies-Optionen von package.json, z. B. >version.