Soluciona problemas de cuota y de límite

BigQuery tiene varias cuotas y límites que limitan la tasa y el volumen de diferentes solicitudes y operaciones. Existen para proteger la infraestructura y ayudar a proteger contra el uso inesperado del cliente. En este documento, se describe cómo diagnosticar y mitigar errores específicos que surgen de las cuotas y los límites.

Si tu mensaje de error no aparece en este documento, consulta la lista de mensajes de error que tiene información más genérica sobre el error.

Descripción general

Si una operación de BigQuery falla debido a que se excede una cuota, la API muestra el código de estado HTTP 403 Forbidden. En el cuerpo de la respuesta, se incluye más información sobre la cuota que se alcanzó. El cuerpo de la respuesta es similar al siguiente:

{
  "code" : 403,
  "errors" : [ {
    "domain" : "global",
    "message" : "Quota exceeded: ...",
    "reason" : "quotaExceeded"
  } ],
  "message" : "Quota exceeded: ..."
}

En el campo message de la carga útil, se describe qué límite se superó. Por ejemplo, el campo message podría decir Exceeded rate limits: too many table update operations for this table.

En general, los límites de cuota se dividen en dos categorías que se indican con el campo reason de la carga útil de la respuesta.

  • rateLimitExceeded: Este valor indica un límite a corto plazo. Para resolver estos problemas de límite, vuelve a intentar la operación después de unos segundos. Usa la retirada exponencial entre los reintentos. Es decir, aumenta de forma exponencial el tiempo entre cada reintento.

  • quotaExceeded: Este valor indica un límite a largo plazo. Si alcanzas un límite de cuota a largo plazo, debes esperar 10 minutos o más antes de intentar realizar la operación. Si alcanzas uno de estos límites de cuota a largo plazo con regularidad, debes analizar la carga de trabajo para descubrir cómo mitigar el problema. Las mitigaciones pueden incluir la optimización de la carga de trabajo o la solicitud de un aumento de cuota.

En el caso de los errores quotaExceeded, examina el mensaje de error para comprender qué límite de cuota se superó. Luego, analiza la carga de trabajo para ver si puedes evitar alcanzar la cuota.

En algunos casos, para aumentar la cuota, puedes comunicarte con el equipo de asistencia de BigQuery o con el equipo de Ventas de Google Cloud, pero te recomendamos que primero pruebes las sugerencias de este documento.

Diagnóstico

Para diagnosticar problemas, haz lo siguiente:

  • Usa las vistas INFORMATION_SCHEMA para analizar el problema subyacente. Estas vistas contienen metadatos sobre tus recursos de BigQuery, como trabajos, inserciones de transmisión y reservas.

    Por ejemplo, en la siguiente consulta, se usa la vista INFORMATION_SCHEMA.JOBS para enumerar todos los errores del día anterior relacionados con la cuota:

    SELECT
     job_id,
     creation_time,
     error_result
    FROM `region-us`.INFORMATION_SCHEMA.JOBS
    WHERE creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP, INTERVAL 1 DAY) AND
          error_result.reason IN ('rateLimitExceeded', 'quotaExceeded')
    
  • Visualiza los errores en los Registros de auditoría de Cloud.

    Por ejemplo, si usas el explorador de registros, en la siguiente consulta, se muestran errores Quota exceeded o limit en la string del mensaje:

    resource.type = ("bigquery_project" OR "bigquery_dataset")
    protoPayload.status.code ="7"
    protoPayload.status.message: ("Quota exceeded" OR "limit")
    

    En este ejemplo, el código de estado 7 indica PERMISSION_DENIED, que corresponde al código de estado HTTP 403.

    Para obtener más muestras de consultas de los Registros de auditoría de Cloud, visita Consultas de BigQuery.

Errores de límite de colas de consultas

Si un proyecto intenta poner en cola más consultas interactivas o por lotes de lo que permite su límite de colas, es posible que aparezca este error.

Mensaje de error

Quota exceeded: Your project and region exceeded quota for
max number of jobs that can be queued per project.

Solución

