Resolva problemas de erros de quota e limite

O BigQuery tem várias cotas e limites que limitam a taxa e o volume de diferentes pedidos e operações. Existem para proteger a infraestrutura e ajudar a proteger contra a utilização inesperada por parte dos clientes. Este documento descreve como diagnosticar e mitigar erros específicos resultantes de quotas e limites.

Se a sua mensagem de erro não estiver listada neste documento, consulte a lista de mensagens de erro, que tem mais informações de erro genéricas.

Vista geral

Se uma operação do BigQuery falhar devido à excedência de uma quota, a API devolve o código de estado HTTP 403 Forbidden. O corpo da resposta contém mais informações sobre a quota atingida. O corpo da resposta é semelhante ao seguinte:

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

O campo message na carga útil descreve que limite foi excedido. Por exemplo, o campo message pode indicar Exceeded rate limits: too many table update operations for this table.

Em geral, os limites de quota dividem-se em duas categorias, indicadas pelo campo reason no payload de resposta.

  • rateLimitExceeded. Este valor indica um limite de curto prazo. Para resolver estes problemas de limites, tente novamente a operação após alguns segundos. Use a retirada exponencial entre as tentativas de repetição. Ou seja, aumente exponencialmente o intervalo de tempo entre cada nova tentativa.

  • quotaExceeded. Este valor indica um limite a mais longo prazo. Se atingir um limite de quota de longo prazo, deve aguardar 10 minutos ou mais antes de tentar a operação novamente. Se atingir consistentemente um destes limites de quota a longo prazo, deve analisar a sua carga de trabalho para encontrar formas de mitigar o problema. As mitigações podem incluir a otimização da sua carga de trabalho ou o pedido de um aumento da quota.

Para erros quotaExceeded, examine a mensagem de erro para compreender que limite de quota foi excedido. Em seguida, analise a sua carga de trabalho para ver se consegue evitar atingir a quota.

Em alguns casos, a quota pode ser aumentada se contactar o apoio técnico do BigQuery ou contactar Google Cloud as vendas, mas recomendamos que experimente primeiro as sugestões neste documento.

Diagnóstico

