Risolvi i problemi relativi a quote e limiti

BigQuery prevede varie quote e limiti che limitano la frequenza e il volume di diverse richieste e operazioni. Esistono sia per proteggere l'infrastruttura sia per contribuire a evitare utilizzi imprevisti da parte dei clienti. Questo documento descrive come diagnosticare e mitigare errori specifici derivanti da quote e limiti.

Se il tuo messaggio di errore non è elencato in questo documento, fai riferimento all'elenco dei messaggi di errore contenente informazioni più generiche.

Panoramica

Se un'operazione BigQuery non va a buon fine a causa del superamento di una quota, l'API restituisce il codice di stato HTTP 403 Forbidden. Il corpo della risposta contiene ulteriori informazioni sulla quota raggiunta. Il corpo della risposta avrà il seguente aspetto:

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

Il campo message nel payload descrive quale limite è stato superato. Ad esempio, il contenuto del campo message potrebbe essere Exceeded rate limits: too many table update operations for this table.

In generale, i limiti di quota si suddividono in due categorie, indicate dal campo reason nel payload della risposta.

  • rateLimitExceeded. Questo valore indica un limite a breve termine. Per risolvere questi problemi relativi ai limiti, riprova a eseguire l'operazione dopo qualche secondo. Usa il backoff esponenziale tra un tentativo e l'altro. ovvero aumenta esponenzialmente il ritardo tra un nuovo tentativo e l'altro.

  • quotaExceeded. Questo valore indica un limite a lungo termine. Se raggiungi un limite di quota a lungo termine, devi attendere almeno 10 minuti prima di riprovare a eseguire l'operazione. Se raggiungi sistematicamente uno di questi limiti di quota a lungo termine, devi analizzare il tuo carico di lavoro per capire come risolvere il problema. Le mitigazioni possono includere l'ottimizzazione del carico di lavoro o la richiesta di aumento della quota.

Per gli errori quotaExceeded, esamina il messaggio di errore per capire quale limite di quota è stato superato. Analizza quindi il carico di lavoro per capire se puoi evitare di raggiungere la quota.

In alcuni casi, la quota può essere aumentata contattando l'assistenza di BigQuery o contattando il team di vendita di Google Cloud, ma ti consigliamo di provare prima i suggerimenti contenuti in questo documento.

Diagnosi

Per diagnosticare i problemi:

  • Utilizza INFORMATION_SCHEMA vista per analizzare il problema di fondo. Queste viste contengono metadati relativi alle tue risorse BigQuery, tra cui job, prenotazioni e inserimento di flussi di dati.

    Ad esempio, la seguente query utilizza la visualizzazione INFORMATION_SCHEMA.JOBS per elencare tutti gli errori relativi alle quote dell'ultimo giorno:

    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')
    
  • Visualizza gli errori in Cloud Audit Logs.

    Ad esempio, utilizzando Esplora log, la seguente query restituisce errori con Quota exceeded o limit nella stringa del messaggio:

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

    In questo esempio, il codice di stato 7 indica PERMISSION_DENIED, che corrisponde al codice di stato HTTP 403.

    Per altri esempi di query di Cloud Audit Logs, consulta Query BigQuery.

Errori relativi ai limiti della coda di query

Se un progetto tenta di aggiungere query più interattive o batch di quanto consentito dal limite di code, potresti riscontrare questo errore.

Messaggio di errore

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

Risoluzione

