Gestisci le opportunità di lavoro
Questo documento descrive come gestire i job in BigQuery, tra cui come visualizzare i dettagli del job, elencare i job, annullare un job, ripetere un job e eliminare i metadati del job.
Informazioni sui job BigQuery
Ogni volta che carichi, esporti, esegui query o copi i dati, BigQuery crea, pianifica ed esegue automaticamente un job che monitora l'avanzamento dell'attività.
Poiché i job possono richiedere molto tempo per essere completati, vengono eseguiti in modo asincrono e il loro stato può essere interrogato. Le azioni più brevi, come l'elenco delle risorse o il recupero dei metadati, non vengono gestite come job.
Quando un job viene inviato, può avere uno dei seguenti stati:
PENDING
: il job è pianificato e in attesa di essere eseguito.RUNNING
: il lavoro è in corso.DONE
: il lavoro è completato. Se il job viene completato senza errori, BigQuery segnala questo stato comeSUCCESS
. Se il job viene completato con errori, BigQuery segnala questo stato comeFAILURE
.
Quote
Per informazioni sulle quote dei job, consulta la documentazione relativa al tipo di job nella pagina Quote e limiti:
Prezzi
Ogni job è associato a un progetto specifico che specifichi. L'account di fatturazione collegato al progetto associato viene fatturato per qualsiasi utilizzo sostenuto dal job. Se condividi l'accesso a un progetto, anche i job eseguiti nel progetto vengono addebitati all'account di fatturazione.
Ad esempio, quando esegui un job di query,
il costo viene addebitato al progetto che esegue il job. Pertanto, quando visualizzi l'ID job di un job di query con il formato <project_id>:<region>.<job_id>
, project_id
è l'ID del progetto a cui viene addebitata la query.
Per ulteriori informazioni, vedi Prezzi.
Prima di iniziare
Concedi i ruoli IAM (Identity and Access Management) che forniscono agli utenti le autorizzazioni necessarie per eseguire ogni attività descritta in questo documento.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per eseguire e gestire i job, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto:
-
Esegui o ripeti un job, elenca i tuoi job, visualizza i dettagli dei tuoi job e annullali:
Utente job BigQuery (
roles/bigquery.jobUser
) o Utente BigQuery (roles/bigquery.user
) -
Elenca tutti i job in un progetto:
Amministratore BigQuery (
roles/bigquery.admin
) o Amministratore risorse BigQuery (roles/bigquery.resourceAdmin
) -
Visualizza i dettagli di tutti i job in un progetto, annulla qualsiasi job nel progetto ed elimina i metadati del job:
Amministratore BigQuery (
roles/bigquery.admin
)
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Questi ruoli predefiniti contengono le autorizzazioni necessarie per eseguire e gestire i job. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:
Autorizzazioni obbligatorie
Per eseguire e gestire i job sono necessarie le seguenti autorizzazioni:
-
Esegui o ripeti un job ed elenca i tuoi job:
bigquery.jobs.create
-
Visualizza i dettagli dei tuoi job:
bigquery.jobs.get
-
Annulla i tuoi job:
bigquery.jobs.update
-
Visualizza i dettagli di tutti i job in un progetto:
-
bigquery.jobs.get
-
bigquery.jobs.listAll
-
-
Elenca tutti i job in un progetto:
bigquery.jobs.listAll
-
Annulla qualsiasi job nel progetto:
-
bigquery.jobs.update
-
bigquery.jobs.listAll
-
-
Elimina metadati del job:
-
bigquery.jobs.delete
-
bigquery.jobs.listAll
-
Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.
Per saperne di più sui ruoli e sulle autorizzazioni IAM in BigQuery, consulta Ruoli e autorizzazioni predefiniti.
Visualizza i dettagli del job
Puoi visualizzare i dettagli del job utilizzando la console Google Cloud , lo strumento a riga di comando bq, l'API o le librerie client. I dettagli includono dati e metadati, come il tipo di job, lo stato del job e l'utente che ha creato il job.
Per visualizzare i dettagli del job:
Console
Vai alla pagina BigQuery.
Espandi il riquadro Cronologia dei job.
Seleziona il tipo di cronologia lavorativa che vuoi visualizzare:
- Per visualizzare le informazioni sui tuoi job recenti, fai clic su Cronologia personale.
- Per visualizzare le informazioni sui job recenti nel tuo progetto, fai clic su Cronologia progetto.
Per visualizzare i dettagli di un job, fai clic su un job.
bq
Esegui il comando bq show
con il flag --job=true
e un ID job.
Quando fornisci l'ID job, puoi utilizzare l'ID completo o la forma abbreviata. Ad esempio, gli ID job elencati nella console Google Cloud sono completamente qualificati, ovvero includono il progetto e la località:
my-project-1234:US.bquijob_123x456_123y123z123c
Gli ID job nello strumento a riga di comando sono elencati utilizzando la forma abbreviata. ID progetto e posizione non sono inclusi:
bquijob_123x456_123y123z123c
Per specificare la posizione del job, fornisci il flag --location
e imposta il valore
sulla tua posizione. Questo flag è facoltativo
se utilizzi l'ID job completo. Se includi il flag --location
e utilizzi l'ID lavoro completo, il flag --location
viene ignorato.
Il seguente comando richiede informazioni su un job:
bq --location=LOCATION show --job=true JOB_ID
Sostituisci quanto segue:
LOCATION
: il nome della posizione in cui viene eseguito il job. Ad esempio, se utilizzi BigQuery nella regione di Tokyo, imposta il valore del flag suasia-northeast1
. Puoi impostare un valore predefinito per la posizione utilizzando il file.bigqueryrc
. Se la località non è specificata nell'ID job o utilizzando il flag--location
, viene utilizzata la località predefinita.JOB_ID
: l'ID del job
Esempi
Il seguente comando recupera le informazioni di riepilogo sul job
US.bquijob_123x456_123y123z123c
in esecuzione in myproject
:
bq show --job=true myproject:US.bquijob_123x456_123y123z123c
L'output è simile al seguente:
Job Type State Start Time Duration User Email Bytes Processed Bytes Billed Billing Tier Labels ---------- --------- ----------------- ---------- ------------------- ----------------- -------------- -------------- -------- extract SUCCESS 06 Jul 11:32:10 0:01:41 user@example.com
Per visualizzare i dettagli completi del lavoro, inserisci quanto segue:
bq show --format=prettyjson --job=true myproject:US.bquijob_123x456_789y123z456c
L'output è simile al seguente:
{ "configuration": { "extract": { "compression": "NONE", "destinationUri": "[URI removed]", "destinationUris": [ "[URI removed]" ], "sourceTable": { "datasetId": "github_repos", "projectId": "bigquery-public-data", "tableId": "commits" } } }, "etag": "\"[etag removed]\"", "id": "myproject:bquijob_123x456_789y123z456c", "jobReference": { "jobId": "bquijob_123x456_789y123z456c", "projectId": "[Project ID removed]" }, "kind": "bigquery#job", "selfLink": "https://bigquery.googleapis.com/bigquery/v2/projects/federated-testing/jobs/bquijob_123x456_789y123z456c", "statistics": { "creationTime": "1499365894527", "endTime": "1499365894702", "startTime": "1499365894702" }, "status": { "errorResult": { "debugInfo": "[Information removed for readability]", "message": "Operation cannot be performed on a nested schema. Field: author", "reason": "invalid" }, "errors": [ { "message": "Operation cannot be performed on a nested schema. Field: author", "reason": "invalid" } ], "state": "DONE" }, "user_email": "user@example.com" }
API
Chiama jobs.get e fornisci
i parametri jobId
e projectId
. (Facoltativo) Fornisci il parametro location
e imposta il valore sulla posizione in cui viene eseguito il job. Questo parametro è facoltativo se utilizzi l'ID job completo che include la posizione, ad esempio my-project-1234:US.bquijob_123x456_123y123z123c
.
Vai
Prima di provare questo esempio, segui le istruzioni di configurazione di Go nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Go.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Java.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Node.js
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Node.js.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Python.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Se hai bisogno di ulteriori informazioni per risolvere i problemi relativi a un job, consulta le visualizzazioni INFORMATION_SCHEMA.JOBS*
e i log.
Elenca job
BigQuery salva una cronologia dei job di sei mesi
per tutti i job di un progetto, per tutte le località. La cronologia dei job include i job
nello stato RUNNING
e i job
DONE
(indicati dallo stato SUCCESS
o FAILURE
).
Per elencare i job in un progetto:
Console
Vai alla pagina BigQuery.
Espandi il riquadro Cronologia dei job.
Per elencare tutti i job in un progetto, fai clic su Cronologia del progetto. Se non sei il proprietario del progetto, potresti non avere l'autorizzazione per visualizzare tutti i job di un progetto. I job più recenti sono elencati per primi.
Per visualizzare l'elenco dei tuoi job, fai clic su Cronologia personale.
bq
Esegui il comando bq ls
con uno dei seguenti flag:
--jobs=true
o-j
: identifica i job come tipo di risorsa da elencare.--all=true
o-a
: elenca i job di tutti gli utenti. Per visualizzare i dettagli completi (non oscurati) di tutti i job, devi disporre delle autorizzazionibigquery.jobs.listAll
.--min_creation_time
: elenca i job dopo un valore timestamp fornito. Questo valore è rappresentato come timestamp epoca Unix in millisecondi.--max_creation_time
: elenca i job prima di un valore timestamp fornito. Questo valore è rappresentato come timestamp epoca Unix in millisecondi.--max_results
o-n
limita i risultati. Il valore predefinito è 50 risultati.
bq ls --jobs=true --all=true \ --min_creation_time=MIN_TIME \ --max_creation_time=MAX_TIME \ --max_results=MAX_RESULTS \ PROJECT_ID
Sostituisci quanto segue:
MIN_TIME
: un numero intero che rappresenta un timestamp Unix epoch in millisecondi.MAX_TIME
: un numero intero che rappresenta un timestamp Unix epoch in millisecondi.MAX_RESULTS
: un numero intero che indica il numero di lavori restituiti.PROJECT_ID
: l'ID del progetto che contiene i job che stai elencando. Se imposti un progetto predefinito, non devi fornire il parametroPROJECT_ID
.
Esempi
Il seguente comando elenca tutti i job per l'utente corrente. L'esecuzione di questo
comando richiede le autorizzazioni bigquery.jobs.list
.
bq ls --jobs=true myproject
Il seguente comando elenca tutti i job per tutti gli utenti. L'esecuzione di questo comando
richiede le autorizzazioni bigquery.jobs.listAll
.
bq ls --jobs=true --all=true myproject
Il seguente comando elenca i 10 job più recenti in myproject
:
bq ls --jobs=true --all=true --max_results=10 myproject
Il seguente comando elenca tutti i job inviati prima del 3 marzo 2032 alle
04:04:00. Questo timestamp (in millisecondi) equivale al seguente
valore intero: 1961899440000
.
bq ls --jobs=true --max_creation_time=1961899440000
API
Chiama il
metodo jobs.list
e fornisci
il parametro projectId
. Per elencare i job per tutti gli utenti, imposta il parametro allUsers
su true
. L'impostazione di allUsers
su true
richiede
le autorizzazioni bigquery.jobs.listAll
. Il metodo jobs.list
non restituisce
job secondari. Per elencare i job secondari, utilizza la
visualizzazione INFORMATION_SCHEMA.JOBS
.
Vai
Prima di provare questo esempio, segui le istruzioni di configurazione di Go nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Go.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Java.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Node.js
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Node.js.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Python.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Annullare un job
Puoi annullare un job RUNNING
o PENDING
.
In genere, l'annullamento di un job richiede meno di un minuto.
Anche se il job può essere annullato, non è garantito che l'operazione vada a buon fine. Il job potrebbe essere stato completato al momento dell'invio della richiesta di annullamento oppure potrebbe trovarsi in una fase in cui non può essere annullato.
Per annullare un job:
Console
Vai alla pagina BigQuery.
Fai clic su Crea nuova query e inserisci una query.
Per eseguire la query, fai clic su Esegui.
Per annullare un lavoro, fai clic su Annulla.
SQL
Utilizza la procedura di sistema BQ.JOBS.CANCEL
:
CALL BQ.JOBS.CANCEL('JOB_ID');
Sostituisci JOB_ID con l'ID del job che stai annullando.
Se ti trovi in un progetto diverso, ma nella stessa regione del job che vuoi annullare, devi includere anche l'ID progetto:
CALL BQ.JOBS.CANCEL('PROJECT_ID.JOB_ID');
Sostituisci quanto segue:
PROJECT_ID
: l'ID del progetto che contiene il job che stai annullandoJOB_ID
: l'ID del job che stai annullando
La procedura viene restituita immediatamente e BigQuery annulla il job poco dopo. Se il job è già riuscito o non è andato a buon fine, la procedura non ha alcun effetto.
bq
Esegui il comando bq cancel
con l'argomento JOB_ID
. Puoi richiedere
l'annullamento e il reso immediati utilizzando il flag --nosync=true
. Per
impostazione predefinita, le richieste di annullamento attendono il completamento.
Quando fornisci l'argomento JOB_ID
, puoi utilizzare l'ID completo o la forma abbreviata. Ad esempio, gli ID job elencati nella console Google Cloud sono completamente
qualificati, ovvero includono il progetto e la località:
my-project-1234:US.bquijob_123x456_123y123z123c
Gli ID job nello strumento a riga di comando bq sono elencati utilizzando la forma abbreviata. ID progetto e posizione non inclusi:
bquijob_123x456_123y123z123c
Per specificare la posizione del job, fornisci il flag --location
e imposta il valore
sulla tua posizione. Questo flag è facoltativo
se utilizzi l'ID job completo. Se includi il flag --location
e utilizzi l'ID lavoro completo, il flag --location
viene ignorato.
Il comando seguente richiede l'annullamento del job e attende il completamento. Se
viene fornito l'ID job completo, il flag --location
viene ignorato:
bq --location=LOCATION cancel JOB_ID
Il seguente comando richiede l'annullamento del job e viene restituito immediatamente. Se
viene fornito l'ID job completo, il flag --location
viene ignorato:
bq --location=LOCATION --nosync cancel JOB_ID
Sostituisci quanto segue:
LOCATION
(facoltativo): il nome della posizione in cui viene eseguito il job. Ad esempio, se utilizzi BigQuery nella regione di Tokyo, imposta il valore del flag suasia-northeast1
. Puoi impostare un valore predefinito per la posizione utilizzando il file.bigqueryrc
.JOB_ID
: l'ID del job che stai annullando. Se copi l'ID job dalla console Google Cloud , l'ID progetto e la posizione sono inclusi nell'ID job. Ad esempiomy-project-1234:US.bquijob_123x456_123y123z123c
.
Esempi
Il seguente comando annulla il job
my-project-1234:US.bquijob_123x456_123y123z123c
in esecuzione
nella località multiregionale US
nel progetto my-project-1234
e attende
il completamento. Poiché viene utilizzato l'ID job completo, il flag della località non viene fornito.
bq cancel my-project-1234:US.bquijob_123x456_123y123z123c
Il seguente comando annulla il job bquijob_123x456_123y123z123c
in esecuzione nella località multiregionale US
nel progetto my-project-1234
e attende il completamento. Poiché viene utilizzata la forma breve dell'ID job, viene fornito il flag --location
.
bq --location=US cancel bquijob_123x456_123y123z123c
Il seguente comando annulla il job bquijob_123x456_123y123z123c
in esecuzione
nella località multiregionale US
del progetto my-project-1234
e viene restituito immediatamente.
Poiché viene utilizzato l'ID job completo, il flag --location
non viene fornito.
bq --nosync cancel my-project-1234:US.bquijob_123x456_123y123z123c
API
Chiama jobs.cancel e fornisci
i parametri jobId
e projectId
. Fornisci il parametro location
e imposta il valore sulla posizione in cui viene eseguito il job.
Vai
Prima di provare questo esempio, segui le istruzioni di configurazione di Go nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Go.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Java.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Node.js
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Node.js.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Python.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Elimina metadati del job
Puoi eliminare i metadati per un job specifico utilizzando lo strumento a riga di comando bq e la libreria client Python. BigQuery conserva una cronologia dei job eseguiti negli ultimi 6 mesi. Puoi utilizzare questo metodo per rimuovere le informazioni sensibili che potrebbero essere presenti nelle istruzioni di query. I metadati del job possono essere eliminati solo al termine del job. Se un job ha creato job secondari, anche questi vengono eliminati. L'eliminazione dei job secondari non è consentita. Possono essere eliminati solo i job principali o di primo livello.
Per eliminare i metadati del job:
bq
Esegui il comando bq rm
con il flag -j
e un ID job.
Quando fornisci l'ID job, puoi utilizzare l'ID completo o la forma abbreviata. Ad esempio, gli ID job elencati nella console Google Cloud sono completamente qualificati, ovvero includono il progetto e la località:
my-project-1234:US.bquijob_123x456_123y123z123c
Gli ID job nello strumento a riga di comando bq sono elencati utilizzando la forma abbreviata. ID progetto e posizione non sono inclusi:
bquijob_123x456_123y123z123c
Per specificare la posizione del job, fornisci il flag --location
e imposta il valore
sulla tua posizione. Questo flag è facoltativo
se utilizzi l'ID job completo. Se includi il flag --location
e utilizzi l'ID lavoro completo, il flag --location
viene ignorato.
Il seguente comando elimina un job:
bq --location=location \ --project_id=project_id \ rm -j job_id
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Python.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Job ripetuti
Non è possibile ripetere un job utilizzando lo stesso ID job. Crea invece un nuovo job con la stessa configurazione. Quando invii il nuovo job nella consoleGoogle Cloud o nello strumento a riga di comando bq, viene assegnato un nuovo ID job. Quando invii il job utilizzando l'API o le librerie client, devi generare un nuovo ID job.
Per ripetere un job:
Console
Per ripetere un job di query:
Vai alla pagina BigQuery.
Espandi il riquadro Cronologia dei job.
Per elencare tutti i tuoi lavori, fai clic su Cronologia personale. Per elencare tutti i job in un progetto, fai clic su Cronologia del progetto.
Fai clic su un job di query per aprire i relativi dettagli.
Per ripetere una query, fai clic su Apri come nuova query.
Fai clic su Esegui.
Per ripetere un job di caricamento:
Vai alla pagina BigQuery.
Espandi il riquadro Cronologia dei job.
Per elencare tutti i tuoi lavori, fai clic su Cronologia personale. Per elencare tutti i job in un progetto, fai clic su Cronologia del progetto.
Fai clic su un job di caricamento per aprire i relativi dettagli.
Per ripetere un job, fai clic su Ripeti il job di caricamento.
bq
Esegui di nuovo il comando e BigQuery genera automaticamente un job con un nuovo ID job.
API
Non esiste un metodo di chiamata singola per ripetere un job. Se vuoi ripetere un job specifico:
Chiama
jobs.get
per recuperare la risorsa per il job da ripetere.Rimuovi i campi id, status e statistics. Modifica il campo jobId con un nuovo valore generato dal codice client. Modifica gli altri campi in base alle necessità.
Chiama
jobs.insert
con la risorsa modificata e il nuovo ID job per avviare il nuovo job.
Passaggi successivi
- Scopri come eseguire job in modo programmatico.