Para diagnosticar problemas, faça o seguinte:

  • Use as vistas INFORMATION_SCHEMA juntamente com o qualificador de região para analisar o problema subjacente. Estas vistas contêm metadados sobre os seus recursos do BigQuery, incluindo tarefas, reservas e inserções por streaming.

    Por exemplo, a seguinte consulta usa a vista INFORMATION_SCHEMA.JOBS para listar todos os erros relacionados com a quota no último dia:

    SELECT
    job_id,
    creation_time,
    error_result
    FROM  `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS
    WHERE creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP, INTERVAL 1 DAY) AND
        error_result.reason IN ('rateLimitExceeded', 'quotaExceeded')

    Substitua REGION_NAME pela região do projeto. Tem de ser precedido por region-. Por exemplo, para a USmultirregião, use region-us.

  • Ver erros nos registos de auditoria do Cloud.

    Por exemplo, usando o Explorador de registos, a seguinte consulta devolve erros com Quota exceeded ou limit na string de mensagem:

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

    Neste exemplo, o código de estado 7 indica PERMISSION_DENIED, que corresponde ao código de estado HTTP 403.

    Para ver exemplos de consultas adicionais dos registos de auditoria do Google Cloud, consulte o artigo Consultas do BigQuery.

Erros de limite da fila de consultas

Se um projeto tentar colocar em fila mais consultas interativas ou em lote do que o seu limite de fila permite, pode encontrar este erro.

Mensagem de erro

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

Resolução

Não é possível aumentar este limite. Para resolver este erro de quota, faça o seguinte:

  • Pausar a tarefa. Se identificar um processo ou um pipeline responsável por um aumento nas consultas, pause esse processo ou pipeline.

  • Use trabalhos com prioridade de lote. Pode colocar em fila mais consultas em lote do que consultas interativas.

  • Distribuir consultas. Organize e distribua a carga por diferentes projetos, conforme indicado pela natureza das suas consultas e pelas necessidades da sua empresa.

  • Distribuir tempos de corrida. Distribuir a carga por um período mais longo. Se a sua solução de relatórios precisar de executar muitas consultas, experimente introduzir alguma aleatoriedade no início das consultas. Por exemplo, não inicie todos os relatórios ao mesmo tempo.

  • Use o BigQuery BI Engine. Se encontrou este erro ao usar uma ferramenta de business intelligence (BI) para criar painéis de controlo que consultam dados no BigQuery, recomendamos que use o BI Engine do BigQuery. A utilização do BigQuery BI Engine é ideal para este exemplo de utilização.

  • Otimize as consultas e o modelo de dados. Muitas vezes, uma consulta pode ser reescrita para ser executada de forma mais eficiente. Por exemplo, se a sua consulta contiver uma cláusula Common table expression (CTE)WITH, que é referenciada em mais de um local na consulta, este cálculo é feito várias vezes. É melhor persistir os cálculos feitos pela CTE numa tabela temporária e, em seguida, fazer referência à mesma na consulta.

    As junções múltiplas também podem ser a origem da falta de eficiência. Neste caso, pode considerar usar colunas aninhadas e repetidas. A utilização desta opção melhora frequentemente a localidade dos dados, elimina a necessidade de algumas junções e, no geral, reduz o consumo de recursos e o tempo de execução da consulta.

    A otimização das consultas torna-as mais baratas. Assim, quando usa os preços baseados na capacidade, pode executar mais consultas com os seus slots. Para mais informações, consulte o artigo Introdução à otimização do desempenho das consultas.

  • Otimize o modelo de consulta. O BigQuery não é uma base de dados relacional. Não está otimizado para um número infinito de pequenas consultas. A execução de um grande número de pequenas consultas esgota rapidamente as suas quotas. Essas consultas não são executadas com a mesma eficiência que nos produtos de base de dados mais pequenos. O BigQuery é um grande armazém de dados e este é o seu principal exemplo de utilização. Tem um melhor desempenho com consultas analíticas sobre grandes quantidades de dados.

  • Persistir dados (tabelas guardadas). Pré-processe os dados no BigQuery e armazene-os em tabelas adicionais. Por exemplo, se executar muitas consultas semelhantes e com grande exigência computacional com diferentes WHEREcondições, os respetivos resultados não são colocados em cache. Essas consultas também consomem recursos sempre que são executadas. Pode melhorar o desempenho dessas consultas e diminuir o respetivo tempo de processamento pré-calculando os dados e armazenando-os numa tabela. Estes dados pré-calculados na tabela podem ser consultados por consultas SELECT. Muitas vezes, pode fazê-lo durante a carregamento no processo de ETL ou usando consultas agendadas ou vistas materializadas.

  • Use o modo de teste. Execute consultas no modo de teste, que estima o número de bytes lidos, mas não processa efetivamente a consulta.

  • Pré-visualize os dados da tabela. Para experimentar ou explorar dados em vez de executar consultas, pré-visualize os dados da tabela com a capacidade de pré-visualização de tabelas do BigQuery.

  • Use resultados de consultas em cache. Todos os resultados das consultas, incluindo consultas interativas e em lote, são colocados em cache em tabelas temporárias durante aproximadamente 24 horas, com algumas exceções. Embora a execução de uma consulta em cache continue a ser contabilizada para o limite de consultas concorrentes, as consultas que usam resultados em cache são significativamente mais rápidas do que as consultas que não usam resultados em cache, porque o BigQuery não precisa de calcular o conjunto de resultados.

Número de modificações de partições para erros de quota de tabelas com partições de colunas

O BigQuery devolve este erro quando a tabela particionada por colunas atinge a quota do número de modificações de partições permitidas por dia. As modificações de partições incluem o total de todas as tarefas de carregamento, tarefas de cópia e tarefas de consulta que acrescentam ou substituem uma partição de destino.

Para ver o valor do limite de modificações de partições por tabela particionada por colunas por dia, consulte o artigo Tabelas particionadas.

Mensagem de erro

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

Resolução

Não é possível aumentar esta quota. Para resolver este erro de quota, faça o seguinte:

  • Altere a partição na tabela para ter mais dados em cada partição, de modo a diminuir o número total de partições. Por exemplo, altere a partição por dia para partição por mês ou altere a forma como faz a partição da tabela.
  • Use a agrupamento em vez da partição.
  • Se carregar frequentemente dados de vários ficheiros pequenos armazenados no Cloud Storage que usam uma tarefa por ficheiro, combine várias tarefas de carregamento numa única tarefa. Pode carregar a partir de vários URIs do Cloud Storage com uma lista separada por vírgulas (por exemplo, gs://my_path/file_1,gs://my_path/file_2) ou usando carateres universais (por exemplo, gs://my_path/*).

    Para mais informações, consulte o artigo Carregue dados em lote.

  • Se usar tarefas de carregamento, seleção ou cópia para anexar linhas únicas de dados a uma tabela, por exemplo, deve considerar agrupar várias tarefas numa só. O BigQuery não tem um bom desempenho quando usado como uma base de dados relacional. Como prática recomendada, evite executar ações de anexação de uma única linha frequentes.
  • Para acrescentar dados a uma taxa elevada, considere usar a API BigQuery Storage Write. É uma solução recomendada para a importação de dados de elevado desempenho. A API Storage Write do BigQuery tem funcionalidades robustas, incluindo a semântica de entrega exatamente uma vez. Para saber mais sobre limites e quotas, consulte o artigo API Storage Write e, para ver os custos de utilização desta API, consulte o artigo Preços de carregamento de dados do BigQuery.
  • Para monitorizar o número de partições modificadas numa tabela, use a vista INFORMATION_SCHEMA.

Erros de quota de inserção de streaming

Esta secção dá algumas sugestões para resolver problemas de erros de quota relacionados com o streaming de dados para o BigQuery.

Em determinadas regiões, as inserções de streaming têm uma quota mais elevada se não preencher o campo insertId para cada linha. Para mais informações sobre quotas para inserções de streaming, consulte o artigo Inserções de streaming. Os erros relacionados com a quota para o streaming do BigQuery dependem da presença ou ausência de insertId.

Mensagem de erro

Se o campo insertId estiver vazio, é possível que ocorra o seguinte erro de quota:

Limite de quota Mensagem de erro
Bytes por segundo por projeto A sua entidade com gaia_id: GAIA_ID, project: PROJECT_ID na região: REGION excedeu a quota de bytes de inserção por segundo.

Se o campo insertId estiver preenchido, são possíveis os seguintes erros de quota:

Limite de quota Mensagem de erro
Linhas por segundo por projeto O seu projeto: PROJECT_ID em REGION excedeu a quota de inserção de linhas por segundo de streaming.
Linhas por segundo por tabela A sua tabela: TABLE_ID excedeu a quota de linhas de inserção de streaming por segundo.
Bytes por segundo por tabela A sua tabela: TABLE_ID excedeu a quota de bytes de inserção de streaming por segundo.

O objetivo do campo insertId é remover duplicados das linhas inseridas. Se chegarem várias inserções com o mesmo insertId num período de alguns minutos, o BigQuery escreve uma única versão do registo. No entanto, esta deduplicação automática não é garantida. Para maximizar o débito de streaming, recomendamos que não inclua insertId e, em alternativa, use a desduplicação manual. Para mais informações, consulte o artigo Garantir a consistência dos dados.

Quando encontrar este erro, diagnostique o problema e, em seguida, siga os passos recomendados para o resolver.

Diagnóstico

Use as visualizações STREAMING_TIMELINE_BY_* para analisar o tráfego de streaming. Estas vistas agregam estatísticas de streaming em intervalos de um minuto, agrupadas por código de erro. Os erros de quota aparecem nos resultados com error_code igual a RATE_LIMIT_EXCEEDED ou QUOTA_EXCEEDED.

Consoante o limite de quota específico que foi atingido, consulte total_rows ou total_input_bytes. Se o erro for uma quota ao nível da tabela, filtre por table_id.

Por exemplo, a consulta seguinte mostra o total de bytes carregados por minuto e o número total de erros de quota:

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-REGION_NAME`.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