Per risolvere questo errore di quota:

  • Metti in pausa il job. Se identifichi un processo o un flusso di lavoro responsabile di un aumento delle query, mettilo in pausa.

  • Utilizza job con priorità batch. Puoi mettere in coda più query batch che query interattive.

  • Distribuisci le query. Organizza e distribuisci il carico tra diversi progetti in base alla natura delle query e alle esigenze aziendali.

  • Distribuzione delle durate di esecuzione. Distribuisci il carico su un intervallo di tempo più ampio. Se la tua soluzione di reporting deve eseguire molte query, prova a introdurre un po' di casualità per l'avvio delle query. Ad esempio, non avviare tutti i report contemporaneamente.

  • Utilizza BigQuery BI Engine. Se hai riscontrato questo errore durante l'utilizzo di uno strumento di business intelligence (BI) per creare dashboard per eseguire query sui dati in BigQuery, ti consigliamo di utilizzare BigQuery BI Engine. L'utilizzo di BigQuery BI Engine è ottimale per questo caso d'uso.

  • Ottimizza le query e il modello dei dati. Spesso una query può essere riscritta per essere eseguita in modo più efficiente. Ad esempio, se la query contiene una clausola Espressione tabella comune (CTE)-WITH, a cui viene fatto riferimento in più posizioni della query, il calcolo viene eseguito più volte. È meglio mantenere i calcoli eseguiti dal CTE in una tabella temporanea, per poi farvi riferimento nella query.

    I join multipli possono anche essere la fonte di mancanza di efficienza. In questo caso, ti consigliamo di utilizzare colonne nidificate e ripetute. L'utilizzo di questa soluzione spesso migliora la località dei dati, elimina la necessità di alcuni join e, nel complesso, riduce il consumo di risorse e il tempo di esecuzione delle query.

    L'ottimizzazione delle query le rende più economiche, quindi quando utilizzi prezzi basati sulla capacità, puoi eseguire più query con i tuoi slot. Per ulteriori informazioni, consulta Introduzione all'ottimizzazione delle prestazioni delle query.

  • Ottimizza il modello di query. BigQuery non è un database relazionale. Non è ottimizzata per un numero infinito di query di piccole dimensioni. L'esecuzione di un numero elevato di query di piccole dimensioni esaurisce rapidamente le quote. Queste query non vengono eseguite con la stessa efficienza dei prodotti di database più piccoli. BigQuery è un grande data warehouse e questo è il suo caso d'uso principale. Offre i migliori risultati con query analitiche su grandi quantità di dati.

  • Mantieni i dati (tabelle salvate). Pre-elabora i dati in BigQuery e li archivia in altre tabelle. Ad esempio, se esegui molte query simili a elevata intensità di calcolo con condizioni WHERE diverse, i relativi risultati non vengono memorizzati nella cache. Queste query consumano anche risorse ogni volta che vengono eseguite. Puoi migliorare le prestazioni di queste query e ridurne i tempi di elaborazione pre-calcolando i dati e archiviandoli in una tabella. Questi dati precalcolati nella tabella possono essere interrogati mediante SELECT query. Spesso questa operazione può essere eseguita durante l'importazione all'interno del processo ETL oppure utilizzando query pianificate o viste materializzate.

  • Utilizza la modalità di prova. Esegui le query in modalità di prova, che stima il numero di byte letti ma non elabora effettivamente la query.

  • Visualizza l'anteprima dei dati della tabella. Per sperimentare o esplorare i dati anziché eseguire query, visualizza l'anteprima dei dati della tabella con la funzionalità di anteprima delle tabelle di BigQuery.

  • Utilizza i risultati delle query memorizzati nella cache. Tutti i risultati delle query, comprese quelle interattive e batch, vengono memorizzati nella cache in tabelle temporanee per circa 24 ore, con alcune eccezioni. Sebbene l'esecuzione di una query memorizzata nella cache continui a essere conteggiata ai fini del limite di query simultanee, le query che utilizzano risultati memorizzati nella cache sono molto più veloci rispetto a quelle che non li utilizzano, poiché BigQuery non ha bisogno di calcolare il set di risultati.

Numero di modifiche delle partizioni per gli errori di quota delle tabelle partizionate a colonne

BigQuery restituisce questo errore quando la tabella partizionata delle colonne raggiunge la quota del numero di modifiche delle partizioni consentite al giorno. Le modifiche alla partizione includono il totale di tutti i job di caricamento, i job di copia e i job di query che aggiungono o sovrascrivono una partizione di destinazione.

