Soluciona problemas de Dataform

En este documento, se muestra cómo resolver problemas con Dataform.

Se denegó el acceso a BigQuery

El siguiente error ocurre cuando activas una invocación de canalización antes de otorgar acceso de Dataform a BigQuery:

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

Para resolver este error, otorga acceso de Dataform a BigQuery.

Se rechazó el token de acceso para un repositorio remoto

El siguiente error ocurre cuando tu token de autenticación para un repositorio de terceros conectado no tiene acceso a ese repositorio:

The access token for remote repository REPOSITORY_NAME was rejected

Para resolver este error, verifica los permisos necesarios en tu proveedor de Git y actualiza el token de autenticación de Secret Manager según corresponda. Para obtener más información sobre la autenticación de repositorios de Git de terceros en Dataform, consulta Conéctate a un repositorio de Git de terceros.

Se superó la cuota de BigQuery

El siguiente error ocurre cuando la cantidad de solicitudes a la API que Dataform envía a BigQuery supera la cuota de BigQuery:

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

Para resolver este error, reduce la cantidad de consultas paralelas a menos de 250 de las siguientes maneras:

Si deseas obtener instrucciones para resolver este error en BigQuery, consulta Soluciona problemas de errores de cuota y límite.

Se superó el límite de simultaneidad de consultas de BigQuery

El siguiente error ocurre cuando la cantidad de consultas simultáneas que se ejecutan en BigQuery supera el límite de simultaneidad de consultas de BigQuery :

Exceeded rate limits: too many concurrent queries for this project_and_region

Para resolver este error, reduce la cantidad de consultas paralelas a menos de 250 de las siguientes maneras:

Si deseas obtener instrucciones para resolver este error en BigQuery, consulta Soluciona problemas de errores de cuota y límite.

Errores de invocación de canalización de BigQuery

Los siguientes errores ocurren durante la ejecución de un flujo de trabajo en BigQuery:

Para resolver estos errores, consulta Mensajes de error de BigQuery.

Propiedades includeDependentAssertions en conflicto

El siguiente error ocurre durante la compilación cuando el parámetro includeDependentAssertions se establece para la misma acción con valores diferentes dentro de un archivo:

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

Para resolver este error, edita el archivo y quita las repeticiones en conflicto del parámetro includeDependentAssertions.

Para obtener más información sobre el uso del parámetro includeDependentAssertions para establecer aserciones como dependencias, consulta Establece las aserciones de una acción seleccionada como dependencias.

Falla la compilación

Los siguientes errores ocurren durante la compilación debido al tamaño o la cantidad de consultas compiladas:

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

Para resolver estos errores, sigue estos pasos:

  1. Actualiza Dataform Core a la versión más reciente.
  2. Inspecciona tu flujo de trabajo para identificar y reducir las ineficiencias.
  3. Reduce el tamaño de las consultas de SQL.
  4. Reduce la cantidad de operaciones de JavaScript en la memoria, por ejemplo:

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

Para obtener más información sobre los límites de recursos de compilación de Dataform, consulta Cuotas y límites.

Errores de dependencia de @dataform/core

Los siguientes errores ocurren durante la compilación si la dependencia dataform-core en package.json está desactualizada:

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

La dependencia @dataform/core es obligatoria en package.json. Cuando inicializas el primer espacio de trabajo en tu repositorio, Dataform propaga automáticamente package.json con la versión actual de @dataform/core. Debes actualizar @dataform/core a la versión más reciente a medida que se publique.

Para resolver estos errores, actualiza @dataform/core a la versión más reciente.

No se pudo resolver dataform.json

El siguiente error ocurre cuando inicializas un espacio de trabajo de Dataform, pero el proceso de inicialización no instala todos los paquetes:

Uncaught Error: Failed to resolve dataform.json

Para resolver este error, en tu espacio de trabajo, abre package.json y haz clic en Install packages.

No se pudo resolver workflow_settings.yaml

El siguiente error ocurre cuando inicializas un espacio de trabajo de Dataform, pero el proceso de inicialización no instala todos los paquetes:

Uncaught Error: Failed to resolve workflow_settings.yaml

Para resolver este error, en tu espacio de trabajo, abre workflow_settings.yaml y haz clic en Install packages.

No se admiten los destinos de paquetes git+

El siguiente error ocurre cuando defines paquetes en package.json con destinos que tienen el prefijo 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 no admite destinos de paquetes con el prefijo git+.

Para resolver este error, genera una URL tar.gz del paquete y actualiza el destino del paquete en package.json. Para obtener más información sobre la instalación de paquetes en Dataform, consulta Instala un paquete.

Se denegó el permiso de credenciales de usuario final

El siguiente error ocurre cuando ejecutas tu carga de trabajo con credenciales de usuario de la Cuenta de Google, pero Dataform no tiene los permisos necesarios:

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

Este error puede ocurrir si tu organización usa reglas de Acceso Context-Aware que restringen el acceso a los Google Cloud servicios según la identidad y el contexto del usuario.