Resolução

Para resolver este erro de quota, faça o seguinte:

  • Se estiver a usar o campo insertId para a remoção de duplicados e o seu projeto estiver numa região que suporta a quota de streaming mais elevada, recomendamos que remova o campo insertId. Esta solução pode exigir alguns passos adicionais para remover manualmente duplicações dos dados. Para mais informações, consulte o artigo Remova manualmente duplicados.

  • Se não estiver a usar o insertId ou se não for possível removê-lo, monitorize o tráfego de streaming durante um período de 24 horas e analise os erros de quota:

    • Se vir principalmente erros RATE_LIMIT_EXCEEDED em vez de erros QUOTA_EXCEEDED, e o seu tráfego geral estiver abaixo de 80% da quota, os erros indicam provavelmente picos temporários. Pode resolver estes erros repetindo a operação com uma retirada exponencial entre as repetições.

    • Se estiver a usar uma tarefa do Dataflow para inserir dados, considere usar tarefas de carregamento em vez de inserções por streaming. Para mais informações, consulte o artigo Definir o método de inserção. Se estiver a usar o Dataflow com um conetor de E/S personalizado, considere usar um conetor de E/S incorporado. Para mais informações, consulte Padrões de E/S personalizados.

    • Se vir QUOTA_EXCEEDED erros ou o tráfego geral exceder consistentemente 80% da quota, envie um pedido de aumento da quota. Para mais informações, consulte Peça um ajuste da quota.

    • Também pode considerar substituir as inserções de streaming pela mais recente API Storage Write, que tem um débito mais elevado, um preço mais baixo e muitas funcionalidades úteis.