Per visualizzare il valore del limite Numero di modifiche alle partizioni per tabella partizionata nelle colonne al giorno, consulta Tabelle partizionate.

Messaggio di errore

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

Risoluzione

Questa quota non può essere aumentata. Per risolvere questo errore di quota:

  • Modifica il partizionamento della tabella in modo da avere più dati in ogni partizione, in modo da ridurre il numero totale di partizioni. Ad esempio, passa dal partizionamento per giorno al partizionamento per mese oppure modifica il modo in cui esegui il partizionamento della tabella.
  • Utilizza il clustering anziché il partizionamento.
  • Se carichi spesso dati da più job di caricamento di piccole dimensioni archiviati in Cloud Storage che utilizzano un solo job per ogni file, puoi combinare più job di caricamento in un unico job. Puoi caricare da più URI Cloud Storage con un elenco separato da virgole (ad esempio gs://my_path/file_1,gs://my_path/file_2) o utilizzando caratteri jolly (ad esempio gs://my_path/*).

    Per maggiori informazioni, consulta Caricamento in batch dei dati.

  • Se utilizzi job di caricamento, selezione o copia per aggiungere singole righe di dati a una tabella, ad esempio, dovresti considerare di raggruppare più job in un unico job. BigQuery non funziona bene quando viene utilizzato come database relazionale. Come best practice, evita di eseguire azioni frequenti di aggiunta su riga singola.
  • Per aggiungere dati in modo elevato, valuta la possibilità di utilizzare l'API BigQuery Storage Write. È una soluzione consigliata per l'importazione dati ad alte prestazioni. L'API BigQuery Storage Write offre funzionalità affidabili, tra cui la semantica della consegna "exactly-once". Per saperne di più su limiti e quote, consulta la pagina relativa all'API Storage Write e, per vedere i costi di utilizzo di questa API, consulta i prezzi dell'importazione dati di BigQuery.
  • Per monitorare il numero di partizioni modificate in una tabella, utilizza la vista INFORMATION_SCHEMA.

Errori di quota relativi agli inserimenti di flussi di dati

Questa sezione fornisce alcuni suggerimenti per la risoluzione dei problemi relativi alle quote per i flussi di dati in BigQuery.

In alcune aree geografiche, gli inserimenti di flussi di dati hanno una quota maggiore se non immetti dati nel campo insertId per ogni riga. Per ulteriori informazioni sulle quote per gli inserimenti di flussi di dati, consulta la pagina relativa agli Inserimento di flussi di dati. Gli errori relativi alle quote per i flussi di dati di BigQuery dipendono dalla presenza o dall'assenza di un valore nel campo insertId.

Messaggio di errore

Se il campo insertId è vuoto, si può verificare il seguente errore di quota:

Limite quota Messaggio di errore
Byte al secondo per progetto La tua entità con ID GAIA GAIA_ID, progetto PROJECT_ID e area geografica REGION ha superato la quota di inserimento byte al secondo.

Se il campo insertId è compilato, si possono verificare i seguenti errori di quota:

Limite quota Messaggio di errore
Righe al secondo per progetto Il tuo progetto PROJECT_ID in REGION ha superato la quota per l'inserimento di righe di flussi di dati al secondo.
Righe al secondo per tabella La tua tabella TABLE_ID ha superato la quota per l'inserimento di righe di flussi di dati al secondo.
Byte al secondo per tabella La tua tabella TABLE_ID ha superato la quota per l'inserimento di byte di flussi di dati al secondo.

Lo scopo del campo insertId è deduplicare le righe inserite. Se arrivano più inserimenti con lo stesso insertId nel giro di pochi minuti, BigQuery scrive un'unica versione del record. Tuttavia, questa deduplicazione automatica non è garantita. Per la massima velocità effettiva di trasmissione dei flussi di dati, ti consigliamo di non includere insertId e di usare invece la deduplicazione manuale. Per ulteriori informazioni, consulta la pagina relativa a come garantire la coerenza dei dati.

Quando si verifica questo errore, diagnose del problema e segui i passaggi consigliati per risolverlo.

Diagnosi

Usa le viste STREAMING_TIMELINE_BY_* per analizzare il traffico dei flussi di dati. Queste viste aggregano le statistiche relative ai flussi di dati in intervalli di un minuto, raggruppate per codice di errore. Gli errori di quota vengono visualizzati nei risultati con error_code uguale a RATE_LIMIT_EXCEEDED o QUOTA_EXCEEDED.

A seconda del limite di quota specifico raggiunto, fai riferimento a total_rows o total_input_bytes. Se l'errore riguarda una quota a livello di tabella, filtra per table_id.

Ad esempio, la seguente query mostra i byte totali importati al minuto e il numero totale di errori di 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-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

Risoluzione

Per risolvere questo errore di quota:

  • Se utilizzi il campo insertId per la deduplicazione e il tuo progetto si trova in una regione che supporta una quota per i flussi di dati più elevata, ti consigliamo di rimuovere il campo insertId. Questa soluzione potrebbe richiedere passaggi aggiuntivi per la deduplicazione manuale dei dati. Per ulteriori informazioni, vedi Rimozione manuale dei duplicati.

  • Se non usi insertId, oppure non è possibile rimuoverlo, monitora il traffico dei flussi di dati per un periodo di 24 ore e analizza gli errori di quota:

    • Se risultano soprattutto errori RATE_LIMIT_EXCEEDED anziché errori QUOTA_EXCEEDED e il traffico complessivo è inferiore all'80% della quota, gli errori indicano probabilmente picchi temporanei. Puoi risolvere questi errori riprovando a eseguire l'operazione utilizzando il backoff esponenziale tra un nuovo tentativo e l'altro.

    • Se utilizzi un job Dataflow per inserire i dati, valuta la possibilità di utilizzare job di caricamento anziché inserimento di flussi di dati. Per ulteriori informazioni, consulta Impostazione del metodo di inserimento. Se utilizzi Dataflow con un connettore di I/O personalizzato, valuta la possibilità di usare un connettore di I/O integrato. Per ulteriori informazioni, consulta Pattern I/O personalizzati.

    • Se noti errori QUOTA_EXCEEDED o il traffico complessivo supera costantemente l'80% della quota, invia una richiesta di aumento della quota. Per saperne di più, consulta Richiedere un limite di quota più elevato.

    • Ti consigliamo inoltre di sostituire gli inserti di flussi di dati con la più recente API Storage Write, che offre velocità effettiva superiore, prezzo più basso e molte funzionalità utili.

Caricamento degli errori di quota dei file CSV

Se carichi un file CSV di grandi dimensioni utilizzando il comando bq load con il flag --allow_quoted_newlines, potresti riscontrare questo errore.

Messaggio di errore

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

Risoluzione

Per risolvere questo errore di quota:

  • Imposta il flag --allow_quoted_newlines su false.
  • Suddividi il file CSV in blocchi più piccoli di dimensioni inferiori a 4 GB.

Per ulteriori informazioni sui limiti che si applicano quando carichi dati in BigQuery, consulta Job di caricamento.

Importazioni delle tabelle o aggiunte di query errori di quota

BigQuery restituisce questo messaggio di errore quando la tabella raggiunge il limite giornaliero per le operazioni sulle tabelle per le tabelle standard. Le operazioni tabella includono il totale combinato di tutti i job di caricamento, i job di copia e i job di query che aggiungono o sovrascrivono una tabella di destinazione.

Per visualizzare il valore del limite di Operazioni tabella al giorno, consulta Tabelle standard.

Messaggio di errore

Your table exceeded quota for imports or query appends per table

Quando si verifica questo errore, diagnose del problema e segui i passaggi consigliati per risolverlo.

Diagnosi

Se non hai identificato l'origine da cui ha origine la maggior parte delle operazioni della tabella:

  1. Prendi nota del progetto, del set di dati e della tabella in cui la query, il caricamento o il job di copia non sono riusciti a scrivere.

  2. Usa le tabelle INFORMATION_SCHEMA.JOBS_BY_* per scoprire di più sui job che modificano la tabella.

    L'esempio seguente trova il conteggio orario dei job raggruppati per tipo di job per un periodo di 24 ore utilizzando JOBS_BY_PROJECT. Se prevedi che più progetti scrivano nella tabella, sostituisci JOBS_BY_PROJECT con 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
    

Risoluzione

Questa quota non può essere aumentata. Per risolvere questo errore di quota:

  • Se carichi spesso dati da più job di caricamento di piccole dimensioni archiviati in Cloud Storage che utilizzano un solo job per ogni file, puoi combinare più job di caricamento in un unico job. Puoi caricare da più URI Cloud Storage con un elenco separato da virgole (ad esempio gs://my_path/file_1,gs://my_path/file_2) o utilizzando caratteri jolly (ad esempio gs://my_path/*).

    Per maggiori informazioni, consulta Caricamento in batch dei dati.

  • Se utilizzi job di caricamento, selezione o copia per aggiungere singole righe di dati a una tabella, ad esempio, dovresti considerare di raggruppare più job in un unico job. BigQuery non funziona bene quando viene utilizzato come database relazionale. Come best practice, evita di eseguire azioni frequenti di aggiunta su riga singola.
  • Per aggiungere dati in modo elevato, valuta la possibilità di utilizzare l'API BigQuery Storage Write. È una soluzione consigliata per l'importazione dati ad alte prestazioni. L'API BigQuery Storage Write offre funzionalità affidabili, tra cui la semantica della consegna "exactly-once". Per saperne di più su limiti e quote, consulta la pagina relativa all'API Storage Write e, per vedere i costi di utilizzo di questa API, consulta i prezzi dell'importazione dati di BigQuery.
  • Per monitorare il numero di partizioni modificate in una tabella, utilizza la vista INFORMATION_SCHEMA.

Frequenza massima degli errori relativi ai limiti delle operazioni di aggiornamento dei metadati delle tabelle

BigQuery restituisce questo errore quando la tabella raggiunge il limite per la frequenza massima delle operazioni di aggiornamento dei metadati delle tabelle per tabella per le tabelle standard. Le operazioni tabella includono il totale combinato di tutti i job di caricamento, i job di copia e i job di query che aggiungono o sovrascrivono una tabella di destinazione o che utilizzano un DML DELETE, INSERT, MERGE, TRUNCATE TABLE o UPDATE per scrivere dati in una tabella.

Per visualizzare il valore del limite Frequenza massima delle operazioni di aggiornamento dei metadati delle tabelle per tabella, consulta Tabelle standard.

Messaggio di errore

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

Quando si verifica questo errore, diagnose del problema e segui i passaggi consigliati per risolverlo.

Diagnosi

Gli aggiornamenti della tabella dei metadati possono provenire da chiamate API che modificano i metadati di una tabella o da job che modificano i contenuti di una tabella. Se non hai identificato l'origine da cui ha origine la maggior parte delle operazioni di aggiornamento ai metadati di una tabella:

Identifica le chiamate API
  1. Vai al menu di navigazione di Google Cloud e seleziona Logging > Esplora log:

    Vai a Esplora log

  2. Filtra i log per visualizzare le operazioni della tabella eseguendo la seguente query:

    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 job

La seguente query restituisce un elenco di job che modificano la tabella interessata nel progetto. Se prevedi che più progetti in un'organizzazione scrivano nella tabella, sostituisci JOBS_BY_PROJECT con 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"

Per ulteriori informazioni, consulta la panoramica degli audit log di BigQuery.

Risoluzione

Questa quota non può essere aumentata. Per risolvere questo errore di quota:

  • Riduci la frequenza di aggiornamento per i metadati della tabella.
  • Aggiungi un ritardo tra i job o le operazioni della tabella per assicurarti che la frequenza di aggiornamento rientri nel limite.
  • Per l'inserimento o la modifica di dati, valuta la possibilità di utilizzare le operazioni DML. Le operazioni DML non sono interessate dal limite di frequenza Frequenza massima delle operazioni di aggiornamento dei metadati delle tabelle per tabella.

    Le operazioni DML hanno altri limiti e quote. Per ulteriori informazioni, consulta Utilizzare il Data Manipulation Language (DML).

  • Se carichi spesso dati da più job di caricamento di piccole dimensioni archiviati in Cloud Storage che utilizzano un solo job per ogni file, puoi combinare più job di caricamento in un unico job. Puoi caricare da più URI Cloud Storage con un elenco separato da virgole (ad esempio gs://my_path/file_1,gs://my_path/file_2) o utilizzando caratteri jolly (ad esempio gs://my_path/*).

    Per maggiori informazioni, consulta Caricamento in batch dei dati.

  • Se utilizzi job di caricamento, selezione o copia per aggiungere singole righe di dati a una tabella, ad esempio, dovresti considerare di raggruppare più job in un unico job. BigQuery non funziona bene quando viene utilizzato come database relazionale. Come best practice, evita di eseguire azioni frequenti di aggiunta su riga singola.
  • Per aggiungere dati in modo elevato, valuta la possibilità di utilizzare l'API BigQuery Storage Write. È una soluzione consigliata per l'importazione dati ad alte prestazioni. L'API BigQuery Storage Write offre funzionalità affidabili, tra cui la semantica della consegna "exactly-once". Per saperne di più su limiti e quote, consulta la pagina relativa all'API Storage Write e, per vedere i costi di utilizzo di questa API, consulta i prezzi dell'importazione dati di BigQuery.
  • Per monitorare il numero di partizioni modificate in una tabella, utilizza la vista INFORMATION_SCHEMA.

Numero massimo di errori relativi al limite di richieste API

BigQuery restituisce questo errore quando raggiungi il limite di frequenza per il numero di richieste API a un'API BigQuery per utente e per metodo, ad esempio le chiamate del metodo tables.get da un account di servizio o le chiamate del metodo jobs.insert da un indirizzo email utente diverso. Per ulteriori informazioni, consulta il limite di frequenza Numero massimo di richieste API al secondo per utente per metodo in Tutte le API BigQuery.

Messaggio di errore

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

Quando si verifica questo errore, diagnose del problema e segui i passaggi consigliati per risolverlo.

Diagnosi

Se non hai identificato il metodo che ha raggiunto questo limite di frequenza:

Per l'account di servizio

  1. Vai al progetto che ospita l'account di servizio.

  2. Nella console Google Cloud, vai alla dashboard delle API.

    Per istruzioni su come visualizzare le informazioni dettagliate sull'utilizzo di un'API, consulta Utilizzo della dashboard dell'API.

  3. Nella dashboard dell'API, seleziona API BigQuery.

  4. Per visualizzare informazioni più dettagliate sull'utilizzo, seleziona Metriche, poi segui questi passaggi:

    1. In Seleziona grafici, seleziona Traffico per metodo API.

    2. Filtra il grafico in base alle credenziali dell'account di servizio. Potresti notare picchi per un metodo nell'intervallo di tempo in cui hai notato l'errore.

Per le chiamate API

Alcune chiamate API registrano errori negli audit log di BigQuery in Cloud Logging. Per identificare il metodo che ha raggiunto il limite:

  1. Nella console Google Cloud, vai al menu di navigazione di Google Cloud e seleziona Logging > Esplora log per il tuo progetto:

    Vai a Esplora log

  2. Filtra i log eseguendo la query seguente:

     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.
     

    Per ulteriori informazioni, consulta la panoramica degli audit log di BigQuery.

Risoluzione

Per risolvere questo errore di quota:

  • Riduci il numero di richieste API o aggiungi un ritardo tra più richieste API in modo che il numero di richieste rimanga al di sotto di questo limite.

  • Se il limite viene superato solo occasionalmente, puoi implementare i nuovi tentativi per questo errore specifico con un backoff esponenziale.

  • Se inserisci dati di frequente, prendi in considerazione l'utilizzo di inserimenti di flussi di dati perché questi tipi di inserimento non sono interessati dalla quota dell'API BigQuery. Tuttavia, l'API per l'inserimento di flussi di dati ha costi associati e ha un proprio insieme di limiti e quote.

    Per informazioni sul costo dell'inserimento di flussi di dati, consulta Prezzi di BigQuery.

  • Durante il caricamento dei dati in BigQuery utilizzando Dataflow con il connettore I/O BigQuery, potresti riscontrare questo errore per il metodo tables.get. Per risolvere il problema:

    • Imposta la disposizione di creazione della tabella di destinazione su CREATE_NEVER. Per ulteriori informazioni, consulta la sezione Creare disposizione.

    • Utilizza l'SDK Apache Beam versione 2.24.0 o successive. Nelle versioni precedenti dell'SDK, la disposizione CREATE_IF_NEEDED richiama il metodo tables.get per verificare se la tabella esiste.

  • Puoi richiedere un aumento della quota contattando l'assistenza o il team di vendita. Per una quota aggiuntiva, consulta Richiedere un aumento della quota. L'elaborazione della richiesta di un aumento della quota potrebbe richiedere diversi giorni. Per fornire ulteriori informazioni sulla richiesta, ti consigliamo di includere la priorità del job, l'utente che esegue la query e il metodo interessato.

Il progetto ha superato la quota per i byte di query gratuiti analizzati

BigQuery restituisce questo errore quando esegui una query nel livello di utilizzo gratuito e l'account raggiunge il limite mensile di dimensioni dei dati su cui è possibile eseguire una query. Per ulteriori informazioni su Query (analisi), consulta Livello di utilizzo gratuito.

Messaggio di errore

Your project exceeded quota for free query bytes scanned

Risoluzione

Per continuare a utilizzare BigQuery, devi eseguire l'upgrade dell'account a un account di fatturazione Cloud a pagamento.

Massimo tabledata.list byte al secondo per errori di quota di progetto

BigQuery restituisce questo errore quando il numero di progetto menzionato nel messaggio di errore raggiunge la dimensione massima dei dati che possono essere letti tramite la chiamata API tabledata.list in un progetto al secondo. Per maggiori informazioni, consulta Massimo tabledata.list byte al minuto.

Messaggio di errore

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

Risoluzione

Per risolvere questo errore:

  • In generale, consigliamo di provare a rimanere al di sotto di questo limite. ad esempio distribuendo le richieste su un periodo più lungo con ritardi. Se l'errore non si verifica di frequente, l'implementazione di nuovi tentativi con backoff esponenziale risolve il problema.
  • Se il caso d'uso prevede letture rapide e frequenti di grandi quantità di dati da una tabella, ti consigliamo di utilizzare l'API BigQuery Storage Read anziché l'API tabledata.list.
  • Se i suggerimenti precedenti non funzionano, puoi richiedere un aumento della quota dalla dashboard dell'API Google Cloud Console nel seguente modo:

    1. Vai alla dashboard dell'API della console Google Cloud.
    2. Nella dashboard, applica un filtro per Quota: Tabledata list bytes per minute (default quota).
    3. Seleziona la quota e segui le istruzioni in Richiesta di un limite di quota superiore.

    Potrebbero essere necessari diversi giorni per esaminare ed elaborare la richiesta.

Troppe istruzioni DML in sospeso nella tabella

Questo errore indica che il numero di istruzioni DML mutanti in parallelo (UPDATE, DELETE, MERGE) in esecuzione nella stessa tabella ha superato il limite di quota per il linguaggio di manipolazione dei dati (DML). Questo limite di quota è per tabella e si applica solo a DML mutante, che non include INSERT.

Risoluzione

Raggruppa in batch i job DML seguendo le best practice per le istruzioni DML.

Numero massimo di job di copia al giorno per errori di quota del progetto

BigQuery restituisce questo errore quando il numero di job di copia in esecuzione in un progetto ha superato il limite giornaliero. Per scoprire di più sul limite per Job di copia al giorno, consulta Copia di job.

Messaggio di errore

Your project exceeded quota for copies per project

Diagnosi

Se vuoi raccogliere più dati sulla provenienza dei job di copia, puoi provare quanto segue:

  • Se i job di copia si trovano in una o solo in alcune regioni, puoi provare a eseguire una query sulla tabella INFORMATION_SCHEMA.JOBS per quelle regioni specifiche. Ad esempio:
    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 deve essere sostituita con il nome della regione, incluso il prefisso region-. Ad esempio, region-us , region-asia-south1. Puoi anche modificare l'intervallo di tempo a seconda dell'intervallo di tempo che ti interessa.
  • Per visualizzare tutti i job di copia in tutte le regioni, puoi utilizzare il seguente filtro in Cloud Logging:
    resource.type="bigquery_resource"
    protoPayload.methodName="jobservice.insert"
    protoPayload.serviceData.jobInsertRequest.resource.jobConfiguration.tableCopy:*
    

Risoluzione

  • Se l'obiettivo delle operazioni di copia frequenti è creare uno snapshot dei dati, ti consigliamo di utilizzare gli snapshot di tabella. Gli snapshot delle tabelle sono un'alternativa più economica e più rapida alla copia di tabelle complete.
  • Per richiedere un aumento della quota, contatta l'assistenza o il team di vendita. Potrebbero essere necessari diversi giorni per esaminare ed elaborare la richiesta. Ti consigliamo di indicare nella richiesta la priorità, il caso d'uso e l'ID progetto.

Numero massimo di query in parallelo che contengono funzioni remote

BigQuery restituisce questo errore quando il numero di query simultanee contenenti funzioni remote supera il limite.

Per scoprire di più sul limite delle funzioni remote, consulta la sezione Funzioni remote.

Messaggio di errore

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

Diagnosi

Per conoscere i limiti per le query in parallelo che contengono funzioni remote, consulta Limiti delle funzioni remote.

Risoluzione

  • Quando utilizzi le funzioni remote, segui le best practice relative alle funzioni remote.
  • Per richiedere un aumento della quota, contatta l'assistenza o il team di vendita. Potrebbero essere necessari diversi giorni per esaminare ed elaborare la richiesta. Ti consigliamo di indicare nella richiesta la priorità, il caso d'uso e l'ID progetto.

Errori relativi ai limiti per le dimensioni di riproduzione casuale

BigQuery restituisce questo errore quando il progetto supera il limite massimo di dimensioni del disco e della memoria disponibili per le operazioni di shuffling.

Questa quota viene calcolata per prenotazione e suddivisa tra progetti diversi per le prenotazioni. La quota non può essere modificata dall'assistenza clienti Google Cloud. Per scoprire di più sull'utilizzo, esegui una query sulla vista INFORMATION_SCHEMA.JOBS_TIMELINE.

Messaggio di errore

Viene visualizzato uno dei seguenti messaggi di errore:

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

Risoluzione

Per risolvere questo errore:

Numero massimo di istruzioni CREATE MODEL

Questo errore significa che hai superato la quota per le istruzioni CREATE MODEL.

Messaggio di errore

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

Risoluzione

Se superi la quota per le istruzioni CREATE MODEL, richiedi un aumento della quota.