Para resolver este error, haz lo siguiente:

  • Pausa el trabajo. Si identificas un proceso o un flujo de trabajo responsable de un aumento en las consultas, pausa ese proceso o flujo de trabajo.

  • Usa trabajos con prioridad de lote. Puedes poner en cola más consultas por lotes que consultas interactivas.

  • Distribuye consultas. Organiza y distribuye la carga en diferentes proyectos según la naturaleza de tus consultas y las necesidades de tu empresa.

  • Distribuye los tiempos de ejecución. Distribuye la carga en un período más largo. Si tu solución de informes necesita ejecutar muchas consultas, intenta incorporar aleatoriedad para cuando comiencen las consultas. Por ejemplo, no inicies todos los informes al mismo tiempo.

  • Usa BigQuery BI Engine. Si encontraste este error mientras usas una herramienta de inteligencia empresarial (IE) para crear paneles que consultan datos en BigQuery, te recomendamos que uses BigQuery BI Engine. El uso de BigQuery BI Engine es óptimo para este caso práctico.

  • Optimiza las consultas y el modelo de datos. A menudo, una consulta se puede reescribir para que se ejecute de manera más eficiente. Por ejemplo, si tu consulta contiene una expresión de tabla común (CTE)WITH clause–, a la que se hace referencia en más de un lugar en la consulta, este cálculo se realiza varias veces. Es mejor conservar los cálculos que realiza la CTE en una tabla temporal y, luego, hacer referencia a ella en la consulta.

    Las uniones múltiples también pueden ser la fuente de falta de eficiencia. En este caso, es posible que quieras considerar el uso de columnas anidadas y repetidas. Usar esto a menudo mejora la localidad de los datos, elimina la necesidad de algunas uniones y, en general, reduce el consumo de recursos y el tiempo de ejecución de la consulta.

    La optimización de las consultas las hace más económicas, por lo que, cuando usas precios basados en la capacidad, puedes ejecutar más consultas con las ranuras. Para obtener más información, consulta Introducción a la optimización del rendimiento de las consultas.

  • Optimiza el modelo de consulta. BigQuery no es una base de datos relacional. No está optimizado para una cantidad infinita de consultas pequeñas. Si ejecutas una gran cantidad de consultas pequeñas, se agotan rápidamente tus cuotas. Estas consultas no se ejecutan de la manera tan eficiente como lo hacen con los productos de base de datos más pequeños. BigQuery es un almacén de datos grande y este es su caso práctico principal. El rendimiento es mejor con consultas analíticas sobre grandes cantidades de datos.

  • Conserva datos (tablas guardadas). Procesa de manera previa los datos en BigQuery y almacénalos en tablas adicionales. Por ejemplo, si ejecutas muchas consultas similares con procesamiento intensivo con diferentes condiciones WHERE, sus resultados no se almacenarán en caché. Estas consultas también consumen recursos cada vez que se ejecutan. Puedes mejorar el rendimiento de esas consultas y disminuir su tiempo de procesamiento si procesas con anterioridad los datos y los almacenas en una tabla. Estos datos procesados con anterioridad en la tabla se pueden consultar mediante consultas SELECT. A menudo, se puede realizar durante la transferencia dentro del proceso de ETL o mediante las consultas programadas o vistas materializadas.

  • Usa el modo de ejecución de prueba. Ejecuta consultas en modo de ejecución de prueba, con lo que se calcula la cantidad de bytes leídos, pero que no se procesa la consulta.

  • Obtener la vista previa de los datos en la tabla Para experimentar con los datos o explorarlos en lugar de ejecutar consultas, obtén una vista previa de los datos de tablas con la función de vista previa de tablas de BigQuery.

  • Usa los resultados de las consultas en caché. Todos los resultados de consultas, incluidas las consultas interactivas y por lotes, se almacenan en caché en tablas temporales durante unas 24 horas, con algunas excepciones. Si bien la ejecución de una consulta almacenada en caché aún se considera para el límite de consultas simultáneas, las consultas que usan los resultados en caché son mucho más rápidas que las consultas que no usan resultados almacenados en caché porque BigQuery no necesita procesar el conjunto de resultados.

Cantidad de modificaciones de particiones para errores de cuotas de tablas particionadas por columnas

BigQuery muestra este error cuando tu tabla particionada por columnas alcanza la cuota de la cantidad de modificaciones de partición permitidas por día. Las modificaciones de partición incluyen el total de todos los trabajos de carga, Trabajos de copia y Trabajos de consulta que agregan o reemplazan una partición de destino.

Para ver el valor del límite para la cantidad de modificaciones de partición por tabla particionada por columnas por día, consulta Tablas particionadas.

