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 prevenire un utilizzo imprevisto da parte dei clienti. Questo documento descrive come diagnosticare e mitigare errori specifici derivanti da quote e limiti.

Se il messaggio di errore non è elencato in questo documento, consulta l'elenco dei messaggi di errore che contiene informazioni più generiche sugli errori.

Panoramica

Se un'operazione di 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 i problemi relativi a questi limiti, riprova l'operazione dopo pochi secondi. Utilizza il backoff esponenziale tra tentativi successivi. In altre parole, aumenta in modo esponenziale 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, ma ti consigliamo di provare prima i suggerimenti riportati in questo documento. Google Cloud

Diagnosi

Per diagnosticare i problemi:

  • Utilizza le viste INFORMATION_SCHEMA insieme al qualificatore di regione per analizzare il problema di fondo. Queste viste contengono metadati relativi alle tue risorse BigQuery, tra cui job, prenotazioni e inserimenti di flussi di dati.

    Ad esempio, la seguente query usa la vista INFORMATION_SCHEMA.JOBS per elencare tutti gli errori relativi alle quote del giorno precedente:

    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')

    Sostituisci REGION_NAME con la regione del progetto. Deve essere preceduto da region-. Ad esempio, per la località a più regioni US, utilizza region-us.

  • Visualizza gli errori in Cloud Audit Logs.

    Ad esempio, usando 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 Cloud Audit Logs, consulta Query BigQuery.

Errori relativi ai limiti della coda di query

Se un progetto tenta di accodare più query interattive o batch di quanto consentito dal limite della coda, 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

Questo limite non può essere aumentato. Per risolvere questo errore relativo alla quota:

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

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

  • Distribuire le query. Organizza e distribuisci il carico su diversi progetti in base alla natura delle query e alle esigenze della tua attività.

  • Distribuisci i tempi di esecuzione. Distribuire il carico su un periodo di tempo più lungo. Se la tua soluzione di generazione di report deve eseguire molte query, prova a introdurre un po' di casualità nell'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 che eseguono 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 di dati. Spesso una query può essere riscritta in modo da essere eseguita in modo più efficiente. Ad esempio, se la query contiene una clausola Common table expression (CTE)WITH, a cui viene fatto riferimento in più di un punto della query, questo calcolo viene eseguito più volte. È preferibile rendere persistenti i calcoli eseguiti dalla CTE in una tabella temporanea e poi farvi riferimento nella query.

    Anche più join possono essere la causa di una mancanza di efficienza. In questo caso, ti consigliamo di utilizzare colonne nidificate e ripetute. L'utilizzo di questa opzione spesso migliora la località dei dati, elimina la necessità di alcuni join e riduce complessivamente il consumo di risorse e il tempo di esecuzione delle query.

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

  • Ottimizza il modello di query. BigQuery non è un database relazionale. Non è ottimizzata per un numero infinito di piccole query. L'esecuzione di un numero elevato di piccole query esaurisce rapidamente le quote. Queste query non vengono eseguite in modo efficiente come con i prodotti di database più piccoli. BigQuery è un data warehouse di grandi dimensioni e questo è il suo caso d'uso principale. Funziona meglio con le query analitiche su grandi quantità di dati.

  • Rendere persistenti i dati (tabelle salvate). Pre-elabora i dati in BigQuery e archiviali in tabelle aggiuntive. Ad esempio, se esegui molte query simili e a elevato utilizzo di risorse di calcolo con condizioni WHERE diverse, i risultati non vengono memorizzati nella cache. Queste query consumano anche risorse ogni volta che vengono eseguite. Puoi migliorare il rendimento di queste query e ridurre il tempo di elaborazione precalcolando i dati e memorizzandoli in una tabella. È possibile eseguire query su questi dati precalcolati nella tabella tramite query SELECT. Spesso può essere eseguita durante l'importazione all'interno del processo ETL o utilizzando query pianificate o viste materializzate.

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

  • Visualizzare 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, incluse quelle interattive e batch, vengono memorizzati nella cache in tabelle temporanee per circa 24 ore, con alcune eccezioni. L'esecuzione di una query memorizzata nella cache viene comunque conteggiata ai fini del limite di query simultanee, ma le query che utilizzano risultati memorizzati nella cache sono molto più veloci di quelle che non li utilizzano perché BigQuery non deve calcolare il set di risultati.

