Resolver erros de limites e cotas

O BigQuery tem várias cotas e limites que limitam a taxa e o volume de diferentes solicitações e operações. Eles existem para proteger a infraestrutura e ajudar a proteger contra o uso inesperado do cliente. Neste documento, descrevemos como diagnosticar e mitigar erros específicos resultantes de cotas e limites.

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

Visão geral

Se uma operação do BigQuery falhar devido ao exceder uma cota, a API retornará o código de status HTTP 403 Forbidden. O corpo da resposta contém mais informações sobre o limite que foi atingido. O corpo da resposta será semelhante a este:

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

O campo message no payload descreve o limite que foi excedido. Por exemplo, o campo message exibirá Exceeded rate limits: too many table update operations for this table.

Em geral, os limites de cota se enquadram em duas categorias, indicadas pelo campo reason no payload de resposta.

  • rateLimitExceeded: este valor indica um limite de curto prazo. Para resolver esses problemas de limite, tente realizar a operação novamente após alguns segundos. Use a espera exponencial no intervalo das tentativas de repetição. Ou seja, aumente exponencialmente o atraso entre cada nova tentativa.

  • quotaExceeded: este valor indica um limite de longo prazo. Se você atingir um limite de cota de longo prazo, aguarde 10 minutos ou mais antes de tentar novamente. Se você alcançar um desses limites de cota de longo prazo frequentemente, analise sua carga de trabalho para encontrar formas de minimizar o problema. Isso pode incluir a otimização da carga de trabalho ou a solicitação de um aumento de cota.

Para erros quotaExceeded, analise a mensagem de erro para entender qual limite de cota foi excedido. Em seguida, analise a carga de trabalho para ver se é possível evitar atingir a cota.

Em alguns casos, é possível aumentar a cota ao entrar em contato com o suporte do BigQuery ou com a equipe de vendas do Google Cloud, mas recomendamos seguir as sugestões deste documento primeiro.

Diagnóstico

Para diagnosticar problemas, faça o seguinte:

  • Use as visualizações INFORMATION_SCHEMA para analisar o problema original. Essas visualizações contêm metadados sobre seus recursos do BigQuery, incluindo jobs, reservas e inserções por streaming.

    Por exemplo, na consulta a seguir, a visualização INFORMATION_SCHEMA.JOBS é usada para listar todos os erros relacionados a cotas que ocorreram no dia anterior:

    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')
    
  • Veja os erros nos registros de auditoria do Cloud.

    Por exemplo, usando o Explorador de registros, a consulta a seguir retorna erros com Quota exceeded ou limit na string da 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 status 7 indica PERMISSION_DENIED, que corresponde ao código de status HTTP 403.

    Para ver mais amostras de consultas dos Registros de auditoria do Cloud, acesse Consultas do BigQuery.

Erros de limite da fila de consultas

Se um projeto tentar enfileirar consultas mais interativas ou em lote do que o limite de filas permite, talvez você encontre esse 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