Erros de quota de carregamento de ficheiros CSV

Se carregar um ficheiro CSV grande através do comando bq load com a flag --allow_quoted_newlines, pode ocorrer este erro.

Mensagem de erro

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

Resolução

Para resolver este erro de quota, faça o seguinte:

  • Defina a flag --allow_quoted_newlines como false.
  • Divida o ficheiro CSV em partes mais pequenas, cada uma com menos de 4 GB.

Para mais informações sobre os limites aplicáveis quando carrega dados para o BigQuery, consulte o artigo Tarefas de carregamento.

Erros de quota de importações de tabelas ou anexos de consultas

O BigQuery devolve esta mensagem de erro quando a sua tabela atinge o limite de operações de tabelas por dia para tabelas padrão. As operações de tabelas incluem o total combinado de todas as tarefas de carregamento, tarefas de cópia e tarefas de consulta que acrescentam ou substituem uma tabela de destino.

Para ver o valor do limite de operações de tabela por dia, consulte Tabelas padrão.

Mensagem de erro

Your table exceeded quota for imports or query appends per table

Quando encontrar este erro, diagnostique o problema e, em seguida, siga os passos recomendados para o resolver.

Diagnóstico

Se não tiver identificado a origem da maioria das operações de tabelas, faça o seguinte:

  1. Tome nota do projeto, do conjunto de dados e da tabela para os quais a consulta, o carregamento ou a tarefa de cópia com falhas está a escrever.

  2. Use INFORMATION_SCHEMA.JOBS_BY_*tabelas para saber mais sobre as tarefas que modificam a tabela.

    O exemplo seguinte encontra a contagem horária de tarefas agrupadas por tipo de tarefa para o período das últimas 24 horas usando JOBS_BY_PROJECT. Se esperar que vários projetos escrevam na tabela, substitua JOBS_BY_PROJECT por JOBS_BY_ORGANIZATION.

    SELECT
    TIMESTAMP_TRUNC(creation_time, HOUR),
    job_type,
    count(1)
    FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS_BY_PROJECT
    WHERE creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP, INTERVAL 1 DAY)
    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

Resolução