Errori di quota relativi al numero di modifiche delle partizioni per le tabelle partizionate per colonne

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

Per visualizzare il valore del limite Numero di modifiche alle partizioni per tabella partizionata per 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 relativo alla quota:

  • Modifica il partizionamento della tabella in modo che ogni partizione contenga più dati, in modo da ridurre il numero totale di partizioni. Ad esempio, passa dalla partizione per giorno alla partizione per mese o modifica il modo in cui partizioni la tabella.
  • Utilizza il clustering anziché il partizionamento.
  • Se carichi spesso dati da più file di piccole dimensioni archiviati in Cloud Storage che utilizzano un job per file, combina 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 ulteriori informazioni, consulta la sezione Caricamento dei dati in batch.

  • Se utilizzi i job di caricamento, selezione o copia per aggiungere singole righe di dati a una tabella, ad esempio, devi prendere in considerazione la possibilità di raggruppare più job in uno solo. BigQuery non funziona bene se utilizzato come database relazionale. Come best practice, evita di eseguire azioni di accodamento frequenti su una sola riga.
  • Per aggiungere dati a una velocità elevata, 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à avanzate, tra cui la semantica di consegna "exactly-once". Per informazioni su limiti e quote, consulta API Storage Write e per visualizzare i costi di utilizzo di questa API, consulta Prezzi dell'importazione dati BigQuery.
  • Per monitorare il numero di partizioni modificate in una tabella, utilizza la visualizzazione 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, diagnostica il problema e poi 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-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

Risoluzione

Per risolvere questo errore relativo alla quota:

  • Se usi il campo insertId per la deduplicazione e il tuo progetto si trova in una regione che supporta una quota per i flussi di dati maggiore, 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. Per risolvere questi errori, puoi eseguire nuovamente l'operazione usando il backoff esponenziale tra tentativi successivi.

    • Se utilizzi un job Dataflow per inserire dati, valuta la possibilità di utilizzare job di caricamento anziché inserimenti in streaming. Per saperne di più, vedi Impostare il metodo di inserimento. Se utilizzi Dataflow con un connettore I/O personalizzato, valuta la possibilità di utilizzare un connettore I/O integrato. Per saperne di più, consulta Pattern I/O personalizzati.

    • Se risultano errori QUOTA_EXCEEDED o il traffico complessivo supera costantemente l'80% della quota, invia una richiesta di aumento della quota. Per ulteriori informazioni, consulta Richiedi un aggiustamento delle quote.

    • Potresti anche prendere in considerazione la sostituzione degli inserimenti di streaming con la nuova API Storage Write, che offre una velocità effettiva superiore, un prezzo inferiore e molte funzionalità utili.

Errori di quota di caricamento 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 relativo alla quota:

  • Imposta il flag --allow_quoted_newlines su false.
  • Dividi il file CSV in blocchi più piccoli, ognuno dei quali deve avere dimensioni inferiori a 4 GB.

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

Errori di quota relativi alle importazioni di tabelle o agli accodamenti di query

BigQuery restituisce questo messaggio di errore quando la tabella raggiunge il limite per le operazioni sulla tabella al giorno per le tabelle Standard. Le operazioni per tabella includono il totale combinato di tutti i job di caricamento, i job di copia e i job di query che aggiungono dati a una tabella di destinazione o la sovrascrivono.

Per visualizzare il valore del limite Operazioni per tabella al giorno, consulta la sezione Tabelle standard.

Messaggio di errore

Your table exceeded quota for imports or query appends per table

Quando si verifica questo errore, diagnostica il problema e poi segui i passaggi consigliati per risolverlo.