Para resolver esse erro, faça o seguinte:

  • Pause o job. Se você identificar um processo ou um fluxo de trabalho responsável por um aumento nas consultas, pause esse processo ou fluxo de trabalho.

  • Use jobs com prioridade de lote. É possível enfileirar mais consultas em lote do que consultas interativas.

  • Distribua consultas. Organize e distribua a carga entre diferentes projetos conforme informado pela natureza das consultas e suas necessidades de negócios.

  • Distribua tempos de execução. Distribua a carga por um período maior. Se for necessário executar várias consultas na solução de relatórios, tente introduzir uma ordem aleatória para o início das consultas. Por exemplo, não inicie todos os relatórios ao mesmo tempo.

  • Use o BigQuery BI Engine. Se você encontrou esse erro ao usar uma ferramenta de Business Intelligence (BI) para criar painéis que consultam dados no BigQuery, recomendamos que use o BigQuery BI Engine. Usar o BigQuery BI Engine é ideal para este caso de uso.

  • Otimize as consultas e o modelo de dados. Muitas vezes, uma consulta pode ser reescrita para que seja executada com mais eficiência. Por exemplo, se a consulta contiver uma cláusula de expressão de tabela comum (CTE)WITH, que é referenciada em mais de um lugar na consulta, esse cálculo será feito várias vezes. É melhor manter os cálculos feitos pelo CTE em uma tabela temporária e depois referenciá-la na consulta.

    Várias junções também podem ser a fonte de falta de eficiência. Nesse caso, use colunas aninhadas e repetidas. Isso geralmente melhora 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.

    Otimizar as consultas torna-as mais baratas. Assim, ao usar preços baseados em capacidade, é possível executar mais consultas com seus slots. Para mais informações, consulte Introdução à otimização do desempenho da consulta.

  • Otimize o modelo de consulta. O BigQuery não é um banco de dados relacional. Ele não é otimizado para um número infinito de consultas pequenas. A execução de um grande número de consultas pequenas esgota rapidamente as cotas. Essas consultas não são executadas com a mesma eficácia que os produtos de banco de dados menores. O BigQuery é um grande armazenamento de dados e seu principal caso de uso. Ele funciona melhor com consultas de análise em grandes quantidades de dados.

  • Preserve dados (tabelas salvas). Pré-processe os dados no BigQuery e armazene-os em outras tabelas. Por exemplo, se você executar muitas consultas com uso intensivo de computação com condições WHERE diferentes, os resultados não serão armazenados em cache. Essas consultas também consomem recursos sempre que são executadas. Para melhorar o desempenho dessas consultas e diminuir o tempo de processamento, pré-calcule os dados e armazená-los em uma tabela. É possível consultar esses dados pré-calculados na tabela por consultas SELECT. Geralmente, isso pode ser feito durante a ingestão no processo de ETL ou usando consultas programadas ou visualizações materializadas.

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

  • Visualizar os dados da tabela. Para testar ou explorar dados em vez de executar consultas, visualize os dados da tabela com o recurso de visualização de tabela do BigQuery.

  • Use resultados de consulta armazenados em cache. Todos os resultados de consultas, incluindo interativas e em lote, são armazenados em cache em tabelas temporárias por aproximadamente 24 horas, com algumas exceções. A execução de uma consulta em cache ainda é considerada no limite de consultas simultâneas, mas as consultas que usam resultados armazenados 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 computar o conjunto de resultados. do Google Analytics.

Número de modificações de partições para erros de cota de tabelas particionadas por coluna

O BigQuery retorna esse erro quando a tabela particionada por coluna atinge a cota do número de modificações de partição permitidas por dia. As modificações de partição incluem o total de todos os jobs de carregamento, jobs de cópia e jobs de consulta que anexam ou substituem uma partição de destino.