Não é possível aumentar esta quota. Para resolver este erro de quota, faça o seguinte:

  • Se carregar frequentemente dados de vários ficheiros pequenos armazenados no Cloud Storage que usam uma tarefa por ficheiro, combine várias tarefas de carregamento numa única tarefa. Pode carregar a partir de vários URIs do Cloud Storage com uma lista separada por vírgulas (por exemplo, gs://my_path/file_1,gs://my_path/file_2) ou usando carateres universais (por exemplo, gs://my_path/*).

    Para mais informações, consulte o artigo Carregue dados em lote.

  • Se usar tarefas de carregamento, seleção ou cópia para anexar linhas únicas de dados a uma tabela, por exemplo, deve considerar agrupar várias tarefas numa só. O BigQuery não tem um bom desempenho quando usado como uma base de dados relacional. Como prática recomendada, evite executar ações de anexação de uma única linha frequentes.
  • Para acrescentar dados a uma taxa elevada, considere usar a API BigQuery Storage Write. É uma solução recomendada para a importação de dados de elevado desempenho. A API Storage Write do BigQuery tem funcionalidades robustas, incluindo a semântica de entrega exatamente uma vez. Para saber mais sobre limites e quotas, consulte o artigo API Storage Write e, para ver os custos de utilização desta API, consulte o artigo Preços de carregamento de dados do BigQuery.
  • Para monitorizar o número de partições modificadas numa tabela, use a vista INFORMATION_SCHEMA.

Erros de limite máximo de operações de atualização de metadados de tabelas

O BigQuery devolve este erro quando a sua tabela atinge o limite da taxa máxima de operações de atualização de metadados de tabelas por tabela para tabelas padrão. As operações de tabelas incluem o total combinado de todas as tarefas de carregamento, tarefas de cópia e tarefas de consulta que acrescentam ou substituem uma tabela de destino ou que usam um DML DELETE, INSERT, MERGE, TRUNCATE TABLE ou UPDATE para escrever dados numa tabela.

Para ver o valor do limite de operações de atualização de metadados de tabelas por tabela, consulte Tabelas padrão.

Mensagem de erro

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

Quando encontrar este erro, diagnostique o problema e, em seguida, siga os passos recomendados para o resolver.

Diagnóstico

As atualizações das tabelas de metadados podem ter origem em chamadas API que modificam os metadados de uma tabela ou em tarefas que modificam o conteúdo de uma tabela. Se não tiver identificado a origem de onde a maioria das operações de atualização dos metadados de uma tabela está a ter origem, faça o seguinte:

Identifique chamadas da API
  1. Aceda ao Google Cloud menu de navegação e selecione Registo > Explorador de registos:

    Aceda ao Explorador de registos

  2. Filtre os registos para ver as operações da tabela executando a seguinte consulta:

    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")
    
Identifique empregos

A consulta seguinte devolve uma lista de trabalhos que modificam a tabela afetada no projeto no último dia. Se espera que vários projetos numa organização escrevam na tabela, substitua JOBS_BY_PROJECT por JOBS_BY_ORGANIZATION.

SELECT
 job_id,
 user_email,
 query
FROM  `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS_BY_PROJECT
WHERE creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP, INTERVAL 1 DAY)
AND destination_table.project_id = "my-project-id"
AND destination_table.dataset_id = "my_dataset"
AND destination_table.table_id = "my_table"

Para mais informações, consulte a vista geral dos registos de auditoria do BigQuery.

Resolução

Não é possível aumentar esta quota. Para resolver este erro de quota, faça o seguinte:

  • Reduza a taxa de atualização dos metadados da tabela.
  • Adicione um atraso entre tarefas ou operações de tabelas para garantir que a taxa de atualização está dentro do limite.
  • Para inserções ou modificações de dados, considere usar operações DML. As operações DML não são afetadas pelo limite de taxa de operações de atualização de metadados de tabelas máximo por tabela.

    As operações DML têm outros limites e quotas. Para mais informações, consulte o artigo Usar a linguagem de manipulação de dados (DML).

  • Se carregar frequentemente dados de vários ficheiros pequenos armazenados no Cloud Storage que usam uma tarefa por ficheiro, combine várias tarefas de carregamento numa única tarefa. Pode carregar a partir de vários URIs do Cloud Storage com uma lista separada por vírgulas (por exemplo, gs://my_path/file_1,gs://my_path/file_2) ou usando carateres universais (por exemplo, gs://my_path/*).

    Para mais informações, consulte o artigo Carregue dados em lote.

  • Se usar tarefas de carregamento, seleção ou cópia para anexar linhas únicas de dados a uma tabela, por exemplo, deve considerar agrupar várias tarefas numa só. O BigQuery não tem um bom desempenho quando usado como uma base de dados relacional. Como prática recomendada, evite executar ações de anexação de uma única linha frequentes.
  • Para acrescentar dados a uma taxa elevada, considere usar a API BigQuery Storage Write. É uma solução recomendada para a importação de dados de elevado desempenho. A API Storage Write do BigQuery tem funcionalidades robustas, incluindo a semântica de entrega exatamente uma vez. Para saber mais sobre limites e quotas, consulte o artigo API Storage Write e, para ver os custos de utilização desta API, consulte o artigo Preços de carregamento de dados do BigQuery.
  • Para monitorizar o número de partições modificadas numa tabela, use a vista INFORMATION_SCHEMA.

Erros de limite do número máximo de pedidos de API

O BigQuery devolve este erro quando atinge o limite de taxa para o número de pedidos API para uma API BigQuery por utilizador por método, por exemplo, as chamadas do método tables.get de uma conta de serviço ou as chamadas do método jobs.insert de um email de utilizador diferente. Para mais informações, consulte o limite de taxa do número máximo de pedidos de API por segundo por utilizador por método na API BigQuery.

Mensagem de erro

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

Quando encontrar este erro, diagnostique o problema e, em seguida, siga os passos recomendados para o resolver.

Diagnóstico

Se não identificou o método que atingiu este limite de taxa, faça o seguinte:

Para a conta de serviço

  1. Aceda ao projeto que aloja a conta de serviço.

  2. Na Google Cloud consola, aceda ao painel de controlo da API.

    Para ver instruções sobre como ver as informações de utilização detalhadas de uma API, consulte o artigo Usar o painel de controlo da API.

  3. No painel de controlo da API, selecione API BigQuery.

  4. Para ver informações de utilização mais detalhadas, selecione Métricas e, de seguida, faça o seguinte:

    1. Para Selecionar gráficos, selecione Tráfego por método de API.

    2. Filtre o gráfico pelas credenciais da conta de serviço. Pode ver picos para um método no intervalo de tempo em que detetou o erro.

Para chamadas API

Algumas chamadas API registam erros nos registos de auditoria do BigQuery no Cloud Logging. Para identificar o método que atingiu o limite, faça o seguinte:

  1. Na Google Cloud consola, aceda ao menu de navegação e, de seguida, selecione Registo > Explorador de registos para o seu projeto: Google Cloud

    Aceda ao Explorador de registos

  2. Filtre os registos executando a seguinte consulta:

     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 mais informações, consulte a vista geral dos registos de auditoria do BigQuery.

Resolução

Para resolver este erro de quota, faça o seguinte:

  • Reduza o número de pedidos API ou adicione um atraso entre vários pedidos API para que o número de pedidos permaneça abaixo deste limite.

  • Se o limite for excedido apenas ocasionalmente, pode implementar novas tentativas neste erro específico com retirada exponencial.

  • Se inserir dados com frequência, considere usar inserções por stream, uma vez que as inserções por stream não são afetadas pela quota da API BigQuery. No entanto, a API Streaming Inserts tem custos associados e o seu próprio conjunto de limites e quotas.

    Para saber mais acerca do custo das inserções por transmissão, consulte os preços do BigQuery.

  • Ao carregar dados para o BigQuery através do Dataflow com o conetor BigQuery I/O, pode encontrar este erro para o método tables.get. Para resolver este problema, faça o seguinte:

    • Defina a disposição de criação da tabela de destino como CREATE_NEVER. Para mais informações, consulte Crie uma disposição.

    • Use a versão 2.24.0 ou superior do SDK do Apache Beam. Nas versões anteriores do SDK, a disposição CREATE_IF_NEEDED chama o método tables.get para verificar se a tabela existe.

  • Pode pedir um aumento da quota contactando o apoio técnico ou a equipa de vendas. Para obter quota adicional, consulte o artigo Peça um aumento da quota. O processamento de um pedido de aumento da quota pode demorar vários dias. Para fornecer mais informações para a sua solicitação, recomendamos que inclua a prioridade da tarefa, o utilizador que está a executar a consulta e o método afetado.

O seu projeto excedeu a quota de bytes de consulta gratuitos analisados

O BigQuery devolve este erro quando executa uma consulta no nível de utilização gratuito e a conta atinge o limite mensal do tamanho dos dados que podem ser consultados. Para mais informações sobre Consultas (análise), consulte o Nível de utilização gratuito.

Mensagem de erro

Your project exceeded quota for free query bytes scanned

Resolução

Para continuar a usar o BigQuery, tem de atualizar a conta para uma conta de faturação do Google Cloud paga.

Máximo de tabledata.list bytes por segundo por erros de quota do projeto

O BigQuery devolve este erro quando o número do projeto mencionado na mensagem de erro atinge o tamanho máximo de dados que podem ser lidos através da chamada da API tabledata.list num projeto por segundo. Para mais informações, consulte o artigo Máximo de tabledata.list bytes por minuto.

Mensagem de erro

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

Resolução

Para resolver este erro, faça o seguinte:

  • Em geral, recomendamos que tente manter-se abaixo deste limite. Por exemplo, espaçando os pedidos durante um período mais longo com atrasos. Se o erro não ocorrer com frequência, a implementação de novas tentativas com recuo exponencial resolve este problema.
  • Se o exemplo de utilização esperar uma leitura rápida e frequente de uma grande quantidade de dados de uma tabela, recomendamos que use a API BigQuery Storage Read em vez da API tabledata.list.
  • Se as sugestões anteriores não funcionarem, pode pedir um aumento da quota no Google Cloud painel de controlo da API da consola fazendo o seguinte:

    1. Aceda ao Google Cloud painel de controlo da API da consola.
    2. No painel de controlo, filtre por Quota: Tabledata list bytes per minute (default quota).
    3. Selecione a quota e siga a instrução em Peça um ajuste de quota.

    A revisão e o processamento do pedido podem demorar vários dias.

Demasiadas instruções DML pendentes em relação à tabela

Este erro significa que o número de declarações DML de mutação simultâneas (UPDATE, DELETE, MERGE) executadas na mesma tabela excedeu o limite da quota da linguagem de manipulação de dados (DML). Este limite de quota é por tabela e aplica-se apenas à DML de mutação, que não inclui INSERT.

Resolução

Processe em lote as tarefas DML seguindo as práticas recomendadas para declarações DML.

Erros de quota do número máximo de tarefas de cópia por dia por projeto

O BigQuery devolve este erro quando o número de tarefas de cópia em execução num projeto excedeu o limite diário. Para saber mais acerca do limite de tarefas de cópia por dia, consulte Tarefas de cópia.

Mensagem de erro

Your project exceeded quota for copies per project

Diagnóstico

Se quiser recolher mais dados sobre a origem dos trabalhos de cópia, pode experimentar o seguinte:

  • Se os seus trabalhos de cópia estiverem localizados numa única região ou em apenas algumas, pode tentar consultar a tabela INFORMATION_SCHEMA.JOBS para essas regiões específicas. Por exemplo:

    SELECT
    creation_time, job_id, user_email, destination_table.project_id, destination_table.dataset_id, destination_table.table_id
    FROM `PROJECT_ID`.`region-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

    Também pode ajustar o intervalo de tempo consoante o intervalo de tempo que lhe interessa.

  • Para ver todas as tarefas de cópia em todas as regiões, pode usar o seguinte filtro no Cloud Logging:

    resource.type="bigquery_resource"
    protoPayload.methodName="jobservice.insert"
    protoPayload.serviceData.jobInsertRequest.resource.jobConfiguration.tableCopy:*
    

Resolução

  • Se o objetivo das operações de cópia frequentes for criar um instantâneo dos dados, considere usar instantâneos de tabelas. As capturas instantâneas de tabelas são uma alternativa mais barata e rápida à cópia de tabelas completas.
  • Pode solicitar um aumento da quota contactando o apoio técnico ou as vendas. A revisão e o processamento da solicitação podem demorar vários dias. Recomendamos que indique a prioridade, o exemplo de utilização e o ID do projeto no pedido.

Erro de quota de bytes extraídos por dia excedida

O BigQuery devolve este erro quando a exportação excede o limite diário predefinido de 50 TiB (tebibytes) num projeto. Para mais informações sobre os limites de tarefas de exportação, consulte o artigo Tarefas de exportação.

Mensagem de erro

Your usage exceeded quota for ExtractBytesPerDay

Diagnóstico

Se estiver a exportar uma tabela com mais de 50 TiB, a exportação falha porque excede o limite de exportação. Para contornar este problema, consulte a resolução. Se quiser exportar dados de tabelas para partições de tabelas específicas, pode usar um decorador de partições para identificar as partições a exportar.

Se quiser recolher utilizações de dados de exportação nos últimos dias, pode experimentar o seguinte:

  • Veja as quotas do seu projeto com critérios de filtro, como Name: Extract bytes per day ou Metric: bigquery.googleapis.com/quota/extract/bytes, juntamente com o gráfico Mostrar utilização para ver a tendência de utilização ao longo de alguns dias.

  • Em alternativa, pode consultar INFORMATION_SCHEMA.JOBS_BY_PROJECT para ver o total de bytes extraídos ao longo de alguns dias. Por exemplo, a seguinte consulta devolve o total de bytes processados diariamente por trabalhos EXTRACT nos últimos 7 dias.

    SELECT
    TIMESTAMP_TRUNC(creation_time, DAY) AS day,
    SUM ( total_bytes_processed ) / POW(1024, 3) AS total_gigabytes_processed
    FROM
    `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS_BY_PROJECT
    WHERE
    creation_time BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY) AND CURRENT_TIMESTAMP()
    AND job_type = "EXTRACT"
    GROUP BY 1
    ORDER BY 2 DESC
  • Em seguida, pode refinar ainda mais os resultados identificando as tarefas específicas que estão a consumir mais bytes do que o esperado. O exemplo seguinte devolve as 100 principais tarefas que estão a consumir mais de 100 gigabytes processados nos últimos 7 dias.EXTRACT

    SELECT
    creation_time,
    job_id,
    total_bytes_processed/POW(1024, 3) AS total_gigabytes_processed
    FROM
    `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS_BY_PROJECT
    WHERE
    creation_time BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY) AND CURRENT_TIMESTAMP()
    AND job_type="EXTRACT"
    AND total_bytes_processed > (POW(1024, 3) * 100)
    ORDER BY
    total_bytes_processed DESC
    LIMIT 100