Diagnosi

Se non hai identificato l'origine della maggior parte delle operazioni sulle tabelle, procedi nel seguente modo:

  1. Prendi nota del progetto, del set di dati e della tabella in cui la query, il caricamento o il job di copia non riuscito sta scrivendo.

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

    Il seguente esempio trova il conteggio orario dei job raggruppati per tipo di job per l'ultimo 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-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

Risoluzione

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

  • Se carichi spesso dati da più file di piccole dimensioni archiviati in Cloud Storage che utilizzano un job per file, combina 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 ulteriori informazioni, consulta la sezione Caricamento dei dati in batch.

  • Se utilizzi i job di caricamento, selezione o copia per aggiungere singole righe di dati a una tabella, ad esempio, devi prendere in considerazione la possibilità di raggruppare più job in uno solo. BigQuery non funziona bene se utilizzato come database relazionale. Come best practice, evita di eseguire azioni di accodamento frequenti su una sola riga.
  • Per aggiungere dati a una velocità elevata, 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à avanzate, tra cui la semantica di consegna "exactly-once". Per informazioni su limiti e quote, consulta API Storage Write e per visualizzare i costi di utilizzo di questa API, consulta Prezzi dell'importazione dati BigQuery.
  • Per monitorare il numero di partizioni modificate in una tabella, utilizza la visualizzazione INFORMATION_SCHEMA.

Errori relativi al limite della frequenza massima 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 per tabella includono il totale combinato di tutti i job di caricamento, i job di copia e i job di query che aggiungono dati a una tabella di destinazione o la sovrascrivono o che utilizzano un'istruzione 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 la sezione Tabelle standard.

Messaggio di errore

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

Quando si verifica questo errore, diagnostica il problema e poi segui i passaggi consigliati per risolverlo.

Diagnosi

Gli aggiornamenti della tabella dei metadati possono derivare 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 della maggior parte delle operazioni di aggiornamento dei metadati di una tabella, procedi nel seguente modo:

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

    Vai a Esplora log

  2. Filtra i log per visualizzare le operazioni sulle tabelle 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") 
Identificare i job

La seguente query restituisce un elenco di job che modificano la tabella interessata nel progetto nell'ultimo giorno. 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 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"

Per ulteriori informazioni, vedi Panoramica dei log di controllo di BigQuery.

Risoluzione

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

  • Riduci la frequenza di aggiornamento dei metadati della tabella.
  • Aggiungi un ritardo tra i job o le operazioni sulle tabelle per assicurarti che la frequenza di aggiornamento rientri nel limite.
  • Per inserire o modificare i 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 Utilizzo di DML (Data Manipulation Language).

  • Se carichi spesso dati da più file di piccole dimensioni archiviati in Cloud Storage che utilizzano un job per file, combina 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 ulteriori informazioni, consulta la sezione Caricamento dei dati in batch.

  • Se utilizzi i job di caricamento, selezione o copia per aggiungere singole righe di dati a una tabella, ad esempio, devi prendere in considerazione la possibilità di raggruppare più job in uno solo. BigQuery non funziona bene se utilizzato come database relazionale. Come best practice, evita di eseguire azioni di accodamento frequenti su una sola riga.
  • Per aggiungere dati a una velocità elevata, 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à avanzate, tra cui la semantica di consegna "exactly-once". Per informazioni su limiti e quote, consulta API Storage Write e per visualizzare i costi di utilizzo di questa API, consulta Prezzi dell'importazione dati BigQuery.
  • Per monitorare il numero di partizioni modificate in una tabella, utilizza la visualizzazione INFORMATION_SCHEMA.

Numero massimo di errori di limite delle richieste API

BigQuery restituisce questo errore quando viene raggiunto il limite di frequenza per il numero di richieste API a un'API BigQuery per utente per metodo, ad esempio le chiamate al metodo tables.get da un account di servizio o le chiamate al metodo jobs.insert da un indirizzo email utente diverso. Per saperne di più, consulta il limite di frequenza Numero massimo di richieste API al secondo per utente per metodo nell'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, diagnostica il problema e poi segui i passaggi consigliati per risolverlo.