Para ver o valor do limite do Número de modificações de partições de tabela particionada por coluna por dia, consulte 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 essa cota. Para resolver esse erro, faça o seguinte:

  • Altere o particionamento na tabela para ter mais dados em cada partição, a fim de diminuir o número total de partições. Por exemplo, altere do particionamento por dia para o particionamento por mês ou altere como você particiona a tabela.
  • Use clustering em vez de particionamento.
  • Se você carrega dados com frequência de vários arquivos pequenos armazenados no Cloud Storage que usam um job por arquivo, combine vários jobs de carregamento em um único job. É possível carregar usando 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 caracteres curinga (por exemplo, gs://my_path/*).

    Para mais informações, consulte Como carregar dados em lote.

  • Se você usar jobs de carregamento, seleção ou cópia para anexar linhas únicas de dados a uma tabela, por exemplo, agrupe vários jobs em um único job. O BigQuery não tem um bom desempenho quando usado como banco de dados relacional. Como prática recomendada, evite executar ações frequentes de anexação de linha única.
  • Para anexar dados a uma taxa alta, use a API BigQuery Storage Write. É uma solução recomendada para o processamento de dados de alto desempenho. A API BigQuery Storage Write tem recursos avançados, incluindo semântica de entrega exatamente uma vez. Para saber mais sobre limites e cotas, consulte API Storage Write e para ver os custos de uso dessa API, consulte Preços de ingestão de dados do BigQuery.
  • Para monitorar o número de partições modificadas em uma tabela, use a visualização INFORMATION_SCHEMA.

Erros de cota de inserção de streaming

Nesta seção, você verá algumas dicas para solucionar erros de cota relacionados ao streaming de dados no BigQuery.

Em algumas regiões, as inserções de streaming têm uma cota maior se você não preencher o campo insertId de cada linha. Para mais informações sobre cotas para inserções de streaming, consulte Inserções de streaming. Os erros relacionados à cota de streaming do BigQuery dependem da presença ou da ausência de insertId.

Mensagem de erro

Se o campo insertId estiver vazio, o seguinte erro pode acontecer:

Limite de cota Mensagem de erro
Bytes por segundo, por projeto Sua entidade com gaia_id: GAIA_ID no projeto PROJECT_ID na região REGION excedeu a cota de bytes de inserção por segundo.

Se o campo insertId estiver preenchido, os seguintes erros de cota podem acontecer:

Limite de cota Mensagem de erro
Linhas por segundo por projeto Seu projeto PROJECT_ID em REGION excedeu a cota de linhas de inserção de streaming por segundo.
Linhas por segundo por tabela Sua tabela: TABLE_ID excedeu a cota de linhas de inserção de streaming por segundo.
Bytes por segundo por tabela Sua tabela: TABLE_ID excedeu a cota de inserção de streaming de bytes por segundo.

O campo insertId tem como objetivo eliminar a duplicação de linhas inseridas. Se várias inserções com o mesmo insertId chegarem em uma janela dentro de alguns minutos, o BigQuery gravará uma única versão do registro. No entanto, essa eliminação automática não é garantida. Para a capacidade máxima de streaming, recomendamos que você não inclua insertId e use a eliminação de duplicação manual. Para mais informações, consulte Como garantir a consistência dos dados.

Se você encontrar esse erro, diagnostique o problema e siga as etapas recomendadas para resolvê-lo.

Diagnóstico

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

De acordo com o limite de cotas específico que foi alcançado, confira total_rows ou total_input_bytes. Se o erro estiver relacionado com as cotas no nível da tabela, filtre por table_id.

Por exemplo, a consulta a seguir mostra o total de bytes ingerido por minuto e o número total de erros de cota:

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

Resolução

Para resolver esse erro, faça o seguinte:

  • Se você estiver usando o campo insertId para eliminação de duplicação e seu projeto estiver em uma região compatível com a maior cota de streaming, recomendamos remover o campo insertId. Essa solução pode exigir algumas etapas a mais para eliminar a duplicação dos dados manualmente. Para mais informações, consulte Remoção manual de duplicatas.

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

    • Se houver mais erros RATE_LIMIT_EXCEEDED do que QUOTA_EXCEEDED, e o tráfego geral estiver abaixo de 80% da cota, os erros provavelmente indicam picos temporários. Gerencie esses erros repetindo a operação usando a espera exponencial no intervalo das novas tentativas.

    • Se você estiver usando um job do Dataflow para inserir dados, use jobs de carregamento em vez de inserções por streaming. Para mais informações, consulte Como configurar o método de inserção. Se você estiver usando o Dataflow com um conector de E/S personalizado, use um conector de E/S integrado. Para mais informações, consulte Padrões de E/S personalizados.

    • Se você perceber erros QUOTA_EXCEEDED ou se o tráfego geral exceder constantemente 80% da cota, envie uma solicitação para aumentar xda cota. Para mais informações, consulte Como solicitar um limite de cota maior.

    • Considere também substituir as inserções por streaming pela API Storage Write mais recente, que tem maior capacidade, menor preço e muitos recursos úteis.

Como carregar erros de cota de arquivos CSV

Se você carregar um arquivo CSV grande usando o comando bq load com a sinalização --allow_quoted_newlines, poderá encontrar esse 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 esse erro, faça o seguinte:

  • Defina a sinalização --allow_quoted_newlines como false.
  • Divida o arquivo CSV em partes menores que tenham menos de 4 GB.

Para mais informações sobre os limites aplicáveis quando você carrega dados no BigQuery, consulte Jobs de carregamento.

A importação de tabela ou consulta anexa erros de cota

O BigQuery retorna essa mensagem de erro quando a tabela atinge o limite de operações diárias para tabelas padrão. As operações de tabela incluem o total combinado de todos os jobs de carregamento, jobs de cópia e jobs de consulta que anexam ou substituir 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 você encontrar esse erro, diagnostique o problema e siga as etapas recomendadas para resolvê-lo.

Diagnóstico

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

  1. Anote o projeto, o conjunto de dados e a tabela em que a consulta com falha, o carregamento ou o job de cópia está gravando.

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

    No exemplo a seguir, você encontra a contagem de jobs por hora agrupados por tipo de job por um período de 24 horas usando JOBS_BY_PROJECT. Se você espera que vários projetos gravem na tabela, substitua 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
    

Resolução

Não é possível aumentar essa cota. Para resolver esse erro, faça o seguinte:

  • Se você carrega dados com frequência de vários arquivos pequenos armazenados no Cloud Storage que usam um job por arquivo, combine vários jobs de carregamento em um único job. É possível carregar usando 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 caracteres curinga (por exemplo, gs://my_path/*).

    Para mais informações, consulte Como carregar dados em lote.

  • Se você usar jobs de carregamento, seleção ou cópia para anexar linhas únicas de dados a uma tabela, por exemplo, agrupe vários jobs em um único job. O BigQuery não tem um bom desempenho quando usado como banco de dados relacional. Como prática recomendada, evite executar ações frequentes de anexação de linha única.
  • Para anexar dados a uma taxa alta, use a API BigQuery Storage Write. É uma solução recomendada para o processamento de dados de alto desempenho. A API BigQuery Storage Write tem recursos avançados, incluindo semântica de entrega exatamente uma vez. Para saber mais sobre limites e cotas, consulte API Storage Write e para ver os custos de uso dessa API, consulte Preços de ingestão de dados do BigQuery.
  • Para monitorar o número de partições modificadas em uma tabela, use a visualização INFORMATION_SCHEMA.

Taxa máxima de erros de limite de operações de atualização de metadados de tabela

O BigQuery retorna esse erro quando a tabela atinge o limite de taxa máxima de operações de atualização de metadados por tabela para tabelas padrão. As operações de tabela incluem o total combinado de todos os jobs de carregamento, jobs de cópia e jobs de consulta que anexam ou substituem uma tabela de destino ou que usam uma instrução DML DELETE, INSERT, MERGE, TRUNCATE TABLE ou UPDATE para gravar dados em uma tabela.

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

Mensagem de erro

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

Quando você encontrar esse erro, diagnostique o problema e siga as etapas recomendadas para resolvê-lo.

Diagnóstico

As atualizações na tabela de metadados podem ser originadas de chamadas de API, que modificam os metadados de uma tabela ou de jobs que modificam o conteúdo de uma tabela. Se você não tiver identificado a origem da maioria das operações de atualização para os metadados de uma tabela, faça o seguinte:

Identificar chamadas de API
  1. Acesse o menu de navegação do Google Cloud e selecione Geração de registros > Explorador de registros:

    Acesse o Explorador de registros

  2. Filtre os registros para ver as operações de tabela executando esta 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")
    
Identificar jobs

A consulta a seguir retorna uma lista de jobs que modificam a tabela afetada no projeto. Se você espera que vários projetos em uma organização gravem na tabela, substitua 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 mais informações, consulte Visão geral dos registros de auditoria do BigQuery.

Resolução

Não é possível aumentar essa cota. Para resolver esse erro, faça o seguinte:

  • Reduza a taxa de atualização dos metadados da tabela.
  • Adicione um atraso entre os jobs ou as operações da tabela para garantir que a taxa de atualização esteja dentro do limite.
  • Para inserções ou modificações de dados, use operações DML. As operações DML não são afetadas pelo limite de taxa máxima de operações de atualização de metadados da tabela por tabela.

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

  • Se você carrega dados com frequência de vários arquivos pequenos armazenados no Cloud Storage que usam um job por arquivo, combine vários jobs de carregamento em um único job. É possível carregar usando 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 caracteres curinga (por exemplo, gs://my_path/*).

    Para mais informações, consulte Como carregar dados em lote.

  • Se você usar jobs de carregamento, seleção ou cópia para anexar linhas únicas de dados a uma tabela, por exemplo, agrupe vários jobs em um único job. O BigQuery não tem um bom desempenho quando usado como banco de dados relacional. Como prática recomendada, evite executar ações frequentes de anexação de linha única.
  • Para anexar dados a uma taxa alta, use a API BigQuery Storage Write. É uma solução recomendada para o processamento de dados de alto desempenho. A API BigQuery Storage Write tem recursos avançados, incluindo semântica de entrega exatamente uma vez. Para saber mais sobre limites e cotas, consulte API Storage Write e para ver os custos de uso dessa API, consulte Preços de ingestão de dados do BigQuery.
  • Para monitorar o número de partições modificadas em uma tabela, use a visualização INFORMATION_SCHEMA.

Número máximo de erros de limite de solicitações da API

O BigQuery retorna esse erro quando você atinge o limite de taxa do número de solicitações de API a uma API BigQuery por usuário por método. Por exemplo, chamadas do método tables.get a partir de uma conta de serviço ou as chamadas do método jobs.insert a partir de um e-mail de usuário diferente. Para mais informações, consulte o limite de taxa Número máximo de solicitações de API por segundo por usuário por método em Todas as APIs do BigQuery.

Mensagem de erro

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

Quando você encontrar esse erro, diagnostique o problema e siga as etapas recomendadas para resolvê-lo.

Diagnóstico

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

Para a conta de serviço

  1. Acesse o projeto que hospeda a conta de serviço.

  2. No Console do Google Cloud, acesse o Painel de APIs.

    Para ver instruções sobre como visualizar as informações de uso detalhadas de uma API, consulte Como usar o painel de APIs.

  3. No painel de API, selecione API BigQuery.

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

    1. Em Selecionar Gráfico, selecione Tráfego por método de API.

    2. Filtre o gráfico pelas credenciais da conta de serviço. Há picos em um método no período em que você percebeu o erro.

Para chamadas de API

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

  1. No console do Google Cloud, acesse o menu de navegação do Google Cloud. e selecioneGeração de registros > Explorador de registros para seu projeto:

    Acesse o Explorador de registros

  2. Filtre os registros 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 Visão geral dos registros de auditoria do BigQuery.

Resolução

Para resolver esse erro, faça o seguinte:

  • Reduza o número de solicitações de API ou adicione um atraso entre várias solicitações de API para que o número de solicitações permaneça abaixo desse limite.

  • Se o limite for excedido apenas de vez em quando, será possível implementar novas tentativas nesse erro específico com espera exponencial.

  • Se você insere dados com frequência, considere usar inserções por streaming porque elas não são afetadas pela cota da API BigQuery. No entanto, a API de inserções por streaming tem custos associados a ela e tem seu próprio conjunto de limites e cotas.

    Para saber mais sobre o custo das inserções por streaming, consulte Preços do BigQuery.

  • Ao carregar dados no BigQuery usando o Dataflow com o conector de E/S do BigQuery, talvez você veja esse erro no método tables.get. Para resolver esse problema, faça o seguinte:

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

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

  • É possível solicitar um aumento de cota ao entrar em contato com o suporte ou com a equipe de vendas. Para cotas de streaming adicionais, consulte Solicitar um aumento de cota. A solicitação de um aumento de cota pode levar vários dias para ser processada. Para fornecer mais informações, recomendamos que a solicitação inclua a prioridade do job, o usuário que executa a consulta e o método afetado.

Seu projeto excedeu a cota de bytes de consulta verificados gratuitos

O BigQuery retorna esse erro quando você executa uma consulta no nível do uso gratuito e a conta atinge o limite mensal do tamanho de dados que pode ser consultado. Saiba mais sobre Consultas (análise) em Nível de uso gratuito.

Mensagem de erro

Your project exceeded quota for free query bytes scanned

Resolução

Para continuar usando o BigQuery, faça upgrade da conta para uma conta paga do Cloud Billing.

Erros de cota máxima do tabledata.list de bytes por segundo por projeto

O BigQuery retorna esse erro quando o número do projeto mencionado na mensagem de erro atinge o tamanho máximo de dados que podem ser lidos na chamada da API tabledata.list em um projeto por segundo. Para mais informações, consulte 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 esse erro, faça o seguinte:

  • Em geral, recomendamos ficar abaixo desse limite. Por exemplo, espaçando as solicitações por um período maior com atrasos. Se o erro não ocorre com frequência, a implementação de novas tentativas com espera exponencial soluciona esse problema.
  • Se o caso de uso necessita de uma leitura rápida e frequente de uma grande quantidade de dados de uma tabela, recomendamos usar a API BigQuery Storage Read em vez da API tabledata.list.
  • Se as sugestões anteriores não funcionarem, solicite um aumento de cota no painel da API do console do Google Cloud da seguinte maneira:

    1. Acesse o painel de APIs do console do Google Cloud.
    2. No painel, filtre por cota: Tabledata list bytes per minute (default quota).
    3. Selecione a cota e siga as instruções em Como solicitar um limite de cota maior.

    A análise e o processamento da solicitação podem levar vários dias.

Muitas instruções DML pendentes na tabela

Esse erro significa que o número de instruções DML mutáveis simultâneas (UPDATE, DELETE, MERGE) em execução na mesma tabela excedeu o limite de cota da linguagem de manipulação de dados (DML, na sigla em inglês). Esse limite de cota é por tabela e se aplica apenas à DML mutante, que não inclui INSERT.

Resolução

Agrupe os jobs em DML em lote seguindo as Práticas recomendadas para instruções DML.

Erros de cota do número máximo de jobs de cópia por dia por projeto

O BigQuery retorna esse erro quando o número de jobs de cópia em execução em um projeto excede o limite diário. Saiba mais sobre o limite de Jobs de cópia por dia em Jobs de cópia.

Mensagem de erro

Your project exceeded quota for copies per project

Diagnóstico

Se você quiser coletar mais dados sobre a origem dos jobs de cópia, tente o seguinte:

  • Se os jobs de cópia estiverem em uma única região ou em apenas algumas, tente 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_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
    
    A parte REGION_NAME precisa ser substituída pelo nome da região incluindo o prefixo region-. Por exemplo, region-us, region-asia-south1. Ajuste o intervalo de tempo conforme o período que você prefere.
  • Para conferir todos os jobs de cópia em todas as regiões, use 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 snapshot de dados, use snapshots de tabela. Os snapshots de tabela são uma alternativa mais barata e rápida de copiar tabelas inteiras.
  • Você pode solicitar um aumento de cota entrando em contato com as equipes de suporte ou vendas. A análise e o processamento da solicitação podem levar vários dias. Recomendamos informar a prioridade, o caso de uso e o ID do projeto na solicitação.

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

Esse erro é retornado no BigQuery quando o número de consultas simultâneas que contêm funções remotas excede o limite.

Para saber mais sobre o limite de funções remotas, consulte 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 Limites da função remota.

Resolução

  • Ao usar funções remotas, siga as práticas recomendadas.
  • Você pode solicitar um aumento de cota entrando em contato com as equipes de suporte ou vendas. A análise e o processamento da solicitação podem levar vários dias. Recomendamos informar a prioridade, o caso de uso e o ID do projeto na solicitação.

Erros de limite de tamanho de embaralhamento

O BigQuery retorna esse erro quando o projeto excede o limite máximo de tamanho de disco e memória disponível para operações de embaralhamento.

Essa cota é calculada por reserva e dividida entre os projetos das reservas. A cota não pode ser modificada pelo Cloud Customer Care. Saiba mais sobre seu uso consultando a visualização INFORMATION_SCHEMA.JOBS_TIMELINE.

Mensagem de erro

Você encontrará 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 esse erro, faça o seguinte:

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

Esse erro significa que você excedeu a cota de instruções CREATE MODEL.

Mensagem de erro

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

Resolução

Se você exceder a cota para instruções CREATE MODEL, solicite um aumento de cota.