Para resolver este error, es posible que debas actualizar tu configuración de Acceso Context-Aware para permitir que Dataform use credenciales de usuario de la Cuenta de Google. Para ello, debes eximir el ID de cliente de OAuth de Dataform en la configuración de tu nivel de acceso. Para obtener detalles sobre cómo eximir aplicaciones, consulta Configura niveles de acceso para aplicaciones compatibles.

Para obtener el ID de cliente de OAuth para Dataform, comunícate con Atención al cliente de Cloud.

Se agotó el tiempo de espera de la instalación del paquete

El siguiente error ocurre cuando el tamaño de los paquetes definidos en package.json supera el tamaño máximo de las dependencias de NPM:

API request error: Package installation timed out

Para resolver este error, quita los paquetes redundantes de package.json. Asegúrate de que el archivo package.json no contenga @dataform/cli y de que el tamaño total de las dependencias de NPM definidas no supere los 200 MB.

Si tus configuraciones de lanzamiento hacen referencia a confirmaciones de Git, asegúrate de que los archivos package.json en sus destinos sean válidos.

Se denegó el permiso para actuar como una cuenta de servicio

El siguiente error ocurre cuando se habilita el modo estricto de actuar como y la principal que realiza la acción no tiene el permiso iam.serviceAccounts.actAs en la cuenta de servicio efectiva:

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

Este error puede ocurrir durante las siguientes acciones:

  • Crear o actualizar un repositorio
  • Crear o actualizar una configuración de flujo de trabajo
  • Crear una invocación de flujo de trabajo
  • Actualizar una configuración de lanzamiento

Para resolver este error, otorga el rol de usuario de la cuenta de servicio (roles/iam.serviceAccountUser) a la principal en la cuenta de servicio efectiva. Para obtener más información, consulta Otorga los roles de IAM necesarios.

La cuenta de servicio no está visible en el menú desplegable

Cuando configuras un repositorio o una invocación de flujo de trabajo, es posible que el menú Cuenta de servicio no muestre una cuenta de servicio personalizada existente.

Dataform usa la API de Identity and Access Management para enumerar las cuentas de servicio. Esto requiere el permiso iam.serviceAccounts.list a nivel del proyecto.

Para solucionar este problema, realiza una de las siguientes acciones:

  • Haz clic en Ingresar manualmente y, luego, ingresa el ID de la cuenta de servicio.
  • Pídele al administrador del proyecto que te otorgue el rol de visualizador de cuentas de servicio (roles/iam.serviceAccountViewer) o algún otro rol que incluya el iam.serviceAccounts.list permiso en el proyecto.

No se puede acceder al registro de paquetes privados

El siguiente error ocurre cuando vence la autenticación de Dataform para un paquete privado:

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

Para resolver este error, verifica que los detalles de autenticación del registro privado sean válidos para cada registro de NPM. Para obtener más información, consulta Autentica un paquete privado.

No se puede acceder al repositorio remoto

El siguiente error ocurre debido a la inestabilidad de Git o cuando la conexión del repositorio de terceros no se configuró correctamente:

Remote repository REPOSITORY_NAME could not be reached.

Para resolver este error, verifica que se hayan seguido todos los pasos que se indican en Conéctate a un repositorio de Git de terceros. En particular, confirma que se pueda acceder al host de tu repositorio de Git desde Internet público. Además, valida que el token de autenticación o la clave privada sean correctos y tengan los permisos necesarios para acceder al repositorio.

No se puede acceder al repositorio remoto: generic::invalid_argument

El siguiente error ocurre en la página Detalles de las configuraciones de lanzamiento cuando un lanzamiento programado ocasionalmente encuentra una conexión lenta, inestable o interrumpida de GitHub, GitLab o Bitbucket:

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

No es necesario realizar ninguna acción. A menos que persistan los problemas de GitHub, GitLab o Bitbucket Cloud, los lanzamientos programados posteriores pueden realizarse correctamente.

No se puede acceder al secreto de un repositorio remoto

El siguiente error ocurre cuando tu agente de servicio o cuenta de servicio de Dataform no puede acceder a tu secreto de Secret Manager para un repositorio de terceros conectado:

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.

Para resolver este error, haz lo siguiente:

  • Verifica que tu agente de servicio o cuenta de servicio de Dataform tenga acceso al secreto.
  • Excluye el secreto de tu perímetro de servicio de VPC-SC. Por el momento, Dataform no admite VPC-SC.

Argumento desconocido: tags

El siguiente error ocurre cuando tu versión de la CLI de Dataform no reconoce el argumento tags:

Unknown argument: tags

Para resolver este error, haz lo siguiente:

  • Actualiza la versión de la CLI a 3.0.0 o una posterior. Siempre prueba las versiones nuevas de paquetes en un entorno que no sea de producción antes de implementarlas en tu entorno de producción.
  • Como práctica recomendada, siempre usa la versión más reciente disponible del paquete de Dataform Core.
  • Especifica explícitamente la versión del paquete en package.json, por ejemplo, 3.0.0. No uses otras dependencies opciones de package.json, por ejemplo, >version.