Em alternativa, pode usar o explorador de tarefas com filtros como Bytes processed more than para filtrar tarefas de processamento elevado durante um período especificado.

Resolução

Um método para resolver este erro de quota é criar uma reserva de ranhuras e atribuir o seu projeto à reserva com o tipo de tarefa PIPELINE. Isto pode ignorar a verificação de limites, uma vez que usa as suas reservas dedicadas em vez de um conjunto de espaços partilhados gratuitos. Se necessário, pode eliminar a reserva se quiser usar o conjunto de espaços partilhados mais tarde.

Para abordagens alternativas que permitem exportar mais de 50 TiB (Tebibytes), consulte a secção de notas em Tarefas de exportação.

Número máximo de consultas simultâneas que contêm funções remotas

O BigQuery devolve este erro quando o número de consultas simultâneas que contêm funções remotas excede o limite.

Para saber mais sobre o limite das funções remotas, consulte o artigo Funções remotas.

Mensagem de erro

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

Diagnóstico

Para ver os limites de consultas simultâneas que contêm funções remotas, consulte os Limites de funções remotas.

Resolução

  • Quando usar funções remotas, siga as práticas recomendadas para funções remotas.
  • Pode solicitar um aumento da quota contactando o apoio técnico ou as vendas. A revisão e o processamento da solicitação podem demorar vários dias. Recomendamos que indique a prioridade, o exemplo de utilização e o ID do projeto no pedido.

Erros de limite de tamanho da mistura

O BigQuery devolve este erro quando o seu projeto excede o limite máximo de tamanho do disco e da memória disponível para operações de mistura.

Esta quota é calculada por reserva e dividida entre projetos para as reservas. A quota não pode ser modificada pelo Cloud Customer Care. Pode saber mais sobre a sua utilização consultando a vista INFORMATION_SCHEMA.JOBS_TIMELINE.

Mensagem de erro

Recebe uma das seguintes mensagens de erro:

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

Resolução

Para resolver este erro, faça o seguinte:

Número máximo de CREATE MODEL declarações

Este erro significa que excedeu a quota de declarações CREATE MODEL.

Mensagem de erro

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

Resolução

Se exceder a quota para CREATE MODEL declarações, envie um email para bqml-feedback@google.com e peça um aumento da quota.