Risolvi i problemi relativi a quote e limiti
BigQuery prevede varie quote e limiti che limitano la frequenza e il volume di richieste e operazioni diverse. Esistono sia per proteggere l'infrastruttura sia per contribuire a prevenire un utilizzo imprevisto da parte dei clienti. Questo documento descrive come diagnosticare e mitigare errori specifici derivanti da quote e limiti.
Alcuni messaggi di errore specificano quote o limiti che puoi aumentare, mentre altri specificano quote o limiti che non puoi aumentare. Il raggiungimento di un limite rigido significa che devi implementare soluzioni alternative o best practice temporanee o permanenti per il tuo workload. Questa è una best practice, anche per le quote o i limiti che possono essere aumentati.
Questo documento organizza i messaggi di errore e le relative soluzioni in base a queste categorie. La sezione "Panoramica" più avanti in questo documento spiega come leggere un messaggio di errore e applicare la soluzione corretta per il tuo problema.
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 BigQuery non va a buon fine perché viene superata 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 l'operazione dopo alcuni secondi. Utilizza il backoff esponenziale tra i nuovi tentativi. In altre parole, aumenta in modo esponenziale il ritardo tra un 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 costantemente uno di questi limiti di quota a lungo termine, devi analizzare il tuo workload per trovare modi per mitigare il problema. Le mitigazioni possono includere l'ottimizzazione del workload o la richiesta di un aumento della quota.
Per gli errori quotaExceeded, esamina il messaggio di errore per capire quale limite di quota è stato superato. Poi, analizza il tuo workload per vedere se puoi evitare di raggiungere la quota.
In alcuni casi, la quota può essere aumentata contattando l'assistenza BigQuery o contattando il team di vendita di Google Cloud , ma ti consigliamo di provare prima i suggerimenti riportati in questo documento.
Diagnosi
Per diagnosticare i problemi, segui questi passaggi:
Utilizza le viste
INFORMATION_SCHEMAinsieme a un qualificatore di regione per analizzare il problema sottostante. Queste viste contengono metadati sulle risorse BigQuery, inclusi job, prenotazioni e inserimenti di flussi di dati.Ad esempio, la seguente query utilizza la vista
INFORMATION_SCHEMA.JOBSper elencare tutti gli errori relativi alla quota nell'ultimo giorno: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_NAMEcon la regione del progetto. Deve essere preceduto daregion-. Ad esempio, per la località multiregionaleUS, utilizzaregion-us.Visualizza gli errori in Cloud Audit Logs.
Ad esempio, utilizzando Esplora log, la seguente query restituisce errori con
Quota exceededolimitnella 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
7indicaPERMISSION_DENIED, che corrisponde al codice di stato HTTP403.Per altri esempi di query di Cloud Audit Logs, consulta Query BigQuery.
Risolvi i problemi relativi a quote o limiti che possono essere aumentati
Puoi aumentare le seguenti quote e i seguenti limiti, ma è meglio provare prima le soluzioni alternative o le best practice suggerite.
Il tuo progetto ha superato la quota di byte di query scansionati senza costi
BigQuery restituisce questo errore quando esegui una query nel livello di utilizzo senza costi e l'account raggiunge il limite di query mensile. Per saperne di più sui prezzi delle query, consulta Livello di utilizzo senza costi.
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 relativi agli inserimenti di flussi di dati
Questa sezione fornisce suggerimenti per la risoluzione dei problemi relativi agli errori di quota per lo streaming 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 le righe di inserimento di flussi di dati al secondo. |
| Byte al secondo per tabella | La tua tabella TABLE_ID ha superato la quota per i byte al secondo di inserimento di flussi di dati. |
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 visualizzazioni aggregano le statistiche di streaming
su intervalli di un minuto, raggruppati per error_code. 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 di quota, segui questi passaggi:
Se utilizzi il campo
insertIdper la deduplicazione e il tuo progetto si trova in una regione che supporta la quota di flussi più elevata, ti consigliamo di rimuovere il campoinsertId. Questa soluzione potrebbe richiedere alcuni passaggi aggiuntivi per deduplicare manualmente i 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 visualizzi principalmente errori
RATE_LIMIT_EXCEEDEDanziché erroriQUOTA_EXCEEDEDe il traffico complessivo è inferiore all'80% della quota, probabilmente gli errori indicano picchi temporanei. Puoi risolvere questi errori riprovando l'operazione utilizzando il backoff esponenziale tra i nuovi tentativi.Se utilizzi un job Dataflow per inserire dati, valuta la possibilità di utilizzare job di caricamento anziché inserimenti di flussi di dati. Per saperne di più, consulta Impostazione del 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 di I/O personalizzati.
Se visualizzi errori
QUOTA_EXCEEDEDo se il traffico complessivo supera costantemente l'80% della quota, invia una richiesta di aumento della quota. Per saperne di più, consulta Richiedi un aggiustamento delle quote.Potresti anche prendere in considerazione la possibilità di sostituire gli inserimenti di flussi di dati con la più recente API Storage Write, che offre un throughput più elevato, un prezzo inferiore e molte funzionalità utili.
Per saperne di più sugli inserimenti di flussi di dati, consulta Inserimento di flussi di dati in BigQuery.
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 scoprire di più sui limiti delle funzioni remote, consulta Funzioni remote.
Messaggio di errore
Exceeded rate limits: too many concurrent queries with remote functions for this project
Questo limite può essere aumentato. Prova prima le soluzioni alternative e le best practice.
Diagnosi
Per visualizzare i limiti per le query simultanee che contengono funzioni remote, consulta Limiti delle funzioni remote.
Risoluzione
- Quando utilizzi le funzioni remote, segui le best practice per le funzioni remote.
- Puoi richiedere un aumento della quota contattando l'assistenza o il team di vendita. La revisione e l'elaborazione della richiesta potrebbero richiedere diversi giorni. Ti consigliamo di indicare nella richiesta la priorità, il caso d'uso e l'ID progetto.
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 all'indirizzo bqml-feedback@google.com e richiedi un aumento della quota.
Errori relativi alla quota per il numero massimo di job di copia al giorno per 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 di job di copia al giorno, consulta Job di copia.
Messaggio di errore
Your project exceeded quota for copies per project
Diagnosi
Se vuoi raccogliere ulteriori dati sull'origine 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 query sulla tabella
INFORMATION_SCHEMA.JOBSper 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 date 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 frequenti operazioni di copia è creare uno snapshot dei dati, valuta la possibilità di utilizzare gli snapshot delle tabelle. Gli snapshot delle tabelle sono un'alternativa più economica e rapida alla copia di tabelle complete.
- Puoi richiedere un aumento della quota contattando l'assistenza o il team di vendita. La revisione e l'elaborazione della richiesta potrebbero richiedere diversi giorni. Ti consigliamo di indicare nella richiesta la priorità, il caso d'uso e l'ID progetto.
Errore di superamento della quota di byte di estrazione al giorno
BigQuery restituisce questo errore quando l'estrazione supera il limite giornaliero predefinito di 50 TiB in un progetto. Per saperne di più sui limiti dei job di estrazione, consulta Job di estrazione.
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 estrazione. Se vuoi esportare i dati della tabella per partizioni di tabella specifiche, puoi utilizzare un decoratore di partizione per identificare le partizioni da esportare.
Se vuoi raccogliere gli utilizzi dei dati delle esportazioni degli ultimi giorni, puoi provare quanto segue:
Visualizza le quote per il tuo progetto con criteri di filtro come
Name: Extract bytes per dayoMetric: bigquery.googleapis.com/quota/extract/bytes, insieme al grafico Mostra utilizzo per vedere la tendenza di utilizzo nel corso di alcuni giorni.In alternativa, puoi eseguire una query su
INFORMATION_SCHEMA.JOBS_BY_PROJECTper visualizzare i byte totali estratti nell'arco di alcuni giorni. Ad esempio, la seguente query restituisce i byte totali giornalieri elaborati dai jobEXTRACTnegli ultimi sette giorni.SELECT TIMESTAMP_TRUNC(creation_time, DAY) AS day, SUM ( total_bytes_processed ) / POW(1024, 3) AS total_gibibytes_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
EXTRACTche consumano più di 100 GB elaborati negli ultimi sette 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 Esplora job con filtri come Bytes processed more than per filtrare i job con un'elevata elaborazione per un periodo di tempo specificato.
Risoluzione
Un metodo per risolvere questo errore di quota è creare una prenotazione di slot e assegnare il tuo progetto alla prenotazione con il tipo di prestazione PIPELINE. Questo metodo può
bypassare il controllo del limite poiché utilizza le prenotazioni dedicate anziché
un pool di slot condiviso senza costi. Se necessario, la prenotazione può essere eliminata se vuoi utilizzare un pool di slot condiviso in un secondo momento.
Per approcci alternativi che consentono di esportare più di 50 TiB, consulta la sezione Note in Job di estrazione.
Numero massimo di errori di quota di byte al secondo per progetto: tabledata.list
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 saperne di più, consulta Numero massimo di byte per minuto: tabledata.list.
Messaggio di errore
Your project:[project number] exceeded quota for tabledata.list bytes per second per project
Risoluzione
Per risolvere questo errore, segui questi passaggi:
- In generale, ti consigliamo di cercare di non superare questo limite. Ad esempio, distanziando 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 la lettura rapida e frequente di una grande 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 della consoleGoogle Cloud procedendo nel seguente modo:
- Vai alla dashboard API della consoleGoogle Cloud .
- Nella dashboard, filtra per Quota:
Tabledata list bytes per minute (default quota). - Seleziona la quota e segui le istruzioni riportate in Richiedi un aggiustamento della quota.
L'esame e l'elaborazione della richiesta potrebbero richiedere diversi giorni.
Numero massimo di errori relativi al limite di richieste API
BigQuery restituisce questo errore quando raggiungi la limitazione 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 dall'indirizzo email di un altro utente.
La maggior parte dei metodi principali dell'API BigQuery ha un massimo di 100 richieste API per utente per metodo. Tuttavia, alcuni di questi metodi principali possono avere limiti di frequenza diversi, ad esempio:
- Il metodo
jobs.getha un limite di 1000 richieste API per utente al secondo. - Il metodo
projects.liste il metodotables.inserthanno entrambi un limite di 10 richieste per utente al secondo.
Inoltre, i limiti di frequenza dell'API BigQuery non si applicano agli inserimenti di flussi di dati.
Per ulteriori informazioni sui singoli limiti di frequenza, consulta il limite di frequenza Numero massimo di richieste API al secondo per utente per metodo.
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.
Se l'errore ha il motivo apiLimitExceeded, consulta
Errori relativi alla frequenza delle API e al limite di valutazione dei metadati
o, per gli errori relativi alle repliche dei set di dati,
Errori relativi al limite di creazione delle repliche dei set di dati tra regioni.
Diagnosi
Se non hai identificato il metodo che ha raggiunto questo limite di frequenza, segui questi passaggi:
Per i service account
Vai al progetto che ospita il account di servizio.
Nella console Google Cloud , vai alla dashboard API.
Per istruzioni su come visualizzare le informazioni dettagliate sull'utilizzo di un'API, consulta Utilizzo della dashboard API.
Nella dashboard dell'API, seleziona API BigQuery.
Per visualizzare informazioni più dettagliate sull'utilizzo, seleziona Metriche e poi segui questi passaggi:
In Seleziona grafici, seleziona Traffico per metodo API.
Filtra il grafico in base alle credenziali del account di servizio. Potresti notare picchi per un metodo nell'intervallo di tempo in cui hai rilevato 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:
Nella console Google Cloud , vai al menu di navigazione Google Cloud , quindi seleziona Logging > Esplora log per il tuo progetto:
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 saperne di più, consulta la panoramica degli audit log di BigQuery.
Risoluzione
Per risolvere questo errore di quota, segui questi passaggi:
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 il backoff esponenziale.
Se inserisci dati di frequente, valuta la possibilità di utilizzare l'API BigQuery Storage Write (gRPC). I flussi di dati con questa API non sono interessati dalla quota dell'API 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, segui questi passaggi:Imposta la disposizione di creazione della tabella di destinazione su
CREATE_NEVER. Per ulteriori informazioni, consulta Crea disposizione.Utilizza l'SDK Apache Beam versione 2.24.0 o successive. Nelle versioni precedenti dell'SDK, la disposizione
CREATE_IF_NEEDEDchiama il metodotables.getper verificare se la tabella esiste.Per una quota aggiuntiva, consulta Richiedi un aumento della quota. L'elaborazione di una richiesta di aumento della quota potrebbe richiedere diversi giorni. Per fornire ulteriori informazioni per la tua richiesta, ti consigliamo di includere la priorità del job, l'utente che esegue la query e il metodo interessato.
Errori relativi alla frequenza delle richieste API e al limite di valutazione dei metadati
BigQuery restituisce un errore HTTP 403 Forbidden con motivo apiLimitExceeded quando una richiesta supera i limiti di frequenza dell'API o i limiti di valutazione dei metadati e dell'accesso simultanei.
Messaggi di errore
Quota exceeded for the project...API limit exceeded: Quota exceeded for quota metric 'Read requests'...
Diagnosi
Questo errore può verificarsi nei seguenti scenari:
- Volume elevato di richieste API simultanee. Un'applicazione invia un burst di chiamate API simultanee (ad esempio
jobs.insert,tables.geto polling rapido dello stato dei job) che supera i limiti delle richieste API BigQuery. - Concorrenza di BigLake Metastore. Le query su tabelle esterne supportate da BigLake Metastore generano un volume elevato di richieste di lettura dei metadati simultanee.
- Valutazione complessa di IAM o della sicurezza a livello di riga. Le query simultanee fanno riferimento a un numero elevato di set di dati, tabelle o policy di sicurezza a livello di riga (RLS), esaurendo i limiti di valutazione dell'accesso del backend.
Se il messaggio di errore è Quota exceeded: Your user_method exceeded quota for
concurrent api requests per user per method, consulta Errori relativi al limite del numero massimo di richieste API.
Risoluzione
Per risolvere questo errore, segui questi passaggi:
- Riprova con il backoff esponenziale troncato. Configura l'applicazione o lo script client in modo che riprovi le richieste non riuscite utilizzando il backoff esponenziale troncato.
- Raggruppa e consolida le operazioni API. Carica o esegui query sui dati in batch più grandi e meno numerosi, anziché effettuare chiamate API ad alta frequenza per singola riga o per tabella, e riduci la frequenza delle chiamate di polling di
jobs.get. - Semplifica le configurazioni IAM e di sicurezza. Per ridurre l'overhead dei controlli di accesso, preferisci Google Gruppi e associazioni di ruoli IAM a livello di set di dati rispetto a un numero elevato di associazioni IAM granulari per tabella o a policy di sicurezza a livello di riga sovrapposte.
- Controlla l'utilizzo della quota nella console Google Cloud . Consulta la pagina Quote e limiti di sistema per identificare se è stata raggiunta una quota regolabile dell'API BigQuery o BigLake. Se hai bisogno di una capacità maggiore per un periodo prolungato, richiedi un aggiustamento della quota.
Numero massimo di byte di archiviazione delle immagini delle funzioni definite dall'utente Python per progetto per regione
La dimensione totale di tutte le immagini container archiviate utilizzate dalle funzioni definite dall'utente Python attive non può superare 10 GiB per progetto per regione. Questo limite viene applicato quando crei o aggiorni una funzione definita dall'utente Python. Se la dimensione totale supera il limite regionale, la richiesta non va a buon fine immediatamente e viene restituito il seguente errore.
Messaggio di errore
Resources exceeded during query execution: Quota exceeded: Your project:
PROJECT_ID exceeded quota for Python UDF image storage usage per
region per project.
Risoluzione
Per risolvere questo errore, segui questi passaggi:
Richiedi un aumento: vai alla pagina Quote e limiti di sistema, cerca il limite
Python UDF image storage bytes per project per regione richiedi un aumento.Ottimizza lo spazio di archiviazione: elimina le UDF Python inutilizzate utilizzando l'istruzione
DROP FUNCTIONper liberare spazio. Dopo l'eliminazione di una funzione definita dall'utente, le dimensioni dell'immagine non vengono più conteggiate ai fini della quota. Puoi trovare le dimensioni dell'immagine utilizzando il metodoRoutineBuildStatusdell'API. Per saperne di più sulla visualizzazione dello stato della build, consulta Stato della build del container.
Numero massimo di UDF Python simultanee
Puoi eseguire un massimo di 10 UDF Python contemporaneamente per progetto. Se ne esegui più di 10, ricevi il seguente errore.
Messaggio di errore
Exceeded rate limits: too many concurrent queries with Python UDFs in this
project. Your project:
PROJECT_ID exceeded quota for maximum concurrent Python UDFs per
project.
Per visualizzare tutte le quote delle funzioni definite dall'utente Python, consulta Routine nel riferimento a quote e limiti.
Risoluzione
Per risolvere questo errore, 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 nella richiesta la priorità, il caso d'uso e l'ID progetto.
Errori di capacità o limiti di frequenza di esecuzione delle UDF Python
Questo errore si verifica quando una query che richiama una funzione definita dall'utente Python supera i limiti di frequenza o la capacità massima di scalabilità dei container per la funzione definita dall'utente. Questo problema si verifica in genere nelle seguenti situazioni:
- Una query elabora un grande volume di dati con un elevato parallelismo.
- Ogni istanza di container è configurata per gestire un numero ridotto di richieste in parallelo.
- Le singole chiamate di funzioni definite dall'utente richiedono molto tempo per essere completate.
Messaggio di errore
Resources exceeded during query execution: Python user-defined function
execution exceeded rate limits or capacity. Check
https://docs.cloud.google.com/bigquery/docs/troubleshoot-quotas for more
details.
Risoluzione
Per risolvere questo errore, prova le seguenti azioni:
- Ottimizza i limiti dei container: controlla le metriche delle funzioni definite dall'utente Python in Cloud Monitoring per esaminare l'utilizzo della CPU, l'utilizzo della memoria e le richieste in parallelo. Se
container_request_concurrencyè impostato su un valore basso, aumentalo in modo che ogni istanza container possa elaborare più richieste in parallelo. Secontainer_cpuè impostato su un valore inferiore a1.0vCPU senza un valorecontainer_request_concurrencyesplicito, la contemporaneità viene impostata su1in fase di runtime. Per saperne di più, consulta Configura i limiti dei container per le funzioni definite dall'utente Python. - Ottimizza l'esecuzione delle UDF e la struttura delle query: segui le best practice per le UDF Python per ridurre il tempo di esecuzione e il volume delle richieste per query. Ad esempio, filtra i dati prima di richiamare la funzione definita dall'utente, mantieni piccoli i payload delle righe di input e struttura la query in modo da supportare il raggruppamento in batch.
- Richiedi un aumento della capacità: se l'errore persiste dopo l'ottimizzazione della funzione definita dall'utente, contatta l'assistenza o il team di vendita per richiedere un limite di scalabilità dei container più elevato. Includi la priorità, il caso d'uso e l'ID progetto nella richiesta.
Risolvi i problemi relativi a quote o limiti che non possono essere aumentati
Non puoi aumentare le seguenti quote o limiti, ma puoi applicare le soluzioni alternative o le best practice suggerite per mitigarli.
Limite di snapshot della tabella superato
Questo errore si verifica quando una tabella BigQuery supera il numero massimo di snapshot della tabella consentiti in un periodo di 24 ore. Questo è un limite a livello di tabella, il che significa che si applica a ogni singola tabella del progetto.
Per saperne di più sui limiti delle operazioni sulle tabelle al giorno, consulta Tabelle standard.
Questo limite non può essere aumentato.
Messaggio di errore
Your table exceeded quota for SNAPSHOT operations per table
Risoluzione
Per risolvere questo errore, prendi in considerazione le seguenti azioni:
- Riduci il numero di operazioni di snapshot eseguite sulla tabella interessata in un periodo di 24 ore.
- Se non è possibile ridurre la frequenza degli snapshot, contatta l'assistenza clienti Google Cloud o il tuo Technical Account Manager.
Errori relativi al numero massimo di job in attesa
Questo limite non può essere aumentato.
Messaggio di errore
Quota exceeded: concurrent number of jobs that can be in the pending state
Risoluzione
Questa quota non può essere aumentata.
Per risolvere questo errore, segui questi passaggi:
- Riduci la frequenza di invio:riduci la frequenza con cui invii i job a BigQuery.
- Limita la concorrenza: evita di inviare un numero elevato di job in parallelo che potrebbero bloccarsi nello stato In attesa.
Errori relativi al limite della coda di query
Potresti riscontrare questo errore se un progetto mette in coda più query interattive o batch di quanto consentito dal limite della coda.
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, consulta le seguenti indicazioni generali. Per le query interattive con volumi elevati, consulta Evita i limiti per le query interattive con volumi elevati.
- Metti in pausa il job. Se identifichi un processo o una pipeline responsabile di un aumento delle query, mettilo in pausa.
- Distribuisci i tempi di esecuzione. Distribuisci il carico su un periodo di tempo più ampio. Se la tua soluzione di reporting deve eseguire molte query, prova a introdurre una certa casualità per l'avvio delle query. Ad esempio, non avviare tutti i report contemporaneamente.
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 un'espressione di tabella comune (CTE), ovvero una clausola
WITH, a cui viene fatto riferimento in più punti della query, questo calcolo viene eseguito più volte. È meglio 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. In questo modo, spesso si migliora la località dei dati, si elimina la necessità di alcuni join e, in generale, si riduce 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 saperne di più, consulta Introduzione all'ottimizzazione delle prestazioni delle query.
Ottimizza il modello di query. BigQuery non è un database relazionale. Non è ottimizzato per un numero infinito di piccole query. L'esecuzione di un numero elevato di query di piccole dimensioni 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. Offre le migliori prestazioni con query analitiche su grandi quantità di dati.
Utilizza i suggerimenti nell'elenco seguente per ottimizzare il modello di query ed evitare di raggiungere il limite della coda di query.
- Rendi persistenti i dati (tabelle salvate). Pre-elabora i dati in BigQuery e archiviali in tabelle aggiuntive. Ad esempio, se esegui molte query simili e ad alta intensità di calcolo utilizzando condizioni
WHEREdiverse, i risultati non vengono memorizzati nella cache. Inoltre, queste query consumano risorse ogni volta che vengono eseguite. Puoi migliorare le prestazioni di queste query e ridurre il tempo di elaborazione pre-calcolando i dati e archiviandoli in una tabella. Questi dati precalcolati nella tabella possono essere interrogati dalle querySELECT. Spesso questa operazione può essere eseguita durante l'importazione all'interno del processo ETL o utilizzando query pianificate o viste materializzate. - Utilizza la modalità dry run. Esegui le query in modalità dry run, 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 della tabella in BigQuery.
- Utilizza i risultati delle query memorizzati nella cache. Tutti i risultati delle query, incluse le query 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 venga comunque conteggiata ai fini del limite di query simultanee, le query che utilizzano i risultati memorizzati nella cache sono notevolmente più veloci di quelle che non li utilizzano, perché BigQuery non deve calcolare il set di risultati.
- 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.
- Rendi persistenti i dati (tabelle salvate). Pre-elabora i dati in BigQuery e archiviali in tabelle aggiuntive. Ad esempio, se esegui molte query simili e ad alta intensità di calcolo utilizzando condizioni
Utilizza i job con priorità batch. Puoi mettere in coda più query batch rispetto alle query interattive.
Distribuisci le query. Organizza e distribuisci il carico tra diversi progetti in base alla natura delle query e alle esigenze aziendali.
Aumenta gli slot nella prenotazione. Aumenta gli slot o, se hai un workload con una domanda elevata, passa alle prenotazioni (modello basato sulla capacità) da on demand (modello con pagamento per query).
Evita i limiti per le query interattive ad alto volume
L'esecuzione di query interattive ad alto volume può far sì che queste query raggiungano il limite per il numero massimo di query interattive in coda. Questo limite non può essere aumentato.
Se esegui query interattive ad alto volume, in particolare in scenari che coinvolgono trigger automatici come Cloud Run Functions, monitora innanzitutto il comportamento della funzione Cloud Run che causa l'errore e interrompila, quindi utilizza una delle seguenti strategie consigliate per evitare questo limite:
- Aumenta gli slot nella prenotazione. Se hai un workload con una domanda elevata, passa alle prenotazioni (modello basato sulla capacità) dal modello on demand (modello di pagamento per query).
- Distribuisci il workload tra le query interattive.
- Poiché puoi mettere in coda più query batch rispetto alle query interattive, utilizza i job con priorità batch anziché le query interattive.
Errori relativi al limite di dimensioni di Shuffle
BigQuery restituisce questo errore quando il 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ù sull'utilizzo eseguendo una query sulla vista INFORMATION_SCHEMA.JOBS_TIMELINE.
Se utilizzi il modello di prezzo on demand, hai un limite massimo di 2000 slot. Per aumentare il numero di slot, devi passare a un modello di prezzi basato sulla capacità.
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, segui questi passaggi:
- Aumenta la prenotazione.
- Ottimizza le query.
- Riduci la concorrenza delle query o la materializzazione dei risultati intermedi per ridurre la dipendenza dalle risorse. Per saperne di più, consulta Code di query e Crea viste materializzate.
- Esamina i passaggi dettagliati per mitigare la quota di shuffling insufficiente.
Errori relativi alla quota per il numero di modifiche delle partizioni per le tabelle partizionate per colonna
BigQuery restituisce questo errore quando la tabella partizionata per colonne raggiunge la quota del numero di modifiche alle partizioni consentite al giorno. Le modifiche alle partizioni includono il totale di tutti i job di caricamento, job di copia e 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 per colonna 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, segui questi passaggi:
- Modifica il partizionamento della tabella in modo da avere più dati in ogni partizione, così da ridurre il numero totale di partizioni. Ad esempio, passa dal partizionamento per giorno al partizionamento 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 i caratteri jolly (ad esempiogs://my_path/*).Per saperne di più, consulta Caricamento dei dati in batch.
- Se utilizzi job di caricamento, selezione o copia per aggiungere singole righe di dati a una tabella, ad esempio, ti consigliamo di raggruppare più job in un unico job. BigQuery non offre prestazioni ottimali se utilizzato come database relazionale. Come best practice, evita di eseguire azioni di aggiunta frequenti su singole righe.
- Per aggiungere dati a una frequenza elevata, valuta la possibilità di utilizzare l'API BigQuery Storage Write (gRPC). È una soluzione consigliata per l'importazione dati ad alte prestazioni. L'API BigQuery Storage Write (gRPC) offre funzionalità efficaci, 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 di importazione dati di BigQuery.
-
Per monitorare il numero di partizioni modificate in una tabella, utilizza la
vista
INFORMATION_SCHEMA. - Per informazioni sull'ottimizzazione dei job di caricamento delle tabelle per evitare di raggiungere i limiti di quota, consulta Ottimizza i job di caricamento.
Errori relativi al limite della frequenza massima delle operazioni di aggiornamento dei metadati della tabella
BigQuery restituisce questo errore quando la tabella raggiunge il limite per la frequenza massima di operazioni di aggiornamento dei metadati della tabella per tabella per le tabelle standard.
Le operazioni sulle tabelle includono il totale combinato di tutti i job di caricamento, job di copia e 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 della tabella per tabella, consulta 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 delle tabelle 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 della maggior parte delle operazioni di aggiornamento dei metadati di una tabella, segui questi passaggi:
Identifica le chiamate API
Vai al menu di navigazione di Google Cloud , quindi seleziona Logging > Esplora log:
Filtra i log per visualizzare le operazioni sulle tabelle eseguendo questa 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 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 di 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 saperne di più, consulta la panoramica degli audit log di BigQuery.
Risoluzione
Questa quota non può essere aumentata. Per risolvere questo errore di quota, segui questi passaggi:
- 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 l'inserimento o la modifica dei 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 della tabella per tabella.
Le operazioni DML hanno altri limiti e quote. Per saperne di più, consulta Utilizzo data manipulation language (DML).
-
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 i caratteri jolly (ad esempiogs://my_path/*).Per saperne di più, consulta Caricamento dei dati in batch.
- Se utilizzi job di caricamento, selezione o copia per aggiungere singole righe di dati a una tabella, ad esempio, ti consigliamo di raggruppare più job in un unico job. BigQuery non offre prestazioni ottimali se utilizzato come database relazionale. Come best practice, evita di eseguire azioni di aggiunta frequenti su singole righe.
- Per aggiungere dati a una frequenza elevata, valuta la possibilità di utilizzare l'API BigQuery Storage Write (gRPC). È una soluzione consigliata per l'importazione dati ad alte prestazioni. L'API BigQuery Storage Write (gRPC) offre funzionalità efficaci, 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 di importazione dati di BigQuery.
-
Per monitorare il numero di partizioni modificate in una tabella, utilizza la
vista
INFORMATION_SCHEMA. - Per informazioni sull'ottimizzazione dei job di caricamento delle tabelle per evitare di raggiungere i limiti di quota, consulta Ottimizza i job di caricamento.
Errori di quota relativi alle importazioni di tabelle o alle aggiunte di query
BigQuery restituisce questo messaggio di errore quando la tabella raggiunge il limite di operazioni giornaliere per le tabelle standard. Le operazioni sulle tabelle includono il totale combinato di tutti i job di caricamento, job di copia e job di query che aggiungono o sovrascrivono una tabella di destinazione.
Per visualizzare il valore del limite Operazioni sulle tabelle al giorno, consulta 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, segui questi passaggi:
Prendi nota del progetto, del set di dati e della tabella in cui il job di query, caricamento o copia non riuscito sta scrivendo.
Utilizza 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 prestazione per l'ultimo periodo di 24 ore utilizzando
JOBS_BY_PROJECT. Se prevedi che più progetti scrivano nella tabella, sostituisciJOBS_BY_PROJECTconJOBS_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 di quota, segui questi passaggi:
-
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 i caratteri jolly (ad esempiogs://my_path/*).Per saperne di più, consulta Caricamento dei dati in batch.
- Se utilizzi job di caricamento, selezione o copia per aggiungere singole righe di dati a una tabella, ad esempio, ti consigliamo di raggruppare più job in un unico job. BigQuery non offre prestazioni ottimali se utilizzato come database relazionale. Come best practice, evita di eseguire azioni di aggiunta frequenti su singole righe.
- Per aggiungere dati a una frequenza elevata, valuta la possibilità di utilizzare l'API BigQuery Storage Write (gRPC). È una soluzione consigliata per l'importazione dati ad alte prestazioni. L'API BigQuery Storage Write (gRPC) offre funzionalità efficaci, 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 di importazione dati di BigQuery.
-
Per monitorare il numero di partizioni modificate in una tabella, utilizza la
vista
INFORMATION_SCHEMA. - Per informazioni sull'ottimizzazione dei job di caricamento delle tabelle per evitare di raggiungere i limiti di quota, consulta Ottimizza i job di caricamento.
Quota superata per la metrica di quota "Visualizzazioni autorizzate per set di dati" e per il limite "2500".
Se l'elenco di controllo dell'accesso di un set di dati supera il limite combinato per le risorse autorizzate, BigQuery restituisce questo messaggio di errore.
Messaggio di errore
Quota exceeded for quota metric 'Authorized Views per dataset' and limit '2500'.
Risoluzione
L'elenco di controllo dell'accesso di un set di dati può avere fino a 2500 risorse autorizzate totali, tra cui viste autorizzate, set di dati autorizzati e funzioni autorizzate. Se superi questo limite a causa di un numero elevato di visualizzazioni autorizzate, valuta la possibilità di raggrupparle in set di dati autorizzati. Come best practice, raggruppa le viste correlate in set di dati autorizzati quando progetti nuove architetture BigQuery, in particolare architetture multi-tenant.
Troppe istruzioni DML in sospeso per la tabella
Questo errore indica che il numero di istruzioni DML di mutazione simultanee (UPDATE, DELETE, MERGE) in esecuzione sulla stessa tabella ha superato il limite di quota del linguaggio di manipolazione dei dati (DML).
Questo limite di quota è per tabella e si applica solo alle istruzioni DML di mutazione, che non includono INSERT.
Risoluzione
Esegui i job DML in batch seguendo le best practice per le istruzioni DML.
Errori relativi alla 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 di quota, segui questi passaggi:
- Imposta il flag
--allow_quoted_newlinessufalse. - Suddividi il file CSV in parti più piccole, ciascuna di dimensioni inferiori a 4 GB.
Per saperne di più sui limiti che si applicano quando carichi i dati in BigQuery, consulta Job di caricamento.
Errori relativi al limite di creazione di repliche di set di dati tra regioni
BigQuery restituisce questo errore (reason: apiLimitExceeded) quando configuri la replica dei set di dati tra regioni (ALTER SCHEMA ... ADD REPLICA) e superi il numero massimo di repliche dei set di dati che possono essere aggiunte per una regione entro un intervallo di tempo continuo.
Messaggio di errore
API limit exceeded: Cannot add more than LIMIT replicas for a region within WINDOW day(s)
Diagnosi
Questo errore si verifica spesso quando uno script automatico o uno strumento di infrastructure as code (IaC) crea ed elimina ripetutamente repliche di set di dati (ADD REPLICA e DROP REPLICA) in un loop.
Risoluzione
Per risolvere questo errore, segui questi passaggi:
- Controlla l'automazione e gli script Infrastructure as Code. Esamina eventuali script Terraform, script di deployment o job pianificati che gestiscono le repliche dei set di dati per assicurarti che non eliminino e ricreino ripetutamente le repliche a ogni esecuzione.
- Attendi il termine della finestra temporale. Attendi che trascorra la finestra di giorni consecutivi specificata nel messaggio di errore prima di eseguire nuovamente
ALTER SCHEMA ... ADD REPLICAper quella regione.
Il tuo utente ha superato la quota per le richieste project.lists simultanee
Questo errore si verifica quando i job di Microsoft Power BI che comunicano con BigQuery tramite un driver ODBC Simba o DataHub non vanno a buon fine perché superano il limite API project.list. Per risolvere il problema, utilizza le soluzioni alternative a breve o lungo termine descritte in questa sezione.
Messaggio di errore
Your user exceeded quota for concurrent project.lists requests
Diagnosi
Questo errore si verifica durante la fase di connessione e rilevamento per Power BI quando un report di Power BI viene aggiornato e il driver Simba stabilisce una connessione a un progetto BigQuery specifico.
Risoluzione a breve termine
Per risolvere questo problema a breve termine, utilizza le seguenti soluzioni alternative, ordinate dalla più alla meno efficace. Implementa la correzione tre o quattro, a seconda che ti connetta a BigQuery utilizzando il driver Simba o DataHub.
Per le correzioni a lungo termine, consulta Risoluzione a lungo termine.
Scagliona gli aggiornamenti dei report. Se non puoi modificare il DSN, riduci il problema relativo alla quota riducendo il numero di richieste simultanee. Anziché aggiornare tutti i report contemporaneamente (ad esempio alle 09:00), scagliona le pianificazioni di qualche minuto (ad esempio alle 09:01, alle 09:03 e alle 09:05). Questa pratica distribuisce le chiamate API nel tempo, riducendo la probabilità di raggiungere il limite di chiamate simultanee.
Implementa i nuovi tentativi in Power BI. Questa strategia reattiva aiuta un report a riprendersi da un errore temporaneo. Power BI dispone di una logica di ripetizione integrata per gli errori di aggiornamento dei dati. Sebbene questa pratica non impedisca l'errore di quota, rende la pipeline più resiliente consentendo l'esecuzione di un report in un tentativo successivo dopo che il picco iniziale di chiamate API si è attenuato. Per implementare questa correzione:
- Nel servizio Power BI, vai a Impostazioni per il tuo set di dati.
- Espandi la sezione Aggiornamento programmato. In Riprova, configura Power BI in modo che esegua automaticamente un aggiornamento non riuscito.
Per le versioni precedenti del driver Simba, specifica l'ID progetto nella connessione ODBC. Questa azione impedisce al conducente di effettuare la chiamata di scoperta
projects.list. Il driver si connette direttamente al progetto specificato, il che evita chiamate API non necessarie e risolve il problema della quota.I driver più recenti non funzionano immediatamente se il progetto non è specificato con un messaggio simile a
Unable to establish connection with data source. Missing settings: {[Catalog]}.Per applicare questa correzione:
- Sulla macchina che esegue Power BI Gateway o Power BI Desktop, apri l'applicazione Origini dati ODBC (64 bit).
- Nella schermata di configurazione principale del driver Simba ODBC per BigQuery, compila il campo Catalogo (progetto) con l'ID progetto Google Cloud specifico, ad esempio
my-gcp-project-id.
Per le versioni precedenti di DataHub, specifica l'ID progetto nella configurazione di importazione di DataHub. Apporta questa correzione se utilizzi DataHub anziché il driver Simba. Come per Simba, le versioni successive di DataHub richiedono di specificare l'ID progetto, altrimenti non si connetteranno a BigQuery.
Per evitare di superare i limiti di DataHub, modifica la configurazione di importazione di DataHub in modo da fornire un elenco esplicito di ID progetto da analizzare. In questo modo, la configurazione di DataHub non può trovare tutti i progetti che il account di servizio può visualizzare.
Nel file della formula di origine BigQuery (in genere un file YAML), utilizza la configurazione
project_idsper elencare i progetti che vuoi importare. Quindi, esegui nuovamente il deployment della formula di importazione di DataHub con la nuova configurazione. Vedi l'esempio seguente e questo esempio più lungo fornito da DataHub.Di seguito è riportato un esempio di snippet di configurazione di DataHub:
source: type: "bigquery" config: # Instead of relying on discovery, explicitly list the projects. # This avoids the problematic projects.list() API call. project_ids: - "YOUR_PRODUCTION_PROJECT_ID" - "YOUR_ANALYTICS_PROJECT_ID" - "ANOTHER_BQ_PROJECT"
Risoluzione a lungo termine
La migliore soluzione a lungo termine per questo messaggio di errore è creare service accountGoogle Cloud separati e dedicati per ogni funzione. Ad esempio, crea un account di servizio per tutti i report di Power BI e un account di servizio per l'importazione di DataHub.
Questa best practice isola l'utilizzo dell'API in bucket di quote separati e impedisce che un job con carico elevato in DataHub causi l'errore dei report aziendali critici in Power BI.
Utilizza il piano d'azione descritto nelle sezioni seguenti per risolvere gli errori di quota a lungo termine in Power BI e DataHub.
Fase 1: preparazione
- Informa i proprietari dei gateway Power BI e della configurazione di DataHub che apporterai modifiche coordinate per risolvere gli errori dei job in corso.
- Nella console Google Cloud , crea
due nuovi service account, ad esempio
sa-powerbi-gateway@...esa-datahub-ingestion@.... - Crea le chiavi dei account di servizio per Power BI e DataHub.
- Concedi a ogni nuovo account di servizio le autorizzazioni con privilegi minimi assegnando i seguenti ruoli Identity and Access Management che gli consentono di eseguire le sue attività in Identity and Access Management (IAM) pertinente. Evita di assegnare ruoli troppo ampi, ad esempio ProjectEditor.
Ruoli obbligatori
Il account di servizio per Power BI esegue query e legge i dati dalle tabelle. Concedi i seguenti ruoli ai service account in ogni progetto Google Cloud che contiene i dati a cui Power BI deve accedere. Per scoprire di più su questi ruoli, consulta Ruoli BigQuery.
- Visualizzatore dati BigQuery: fornisce l'accesso di sola lettura a set di dati, tabelle e viste.
- Utente job BigQuery: fornisce le autorizzazioni per eseguire job, incluse le query, il che è essenziale per l'esecuzione delle richieste da parte di Power BI.
Il account di servizio per l'importazione di DataHub deve solo leggere i metadati, come i nomi, gli schemi e le descrizioni delle tabelle, non i dati all'interno delle tabelle. Concedi il seguente ruolo a livello di progetto per ogni progetto analizzato da DataHub. Per saperne di più su questi ruoli, consulta Ruoli IAM per BigQuery.
Visualizzatore metadati BigQuery: questo ruolo è progettato specificamente per leggere i metadati. Concede le autorizzazioni per elencare set di dati e tabelle e visualizzarne i metadati senza concedere l'accesso ai dati sottostanti.
Fase 2: implementazione coordinata
Durante un periodo di utilizzo ridotto, l'amministratore di Power BI aggiorna le configurazioni DSN ODBC sulle macchine gateway seguendo questi passaggi:
- Modifica il metodo di autenticazione per utilizzare la nuova chiave del account di servizio
sa-powerbi-gateway@...creata in un passaggio precedente. - Se non è già stato fatto come correzione a breve termine, inserisce l'ID progetto Google Cloudnel campo Catalogo (progetto) del driver ODBC.
- Il proprietario di DataHub aggiorna il file YAML di configurazione dell'origine BigQuery.
- Indica la nuova chiave del account di servizio
sa-datahub-ingestion@...creata in un passaggio precedente. - Se non è già stato fatto come correzione a breve termine, utilizza il parametro
project_idsper elencare esplicitamente i progetti da analizzare. - Riesegue il deployment della formula di importazione di DataHub con la nuova configurazione.
Fase 3: verifica e monitoraggio
Per verificare e monitorare gli effetti delle correzioni, gli amministratori di Power BI e DataHub eseguono i seguenti passaggi:
- Attiva manualmente un aggiornamento per alcuni report Power BI chiave e una nuova esecuzione di importazione in DataHub. Verifica che questi job vengano completati correttamente senza generare errori di quota.
- Per assicurarti che l'errore
Quota exceeded: Your user exceeded quota for concurrent project.lists requestsnon si verifichi più, monitora i log dell'applicazione o le cronologie di esecuzione dello strumento di business intelligence. (Facoltativo) Verifica che il volume complessivo di chiamate API
projects.listo di errori403correlati sia diminuito per i service account associati:Nella console Google Cloud , vai alla pagina Dettagli API/servizio dell'API BigQuery.
Visualizza le dashboard nella scheda Metriche per verificare la diminuzione del volume di chiamate e degli errori 403 correlati.
Gli amministratori dovrebbero notare un calo drastico e permanente nell'utilizzo di questa specifica chiamata API, a conferma che la correzione è andata a buon fine.