Mensaje de error

Quota exceeded: Your table exceeded quota for
Number of partition modifications to a column partitioned table

Solución

No se puede aumentar esta cuota. Para resolver este error, haz lo siguiente:

  • Cambia la partición en la tabla para tener más datos en cada partición a fin de disminuir la cantidad total de particiones. Por ejemplo, cambia de partición por día a partición por mes o cambia la forma en que particionas la tabla.
  • Usa el agrupamiento en clústeres en lugar de la partición.
  • Si frecuentemente cargas datos de varios archivos pequeños almacenados en Cloud Storage que usan un trabajo por archivo, combina varios trabajos de carga en un solo trabajo. Puedes cargar desde varios URI de Cloud Storage con una lista separada por comas (por ejemplo, gs://my_path/file_1,gs://my_path/file_2) o mediante comodines (por ejemplo, gs://my_path/*).

    Para obtener más información, consulta Carga datos por lotes.

  • Si usas trabajos de carga, selección o copia para agregar filas individuales de datos a una tabla, por ejemplo, deberías considerar agrupar varios trabajos en uno solo. BigQuery no funciona bien cuando se usa como base de datos relacional. Como práctica recomendada, evita ejecutar acciones frecuentes de agregado de una sola fila.
  • Para agregar datos a una frecuencia alta, considera usar la API de BigQuery Storage Write. Es una solución recomendada para la transferencia de datos de alto rendimiento. La API de BigQuery Storage Write cuenta con características sólidas, como la semántica de entrega del tipo “exactamente una vez”. Para obtener información sobre los límites y las cuotas, consulta lo siguiente API de Storage Write, y para ver los costos de usar esta API, consulta Precios de la transferencia de datos en BigQuery.
  • Para supervisar la cantidad de particiones modificadas en una tabla, usa la vista INFORMATION_SCHEMA.

Errores de cuota relacionados con la inserción de transmisión

En esta sección, se proporcionan algunas sugerencias para solucionar los errores de cuota relacionados con la transmisión de datos a BigQuery.

En ciertas regiones, las inserciones de transmisión tienen una cuota más alta si no propagas el campo insertId de cada fila. Si deseas obtener más información sobre las cuotas de las inserciones de transmisión, consulta Inserciones de transmisión. Los errores relacionados con la cuota de transmisión de BigQuery dependen de la presencia o ausencia de insertId.

Mensaje de error

Si el campo insertId está vacío, es posible que surja el siguiente error de cuota:

Límite de cuota Mensaje de error
Bytes por segundo por proyecto La entidad con gaia_id GAIA_ID, del proyecto PROJECT_ID en la región REGION superó la cuota de inserción de bytes por segundo.

Si se propaga el campo insertId, es posible que surjan los siguientes errores de cuota:

Límite de cuota Mensaje de error
Filas por segundo por proyecto El proyecto PROJECT_ID en la región REGION superó la cuota de inserción de transmisión de filas por segundo.
Filas por segundo por tabla La tabla TABLE_ID superó la cuota de inserción de transmisión de filas por segundo.
Bytes por segundo por tabla La tabla TABLE_ID superó la cuota de inserción de transmisión de bytes por segundo.

El propósito del campo insertId es anular la duplicación de las filas insertadas. Si varias inserciones con el mismo insertId llegan dentro de un período de pocos minutos, BigQuery escribe una sola versión del registro. Sin embargo, esta anulación automática de duplicación no está garantizada. Para obtener la máxima capacidad de procesamiento de transmisión, recomendamos que no incluyas insertId y, en su lugar, uses la anulación manual de duplicación. Para obtener más información, consulta Garantiza la coherencia de los datos.

Cuando encuentres este error, diagnostica el problema y, luego, sigue los pasos recomendados para resolverlo.

Diagnóstico

Usa las vistas STREAMING_TIMELINE_BY_* para analizar el tráfico de transmisión. En estas vistas, se juntan las estadísticas de transmisión en intervalos de un minuto, agrupadas por código de error. Los errores de cuota aparecen en los resultados en los que error_code es igual a RATE_LIMIT_EXCEEDED o a QUOTA_EXCEEDED.

Según el límite de cuota específico que se haya alcanzado, observa total_rows o total_input_bytes. Si el error se produjo en una cuota a nivel de tabla, filtra por table_id.

Por ejemplo, en la siguiente consulta, se muestra el total de bytes transferidos por minuto y la cantidad total de errores de cuota:

SELECT
 start_timestamp,
 error_code,
 SUM(total_input_bytes) as sum_input_bytes,
 SUM(IF(error_code IN ('QUOTA_EXCEEDED', 'RATE_LIMIT_EXCEEDED'),
     total_requests, 0)) AS quota_error
FROM
 `region-us`.INFORMATION_SCHEMA.STREAMING_TIMELINE_BY_PROJECT
WHERE
  start_timestamp > TIMESTAMP_SUB(CURRENT_TIMESTAMP, INTERVAL 1 DAY)
GROUP BY
 start_timestamp,
 error_code
ORDER BY 1 DESC

Solución

Para resolver este error, haz lo siguiente:

  • Si usas el campo insertId para la anulación de duplicación, y tu proyecto está en una región que admite la cuota de transmisión más alta, te recomendamos que quites el campo insertId. Esta solución puede requerir algunos pasos adicionales para anular de forma manual la duplicación de los datos. Para obtener más información, consulta Quita los duplicados manualmente.

  • Si no usas insertId o si no es viable quitarlo, supervisa el tráfico de transmisión durante un período de 24 horas y analiza los errores de cuota:

    • Si ves sobre todo errores RATE_LIMIT_EXCEEDED, en lugar de errores QUOTA_EXCEEDED, y el tráfico total es inferior al 80% de la cuota, es probable que los errores indiquen aumentos de tráfico temporales. Puedes abordar estos errores si reintentas la operación mediante una retirada exponencial entre los reintentos.

    • Si usas un trabajo de Dataflow para insertar datos, considera usar trabajos de carga en lugar de inserciones de transmisión. Para obtener más información, consulta Configura el método de inserción. Si usas Dataflow con un conector de E/S personalizado, considera usar un conector de E/S integrado en su lugar. Para obtener más información, consulta Patrones de E/S personalizados.

    • Si ves errores QUOTA_EXCEEDED o si el tráfico total supera el 80% de la cuota de forma constante, envía una solicitud de aumento de cuota. Para obtener más información, consulta Solicita un límite de cuota mayor.

    • También puedes considerar reemplazar las inserciones de transmisión con la API de Storage Write más reciente, que tiene una capacidad de procesamiento mayor, un precio más bajo y muchas funciones útiles.

Carga errores de cuota de archivos CSV

Si cargas un archivo CSV grande mediante el comando bq load con la marca --allow_quoted_newlines, es posible que aparezca este error.

Mensaje de error

Input CSV files are not splittable and at least one of the files is larger than
the maximum allowed size. Size is: ...

Solución

Para resolver este error, haz lo siguiente:

  • Establece la marca --allow_quoted_newlines en false.
  • Divide el archivo CSV en fragmentos más pequeños que tienen menos de 4 GB.

Para obtener más información sobre los límites que se aplican cuando cargas datos en BigQuery, consulta Trabajos de carga.

La tabla importa o consulta los errores de cuota anexados.

BigQuery muestra este mensaje de error cuando tu tabla alcanza el límite de operaciones de tabla por día para las tablas estándar. Las operaciones de tabla incluyen el total combinado de todos los trabajos de carga, Trabajos de copia y Trabajos de consulta que agregan o reemplazar una tabla de destino.

Para ver el valor del límite de operaciones de tabla por día, consulta Tablas estándar.

Mensaje de error

Your table exceeded quota for imports or query appends per table

Cuando encuentres este error, diagnostica el problema y, luego, sigue los pasos recomendados para resolverlo.

Diagnóstico

Si no identificaste la fuente desde la que se origina la mayoría de las operaciones de tabla, haz lo siguiente:

  1. Toma nota del proyecto, el conjunto de datos y la tabla en la que escribe la consulta, la carga o el trabajo de copia con errores.

  2. Usa las tablas INFORMATION_SCHEMA.JOBS_BY_* para obtener más información sobre los trabajos que modifican la tabla.

    En el siguiente ejemplo, se encuentra el recuento de trabajos agrupados por tipo de trabajo por un período de 24 horas mediante JOBS_BY_PROJECT. Si esperas que varios proyectos escriban en la tabla, reemplaza JOBS_BY_PROJECT por JOBS_BY_ORGANIZATION.

    SELECT
      TIMESTAMP_TRUNC(creation_time, HOUR),
      job_type,
      count(1)
    FROM `region-us`.INFORMATION_SCHEMA.JOBS_BY_PROJECT
    #Adjust time
    WHERE creation_time BETWEEN "2021-06-20 00:00:00" AND "2021-06-21 00:00:00"
    AND destination_table.project_id = "my-project-id"
    AND destination_table.dataset_id = "my_dataset"
    AND destination_table.table_id = "my_table"
    GROUP BY 1, 2
    ORDER BY 1 DESC
    

Solución

No se puede aumentar esta cuota. Para resolver este error, haz lo siguiente:

  • Si frecuentemente cargas datos de varios archivos pequeños almacenados en Cloud Storage que usan un trabajo por archivo, combina varios trabajos de carga en un solo trabajo. Puedes cargar desde varios URI de Cloud Storage con una lista separada por comas (por ejemplo, gs://my_path/file_1,gs://my_path/file_2) o mediante comodines (por ejemplo, gs://my_path/*).

    Para obtener más información, consulta Carga datos por lotes.

  • Si usas trabajos de carga, selección o copia para agregar filas individuales de datos a una tabla, por ejemplo, deberías considerar agrupar varios trabajos en uno solo. BigQuery no funciona bien cuando se usa como base de datos relacional. Como práctica recomendada, evita ejecutar acciones frecuentes de agregado de una sola fila.
  • Para agregar datos a una frecuencia alta, considera usar la API de BigQuery Storage Write. Es una solución recomendada para la transferencia de datos de alto rendimiento. La API de BigQuery Storage Write cuenta con características sólidas, como la semántica de entrega del tipo “exactamente una vez”. Para obtener información sobre los límites y las cuotas, consulta lo siguiente API de Storage Write, y para ver los costos de usar esta API, consulta Precios de la transferencia de datos en BigQuery.
  • Para supervisar la cantidad de particiones modificadas en una tabla, usa la vista INFORMATION_SCHEMA.

Frecuencia máxima de errores de límite de operaciones de actualización de metadatos en la tabla

BigQuery muestra este error cuando tu tabla alcanza el límite de frecuencia máxima de operaciones de actualización de metadatos en la tabla para tablas estándar. Las operaciones de la tabla incluyen el total combinado de todos los trabajos de carga, trabajos de copia y trabajos de consulta que agregan o reemplazan una tabla de destino o que usan una declaración DML DELETE, INSERT, MERGE, TRUNCATE TABLE o UPDATE para escribir datos en una tabla.

Para ver el valor del límite para la Frecuencia máxima de operaciones de actualización de metadatos en la tabla por tabla, consulta Tablas estándar.

Mensaje de error

Exceeded rate limits: too many table update operations for this table

Cuando encuentres este error, diagnostica el problema y, luego, sigue los pasos recomendados para resolverlo.

Diagnóstico

Las actualizaciones de la tabla de metadatos pueden originarse a partir de llamadas a la API que modifican los metadatos de una tabla o de trabajos que modifican el contenido de una tabla. Si no identificaste la fuente desde la que se origina la mayoría de las operaciones de actualización en los metadatos de una tabla, haz lo siguiente:

Identifica llamadas a la API
  1. Ve al menú de navegación de Google Cloud y selecciona Logging > Explorador de registros:

    Ir al Explorador de registros.

  2. Ejecuta la siguiente consulta para filtrar los registros y ver las operaciones de tabla:

    resource.type="bigquery_dataset"
    protoPayload.resourceName="projects/my-project-id/datasets/my_dataset/tables/my_table"
    (protoPayload.methodName="google.cloud.bigquery.v2.TableService.PatchTable" OR
    protoPayload.methodName="google.cloud.bigquery.v2.TableService.UpdateTable" OR
    protoPayload.methodName="google.cloud.bigquery.v2.TableService.InsertTable")
    
Identifica trabajos

En la siguiente consulta, se muestra una lista de trabajos que modifican la tabla afectada en el proyecto. Si esperas que varios proyectos de una organización escriban en la tabla, reemplaza JOBS_BY_PROJECT por JOBS_BY_ORGANIZATION.

SELECT
 job_id,
 user_email,
 query
#Adjust region
FROM `region-us`.INFORMATION_SCHEMA.JOBS_BY_PROJECT
#Adjust time
WHERE creation_time BETWEEN "2021-06-21 10:00:00" AND "2021-06-21 20:00:00"
AND destination_table.project_id = "my-project-id"
AND destination_table.dataset_id = "my_dataset"
AND destination_table.table_id = "my_table"

Para obtener más información, consulta la descripción general de los registros de auditoría de BigQuery.

Solución

No se puede aumentar esta cuota. Para resolver este error, haz lo siguiente:

  • Reduce la frecuencia de actualización para los metadatos en la tabla.
  • Agrega un retraso entre los trabajos o las operaciones de tabla para asegurarte de que la frecuencia de actualización esté dentro del límite.
  • Para inserciones o modificaciones de datos, considera usar operaciones DML. Las operaciones DML no se ven afectadas por el límite de frecuencia de la frecuencia máxima de operaciones de actualización de metadatos en la tabla por tabla.

    Las operaciones DML tienen otros límites y cuotas. Para obtener más información, consulta Usa el lenguaje de manipulación de datos (DML).

  • Si frecuentemente cargas datos de varios archivos pequeños almacenados en Cloud Storage que usan un trabajo por archivo, combina varios trabajos de carga en un solo trabajo. Puedes cargar desde varios URI de Cloud Storage con una lista separada por comas (por ejemplo, gs://my_path/file_1,gs://my_path/file_2) o mediante comodines (por ejemplo, gs://my_path/*).

    Para obtener más información, consulta Carga datos por lotes.

  • Si usas trabajos de carga, selección o copia para agregar filas individuales de datos a una tabla, por ejemplo, deberías considerar agrupar varios trabajos en uno solo. BigQuery no funciona bien cuando se usa como base de datos relacional. Como práctica recomendada, evita ejecutar acciones frecuentes de agregado de una sola fila.
  • Para agregar datos a una frecuencia alta, considera usar la API de BigQuery Storage Write. Es una solución recomendada para la transferencia de datos de alto rendimiento. La API de BigQuery Storage Write cuenta con características sólidas, como la semántica de entrega del tipo “exactamente una vez”. Para obtener información sobre los límites y las cuotas, consulta lo siguiente API de Storage Write, y para ver los costos de usar esta API, consulta Precios de la transferencia de datos en BigQuery.
  • Para supervisar la cantidad de particiones modificadas en una tabla, usa la vista INFORMATION_SCHEMA.

Cantidad máxima de errores de límite de solicitudes a la API

BigQuery muestra este error cuando alcanzas el límite de frecuencia para la cantidad de solicitudes a la API a una API de BigQuery por usuario por método (por ejemplo, el método tables.get llama desde una cuenta de servicio, o el método jobs.insert llama desde un correo electrónico de usuario diferente). Para obtener más información, consulta el límite de frecuencia de la cantidad máxima de solicitudes a la API por segundo por usuario y por método en Todas las API de BigQuery.

Mensaje de error

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

Cuando encuentres este error, diagnostica el problema y, luego, sigue los pasos recomendados para resolverlo.

Diagnóstico

Si no identificaste el método que alcanzó este límite de frecuencia, haz lo siguiente:

Para la cuenta de servicio

  1. Ve al proyecto que aloja la cuenta de servicio.

  2. En la consola de Google Cloud, ve al Panel de la API.

    Si deseas obtener instrucciones para ver la información de uso detallada de una API, consulta Usa el panel de la API.

  3. En el panel de la API, selecciona API de BigQuery.

  4. Para ver información de uso más detallada, selecciona Métricas y, luego, haz lo siguiente:

    1. En Seleccionar gráficos, selecciona Tráfico por método de API.

    2. Filtra el gráfico por las credenciales de la cuenta de servicio. Es posible que veas aumentos repentinos en un método en el intervalo de tiempo en el que detectaste el error.

Para las llamadas a la API

Algunas llamadas a la API registran errores en los registros de auditoría de BigQuery en Cloud Logging. Para identificar el método que alcanzó el límite, haz lo siguiente:

  1. En la consola de Google Cloud, ve al menú de navegación de Google Cloud y, luego, seleccioneRegistros > Explorador de registros para tu proyecto:

    Ir al Explorador de registros.

  2. Ejecuta la siguiente consulta para filtrar registros:

     resource.type="bigquery_resource"
     protoPayload.authenticationInfo.principalEmail="<user email or service account>"
     "Too many API requests per user per method for this user_method"
     In the log entry, you can find the method name under the property protoPayload.method_name.
     

    Para obtener más información, consulta la descripción general de los registros de auditoría de BigQuery.

Solución

Para resolver este error, haz lo siguiente:

  • Reduce la cantidad de solicitudes a la API o agrega un retraso entre las solicitudes para que la cantidad de solicitudes permanezca por debajo de este límite.

  • Si el límite solo se excede en ocasiones, puedes implementar reintentos en este error específico con una retirada exponencial.

  • Si insertas datos con frecuencia, considera usar inserciones de transmisión, ya que las inserciones de transmisión no se ven afectadas por la cuota de la API de BigQuery. Sin embargo, la API de inserción de transmisión tiene costos asociados y tiene su propio conjunto de límites y cuotas.

    Si deseas obtener más información sobre el costo de las inserciones de transmisión, consulta los precios de BigQuery.

  • Mientras cargas datos en BigQuery mediante Dataflow con el conector de E/S de BigQuery, es posible que encuentres este error para el método tables.get. Para solucionar este problema, haz lo siguiente:

    • Establece la disposición de creación de la tabla de destino en CREATE_NEVER. Para obtener más información, consulta Crea la disposición.

    • Usa la versión 2.24.0 o una superior del SDK de Apache Beam. En las versiones anteriores del SDK, la disposición CREATE_IF_NEEDED llama al método tables.get para verificar si la tabla existe.

  • Para solicitar un aumento de cuota, comunícate con el equipo de asistencia o de ventas. Si deseas obtener una cuota adicional, consulta Solicita un aumento de la cuota. Una solicitud de aumento de cuota puede tardar varios días en procesarse. Para proporcionar más información sobre tu solicitud, te recomendamos que incluya la prioridad del trabajo, el usuario que ejecuta la consulta y el método afectado.

Tu proyecto superó la cuota gratuita de análisis de bytes de consultas

BigQuery muestra este error cuando ejecutas una consulta en el nivel de uso gratuito y la cuenta alcanza el límite mensual de la cantidad de datos que se puede consultar. Para obtener más información sobre Consultas (análisis), consulta Nivel de uso gratuito.

Mensaje de error

Your project exceeded quota for free query bytes scanned

Solución

Para seguir usando BigQuery, debes actualizar la cuenta a una cuenta de Facturación de Cloud pagada.

Errores de cuota máxima de bytes por segundo por proyecto de tabledata.list

BigQuery muestra este error cuando el número de proyecto mencionado en el mensaje de error alcanza el tamaño máximo de datos que se pueden leer a través de la llamada a la API tabledata.list en un proyecto por segundo. Para obtener más información, consulta Cantidad máxima de bytes de tabledata.list por minuto.

Mensaje de error

Your project:[project number] exceeded quota for tabledata.list bytes per second per project

Solución

Para resolver este error, haz lo siguiente:

  • En general, recomendamos que intentes mantenerte por debajo de este límite. Por ejemplo, mediante el espaciado de solicitudes durante un período más largo con retrasos. Si el error no ocurre con frecuencia, la implementación de reintentos con retirada exponencial resuelve este problema.
  • Si el caso de uso espera una lectura rápida y frecuente de grandes cantidades de datos de una tabla, recomendamos usar la API de lectura de almacenamiento de BigQuery en lugar de la API de tabledata.list.
  • Si las sugerencias anteriores no funcionan, puedes solicitar un aumento de cuota desde el panel de la API de la consola de Google Cloud. Para ello, haz lo siguiente:

    1. Ve al panel de la API de la consola de Google Cloud.
    2. En el panel, filtra por cuota: Tabledata list bytes per minute (default quota).
    3. Selecciona la cuota y sigue las instrucciones que aparecen en Solicita un límite de cuota mayor.

    La revisión y el procesamiento de la solicitud pueden tardar varios días.

Hay demasiadas declaraciones DML pendientes en la tabla

Este error significa que la cantidad de declaraciones DML de mutación simultáneas (UPDATE, DELETE, MERGE) que se ejecutan en la misma tabla, superan el límite de cuota del lenguaje de manipulación de datos (DML). Este límite de cuota es por tabla y se aplica únicamente al DML de mutación, que no incluye INSERT.

Solución

Agrupa los trabajos de DML según las Prácticas recomendadas para las declaraciones DML.

Errores de cuota de la cantidad máxima de trabajos de copia por día por errores

BigQuery muestra este error cuando la cantidad de trabajos de copia que se ejecutan en un proyecto superó el límite diario. Para obtener más información sobre el límite de Trabajos de copia por día, consulta Trabajos de copia.

Mensaje de error

Your project exceeded quota for copies per project

Diagnóstico

Si deseas recopilar más datos sobre el origen de los trabajos de copia, puedes probar lo siguiente:

  • Si tus trabajos de copia se encuentran en una sola región o en pocas regiones, puedes intentar consultar la tabla INFORMATION_SCHEMA.JOBS para esas regiones específicas. Por ejemplo:
    SELECT
    creation_time, job_id, user_email, destination_table.project_id, destination_table.dataset_id, destination_table.table_id
    FROM `PROJECT_ID`.`REGION_NAME`.INFORMATION_SCHEMA.JOBS
    WHERE
    creation_time BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 2 DAY) AND CURRENT_TIMESTAMP()
    AND job_type = "COPY"
    order by creation_time DESC
    La parte REGION_NAME se debe reemplazar por el nombre de la región, incluido el prefijo region-. Por ejemplo, region-us , region-asia-south1. También puedes ajustar el intervalo según el rango de tiempo que te interese.
  • Para ver todos los trabajos de copia en todas las regiones, puedes usar el siguiente filtro en Cloud Logging:
    resource.type="bigquery_resource"
    protoPayload.methodName="jobservice.insert"
    protoPayload.serviceData.jobInsertRequest.resource.jobConfiguration.tableCopy:*
    

Solución

  • Si el objetivo de las operaciones de copia frecuentes es crear una instantánea de datos, considera usar instantáneas de tabla en su lugar. Las instantáneas de tablas son una alternativa más económica y rápida para copiar tablas completas.
  • Para solicitar un aumento de cuota, comunícate con el equipo de asistencia o el de Ventas. La revisión y el procesamiento de la solicitud pueden tardar varios días. Recomendamos indicar la prioridad, el caso de uso y el ID del proyecto en la solicitud.

Cantidad máxima de consultas simultáneas que contienen funciones remotas

BigQuery muestra este error cuando la cantidad de consultas simultáneas que contienen funciones remotas supera el límite.

Para obtener más información sobre el límite de funciones remotas, consulta Funciones remotas.

Mensaje de error

Exceeded rate limits: too many concurrent queries with remote functions for
this project

Diagnóstico

Para ver los límites de las consultas simultáneas que contienen funciones remotas, consulta Límites de funciones remotas.

Solución

  • Cuando uses funciones remotas, cumple con las prácticas recomendadas para las funciones remotas.
  • Para solicitar un aumento de cuota, comunícate con el equipo de asistencia o el de Ventas. La revisión y el procesamiento de la solicitud pueden tardar varios días. Recomendamos indicar la prioridad, el caso de uso y el ID del proyecto en la solicitud.

Errores de límite de tamaño de Shuffle

BigQuery muestra este error cuando tu proyecto excede el límite máximo de disco y tamaño de memoria disponible para las operaciones de Shuffle.

Esta cuota se calcula por reserva y se divide en proyectos para las reservas. El servicio de Atención al cliente de Cloud no puede modificar la cuota. Para obtener más información sobre tu uso, consulta la vista INFORMATION_SCHEMA.JOBS_TIMELINE.

Mensaje de error

Tal vez recibas alguno de los siguientes mensajes de error:

  • Quota exceeded: Your project exceeded quota for total shuffle size limit.
  • Resources exceeded: Your project or organization exceeded the maximum
    disk and memory limit available for shuffle operations. Consider provisioning
    more slots, reducing query concurrency, or using more efficient logic in this
    job.

Solución

Para resolver este error, haz lo siguiente:

Cantidad máxima de declaraciones CREATE MODEL

Este error significa que superaste la cuota de las declaraciones CREATE MODEL.

Mensaje de error

Quota exceeded: Your project exceeded quota for CREATE MODEL queries per project.

Solución

Si superas la cuota de las declaraciones CREATE MODEL, solicita un aumento de la cuota.