Diagnosi

Se non hai identificato il metodo che ha raggiunto questo limite di frequenza, procedi nel seguente modo:

Per l'account di servizio

  1. Vai al progetto che ospita il account di servizio.

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

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

  3. Nella dashboard API, seleziona API BigQuery.

  4. Per visualizzare informazioni sull'utilizzo più dettagliate, seleziona Metriche e poi procedi nel seguente modo:

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

    2. Filtra il grafico in base alle credenziali del 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 nei log di audit di BigQuery in Cloud Logging. Per identificare il metodo che ha raggiunto il limite:

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

    Vai a Esplora log

  2. Filtra i log eseguendo la seguente query:

      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, vedi Panoramica dei log di controllo di BigQuery.

Risoluzione

Per risolvere questo errore relativo alla 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 backoff esponenziale.

  • Se inserisci spesso dati, valuta la possibilità di utilizzare inserimenti di flussi di dati perché gli inserimenti di flussi di dati non sono interessati dalla quota dell'API BigQuery. Tuttavia, l'API streaming inserts ha costi associati e un proprio insieme di limiti e quote.

    Per scoprire di più sul costo degli inserimenti di flussi di dati, consulta la pagina Prezzi di BigQuery.

  • Durante il caricamento dei dati in BigQuery utilizzando Dataflow con il connettore BigQuery I/O, 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 Creare una disposizione.

    • Utilizza l'SDK Apache Beam versione 2.24.0 o successive. Nelle versioni precedenti dell'SDK, la disposizione CREATE_IF_NEEDED chiama 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 quota aggiuntiva, vedi Richiedere un aumento della quota. L'elaborazione di una richiesta di aumento della quota potrebbe richiedere diversi giorni. Per fornire maggiori informazioni per la tua 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 di byte di query gratuiti scansionati

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 query. Per maggiori informazioni sulle query (analisi), consulta la sezione 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.

Errori di quota per progetto per un massimo di tabledata.list byte al secondo

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 ulteriori informazioni, vedi 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, ti consigliamo di cercare di rimanere al di sotto di questo limite. Ad esempio, distanziando le richieste per 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 la lettura rapida e frequente di grandi quantità di dati da una tabella, ti consigliamo di utilizzare l'API BigQuery Storage di lettura anziché l'API tabledata.list.
  • Se i suggerimenti precedenti non funzionano, puoi richiedere un aumento della quota dal Google Cloud dashboard API della console procedendo nel seguente modo:

    1. Vai alla dashboard della console API diGoogle Cloud .
    2. Nella dashboard, filtra per Quota: Tabledata list bytes per minute (default quota).
    3. Seleziona la quota e segui le istruzioni riportate in Richiedi una modifica della quota.

    L'esame e l'elaborazione della richiesta potrebbero richiedere diversi giorni.

Troppe istruzioni DML in attesa per la tabella

Questo errore indica che il numero di istruzioni DML mutanti simultanee (UPDATE, DELETE, MERGE) eseguite sulla stessa tabella ha superato il limite di quota del Data Manipulation Language (DML). Questo limite di quota è per tabella e si applica solo alle istruzioni DML di modifica, che non includono INSERT.

Risoluzione

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

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

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 Copie dei job al giorno, consulta Copie dei job.

Messaggio di errore

Your project exceeded quota for copies per project

Diagnosi

Se vuoi raccogliere più dati sull'origine dei lavori di copia, puoi provare a:

  • Se i tuoi job di copia si trovano in una o poche regioni, puoi provare a eseguire 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-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

    Puoi anche regolare l'intervallo di tempo in base all'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 lo scopo delle frequenti operazioni di copia è creare uno snapshot dei dati, ti consigliamo di utilizzare gli snapshot delle tabelle. Gli snapshot delle tabelle sono un'alternativa più economica e rapida alla copia delle tabelle complete.
  • Puoi richiedere un aumento della quota contattando l'assistenza o il team di vendita. L'esame e l'elaborazione della richiesta potrebbero richiedere diversi giorni. Ti consigliamo di indicare la priorità, il caso d'uso e l'ID progetto nella richiesta.

Errore relativo al superamento della quota di byte di estrazione al giorno

BigQuery restituisce questo errore quando l'esportazione supera il limite giornaliero predefinito di 50 TiB (tebibyte) in un progetto. Per saperne di più sui limiti dei job di esportazione, vedi Job di esportazione.

Messaggio di errore

Your usage exceeded quota for ExtractBytesPerDay

Diagnosi

Se esporti una tabella di dimensioni superiori a 50 TiB, l'esportazione non va a buon fine perché supera il limite di esportazione. Per ovviare a questo problema, consulta la soluzione. Se vuoi esportare i dati della tabella per partizioni specifiche della tabella, puoi utilizzare un decoratore di partizioni per identificare le partizioni da esportare.

Se vuoi raccogliere i dati sull'utilizzo delle esportazioni negli ultimi giorni, puoi provare a:

  • Visualizza le quote per il tuo progetto con criteri di filtro come Name: Extract bytes per day o Metric: bigquery.googleapis.com/quota/extract/bytes insieme al grafico Mostra utilizzo per visualizzare la tendenza di utilizzo in un periodo di alcuni giorni.

  • In alternativa, puoi eseguire una query su INFORMATION_SCHEMA.JOBS_BY_PROJECT per visualizzare i byte di estrazione totali in un periodo di alcuni giorni. Ad esempio, la seguente query restituisce i byte totali giornalieri elaborati dai job EXTRACT negli ultimi 7 giorni.

    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
  • Puoi quindi perfezionare ulteriormente i risultati identificando i job specifici che consumano più byte del previsto. L'esempio seguente restituisce i primi 100 job EXTRACT che consumano più di 100 gigabyte elaborati negli ultimi 7 giorni.

    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

In alternativa, puoi utilizzare l'Esplora job con filtri come Bytes processed more than per filtrare i job di elaborazione elevata per un periodo di tempo specificato.

Risoluzione

Un modo per risolvere questo errore di quota è creare una prenotazione di slot e assegnare il tuo progetto alla prenotazione con il tipo di job PIPELINE. In questo modo è possibile bypassare il controllo dei limiti, poiché vengono utilizzate le prenotazioni dedicate anziché un pool di slot condiviso gratuito. Se necessario, la prenotazione può essere eliminata se vuoi utilizzare il pool di slot condiviso in un secondo momento.

Per approcci alternativi che consentono di esportare più di 50 TiB (tebibyte), consulta la sezione delle note in Job di esportazione.

Numero massimo di query simultanee che contengono funzioni remote

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

Per saperne di più sul limite per le funzioni remote, consulta Funzioni remote.

Messaggio di errore

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

Diagnosi

Per visualizzare i limiti per le query simultanee che contengono funzioni remote, consulta Limiti delle funzioni remote.

Risoluzione

  • Quando utilizzi le funzioni remote, rispetta le best practice per le funzioni remote.
  • Puoi richiedere un aumento della quota contattando l'assistenza o il team di vendita. L'esame e l'elaborazione della richiesta potrebbero richiedere diversi giorni. Ti consigliamo di indicare la priorità, il caso d'uso e l'ID progetto nella richiesta.

Errori relativi al limite di dimensione della riproduzione casuale

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

Questa quota viene calcolata per prenotazione e suddivisa tra i progetti per le prenotazioni. La quota non può essere modificata dall'assistenza clienti Google Cloud. Puoi scoprire di più sul tuo utilizzo eseguendo query sulla visualizzazione INFORMATION_SCHEMA.JOBS_TIMELINE.

Messaggio di errore

Ricevi 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 indica 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, invia un'email a [email protected] e richiedi un aumento della quota.