Programmazione delle query
Questa pagina descrive come pianificare query ricorrenti in BigQuery.
Puoi pianificare l'esecuzione delle query su base ricorrente. Le query pianificate devono essere scritte in GoogleSQL, che può includere il DDL (Data Definition Language) e DML (Data Manipulation Language) istruzioni. Puoi organizzare i risultati della query per data e ora con la parametrizzazione la stringa di query e la tabella di destinazione.
Quando crei o aggiorni la pianificazione di una query, l'ora pianificata per la viene convertita dall'ora locale al fuso UTC. Il fuso orario UTC non è influenzato dalla luce diurna risparmiando tempo.
Prima di iniziare
- Le query pianificate utilizzano le funzionalità di BigQuery Data Transfer Service. Verifica che hai completato tutte le azioni richieste in Attivare BigQuery Data Transfer Service.
- Concedi ruoli IAM (Identity and Access Management) che concedono agli utenti le risorse necessarie autorizzazioni per eseguire ogni attività in questo documento.
- Se prevedi di specificare una chiave di crittografia gestita dal cliente (CMEK), assicurati che il tuo account di servizio disponga delle autorizzazioni necessarie per criptare e decriptare, e che tu abbia l'ID risorsa della chiave Cloud KMS necessaria per usare CMEK. Per informazioni su come funzionano le CMEK con in BigQuery Data Transfer Service, consulta Specificare la chiave di crittografia con query pianificate.
Autorizzazioni obbligatorie
Per pianificare una query, devi disporre dei seguenti IAM autorizzazioni:
Per creare il trasferimento, devi disporre di
bigquery.transfers.update
ebigquery.datasets.get
o lebigquery.jobs.create
,bigquery.transfers.get
ebigquery.datasets.get
autorizzazioni aggiuntive.Per eseguire una query pianificata, devi avere:
bigquery.datasets.get
autorizzazioni nel set di dati di destinazionebigquery.jobs.create
Per modificare o eliminare una query pianificata, devi disporre di uno dei seguenti IAM autorizzazioni:
bigquery.transfers.update
bigquery.jobs.create
e la proprietà della query pianificata
Il ruolo IAM predefinito di roles/bigquery.admin
include
le autorizzazioni necessarie per pianificare o modificare una query.
Per saperne di più sui ruoli IAM in BigQuery, vedi Autorizzazioni e ruoli predefiniti.
Per creare o aggiornare le query pianificate eseguite da un account di servizio, devi avere l'accesso a quell'account di servizio. Per ulteriori informazioni su come concedere agli utenti il ruolo account di servizio, consulta Utente account di servizio ruolo. Per selezionare un servizio nell'interfaccia utente delle query pianificate della console Google Cloud, è necessario autorizzazioni IAM seguenti:
iam.serviceAccounts.list
Opzioni di configurazione
Stringa di query
La stringa di query deve essere valida e scritta in GoogleSQL. Ogni esecuzione di una query pianificata può ricevere i seguenti parametri di query.
Per testare manualmente una stringa di query con i parametri @run_time
e @run_date
prima di pianificare una query, usa lo strumento a riga di comando bq.
Parametri disponibili
Parametro | Tipo GoogleSQL | Valore |
---|---|---|
@run_time |
TIMESTAMP |
Rappresentata nel fuso orario UTC. Per le query pianificate regolarmente, il valore run_time rappresenta il tempo di esecuzione previsto. Ad esempio, se la query pianificata è impostata su "ogni 24 ore", la differenza run_time tra due query consecutive è esattamente di 24 ore, anche se il tempo di esecuzione effettivo potrebbe variare leggermente. |
@run_date |
DATE |
Rappresenta una data di calendario logica. |
Esempio
In questo esempio, il parametro @run_time
fa parte della stringa di query, che
esegue una query su un set di dati pubblico denominato hacker_news.stories
.
SELECT @run_time AS time, title, author, text FROM `bigquery-public-data.hacker_news.stories` LIMIT 1000
Tabella di destinazione
Se la tabella di destinazione dei risultati non esiste quando configuri una query pianificata, BigQuery tenta di creare la tabella per te.
Se utilizzi una query DDL o DML, nella console Google Cloud scegli La località di elaborazione o la regione. La località di elaborazione è obbligatoria per il DDL che creano la tabella di destinazione.
Se la tabella di destinazione esiste e utilizzi WRITE_APPEND
preferenza di scrittura, BigQuery aggiunge i dati
la tabella di destinazione e prova a mappare lo schema.
BigQuery consente automaticamente l'aggiunta e il riordinamento dei campi,
supporta campi facoltativi mancanti. Se lo schema della tabella cambia così tanto
tra le esecuzioni, BigQuery non è in grado di elaborare le modifiche
automaticamente, la query pianificata non va a buon fine.
Le query possono fare riferimento a tabelle di progetti e set di dati diversi. Quando configuri la query pianificata, non è necessario includere la destinazione nel nome della tabella. Devi specificare il set di dati di destinazione separatamente.
Il set di dati e la tabella di destinazione per una query pianificata devono essere nello stesso progetto come query pianificata.
Preferenza di scrittura
La preferenza di scrittura selezionata determina il modo in cui vengono scritti i risultati della query a una tabella di destinazione esistente.
WRITE_TRUNCATE
: se la tabella esiste, BigQuery sovrascrive i valori e i dati della tabella.WRITE_APPEND
: se la tabella esiste, BigQuery aggiunge i dati nella tabella.
Se utilizzi una query DDL o DML, non puoi utilizzare l'opzione Preferenza di scrittura.
La creazione, il troncamento o l'aggiunta di una tabella di destinazione si verifica solo se BigQuery è in grado di completare la query. Creazione, il troncamento o l'aggiunta delle azioni avvengono come un singolo aggiornamento atomico al completamento del job.
Clustering
Le query pianificate possono creare clustering solo sulle nuove tabelle, quando la tabella
creato con un'istruzione DDL CREATE TABLE AS SELECT
. Consulta
Creazione di una tabella in cluster dal risultato di una query
nell'articolo sull'utilizzo delle istruzioni Data Definition Language (DDL)
.
Opzioni di partizionamento
Le query pianificate possono creare tabelle di destinazione partizionate o non partizionate. Il partizionamento è disponibile nella console Google Cloud, nello strumento a riga di comando bq e nell'API metodi di configurazione. Se utilizzi una query DDL o DML con il partizionamento, lascia la Il campo di partizionamento della tabella di destinazione è vuoto.
Puoi utilizzare i seguenti tipi di partizionamento delle tabelle BigQuery:
- Partizionamento degli intervalli di numeri interi:
Tabelle partizionate in base a intervalli di valori in una colonna
INTEGER
specifica. - Partizionamento delle colonne delle unità di tempo:
Tabelle partizionate in base a
TIMESTAMP
,DATE
, oDATETIME
colonna. - Partizionamento in fase di importazione: Tabelle partizionate per data di importazione. BigQuery automaticamente assegna righe alle partizioni in base all'ora in cui BigQuery importa i dati.
Per creare una tabella partizionata utilizzando una query pianificata nel Console Google Cloud, utilizza le seguenti opzioni:
Per utilizzare il partizionamento di intervalli di numeri interi, esci dalla Tabella di destinazione di partizionamento.
Per utilizzare il partizionamento delle colonne nelle unità di tempo, specifica la nel campo Partizionamento della tabella di destinazione quando configurare una query pianificata.
Per utilizzare il partizionamento in fase di importazione, lascia la Il campo di partizionamento della tabella di destinazione è vuoto e indica la data il partizionamento orizzontale nel nome della tabella di destinazione. Ad esempio:
mytable${run_date}
. Per ulteriori informazioni, vedi Sintassi dei modelli dei parametri.
Parametri disponibili
Quando configuri la query pianificata, puoi specificare come eseguire il partizionamento la tabella di destinazione con i parametri di runtime.
Parametro | Tipo di modello | Valore |
---|---|---|
run_time |
Timestamp formattato | Nel fuso orario UTC, in base alla programmazione. Per le query pianificate regolarmente, il valore run_time rappresenta il tempo di esecuzione previsto. Ad esempio, se la query pianificata è impostata su "ogni 24 ore", la differenza run_time tra due query consecutive è esattamente di 24 ore, anche se il tempo di esecuzione effettivo può variare leggermente.Consulta TransferRun.runTime . |
run_date |
Stringa data | La data del parametro run_time nel seguente formato: %Y-%m-%d ; ad esempio 2018-01-01 . Questo formato è compatibile con le tabelle partizionate in fase di importazione. |
Sistema di modelli
Le query pianificate supportano i parametri di runtime nel nome della tabella di destinazione con una sintassi dei modelli.
Sintassi dei modelli dei parametri
La sintassi dei modelli supporta la creazione di modelli di stringhe di base e la compensazione temporale. I parametri sono a cui viene fatto riferimento nei seguenti formati:
{run_date}
{run_time[+\-offset]|"time_format"}
Parametro | Purpose |
---|---|
run_date |
Questo parametro è sostituito dalla data nel formato YYYYMMDD . |
run_time |
Questo parametro supporta le seguenti proprietà:
|
- .
- Non sono consentiti spazi tra run_time, offset e formato ora.
- Per includere parentesi graffe letterali nella stringa, puoi utilizzare il carattere di escape
'\{' and '\}'
. - Per includere virgolette letterali o una barra verticale nel formato time_format, ad esempio
"YYYY|MM|DD"
, puoi eseguirne l'escape nella stringa di formato:'\"'
o'\|'
.
Esempi di modelli di parametri
Questi esempi mostrano la specifica di nomi di tabelle di destinazione con diversi formati di ora e che compensa il tempo di esecuzione.run_time (UTC) | Parametro basato su modelli | Nome tabella di destinazione di output |
---|---|---|
15-02-2018 00:00:00 | mytable |
mytable |
15-02-2018 00:00:00 | mytable_{run_time|"%Y%m%d"} |
mytable_20180215 |
15-02-2018 00:00:00 | mytable_{run_time+25h|"%Y%m%d"} |
mytable_20180216 |
15-02-2018 00:00:00 | mytable_{run_time-1h|"%Y%m%d"} |
mytable_20180214 |
15-02-2018 00:00:00 | mytable_{run_time+1.5h|"%Y%m%d%H"}
o mytable_{run_time+90m|"%Y%m%d%H"} |
mytable_2018021501 |
15-02-2018 00:00:00 | {run_time+97s|"%Y%m%d"}_mytable_{run_time+97s|"%H%M%S"} |
20180215_mytable_000137 |
utilizza un service account
Puoi configurare una query pianificata per l'autenticazione come account di servizio. R è un Account Google associato al tuo progetto Google Cloud. La un account di servizio può eseguire job, come query pianificate o elaborazione batch. di servizio, con le proprie credenziali di servizio invece che quelle di un e credenziali.
Scopri di più sull'autenticazione con gli account di servizio in Introduzione all'autenticazione.
Puoi configurare la query pianificata con un servizio . Se hai eseguito l'accesso con un'identità federata: per creare un trasferimento è necessario un account di servizio. Se hai firmato con un Account Google, poi l'account di servizio per il trasferimento è facoltativo.
Puoi aggiornare una query pianificata esistente con le credenziali di un servizio lo strumento a riga di comando bq o la console Google Cloud. Per ulteriori informazioni, vedi Aggiornare le credenziali delle query pianificate.
Specifica la chiave di crittografia con query pianificate
Puoi specificare le chiavi di crittografia gestite dal cliente (CMEK) per crittografare i dati per un'esecuzione di trasferimento. Puoi utilizzare una CMEK per supportare i trasferimenti da query pianificate.Quando specifichi una CMEK con un trasferimento, BigQuery Data Transfer Service applica CMEK a qualsiasi cache intermedia su disco dei dati importati, il flusso di lavoro di trasferimento dati è conforme a CMEK.
Non puoi aggiornare un trasferimento esistente per aggiungere una CMEK se il trasferimento non è stato eseguito originariamente creato con una CMEK. Ad esempio, non puoi modificare una destinazione che in origine era criptata per impostazione predefinita e ora è crittografata con CMEK. Al contrario, non puoi neanche modificare una tabella di destinazione criptata con CMEK un tipo diverso di crittografia.
Puoi aggiornare una CMEK per un trasferimento se la configurazione del trasferimento era originariamente creato con una crittografia CMEK. Quando aggiorni una CMEK per un trasferimento configurazione, BigQuery Data Transfer Service propaga la CMEK alla destinazione alla successiva esecuzione del trasferimento, in cui BigQuery Data Transfer Service sostituisce qualsiasi CMEK obsoleta con la nuova durante l'esecuzione del trasferimento. Per ulteriori informazioni, vedi Aggiornare un trasferimento.
Puoi anche usare le chiavi predefinite di progetto. Quando specifichi una chiave predefinita di progetto con un trasferimento, BigQuery Data Transfer Service usa la chiave predefinita del progetto come chiave predefinita per tutti i nuovi trasferimenti configurazioni.
Configurare le query pianificate
Per una descrizione della sintassi di pianificazione, consulta
Formattazione della pianificazione.
Per maggiori dettagli sulla sintassi della pianificazione, vedi Risorsa: TransferConfig
.
Console
Apri la pagina BigQuery nella console Google Cloud.
Esegui la query che ti interessa. Quando il tuo utilizzo ti soddisfa fai clic su Pianifica e Crea nuova query pianificata.
Le opzioni della query pianificata si aprono nel riquadro Nuova query pianificata.
Nel riquadro Nuova query pianificata:
- In Nome della query pianificata, inserisci un nome, ad esempio
My scheduled query
. Il nome della query pianificata può essere qualsiasi valore che potrai identificare in seguito se dovrai modificare la query. (Facoltativo) Per impostazione predefinita, la query è pianificata per l'esecuzione giornaliera. Puoi modificare programmazione predefinita selezionando un'opzione dal menu a discesa Si ripete:
Per specificare una frequenza personalizzata, seleziona Personalizzata, quindi inserisci un valore Specifica del tempo cron-like nel campo Pianificazione personalizzata: ad esempio
every mon 23:30
oevery 6 hours
. Per maggiori dettagli sulle pianificazioni valide, incluse le pianificazioni vedi il camposchedule
in Risorsa:TransferConfig
.Per modificare l'ora di inizio, seleziona l'opzione Inizia all'ora impostata, inserisci data e ora di inizio desiderate.
Per specificare un'ora di fine, Seleziona l'opzione Pianifica ora di fine e inserisci la data di fine che preferisci e l'ora.
Per salvare la query senza una pianificazione, in modo da poterla eseguire on demand in un secondo momento, seleziona On demand nel menu Si ripete.
- In Nome della query pianificata, inserisci un nome, ad esempio
Per una query GoogleSQL
SELECT
, seleziona Imposta una tabella di destinazione per i risultati della query e fornisci le seguenti informazioni sul set di dati di destinazione.- Per Nome set di dati, scegli il set di dati di destinazione appropriato.
- In Nome tabella, inserisci il nome della tabella di destinazione.
- Per Preferenza di scrittura per la tabella di destinazione, scegli una Aggiungi alla tabella per aggiungere dati alla tabella oppure Sovrascrivi tabella per sovrascrivere la tabella di destinazione.
Per le query DDL e DML, scegli la Località di elaborazione oppure regione.
Opzioni avanzate:
(Facoltativo) CMEK Se utilizzi chiavi di crittografia gestite dal cliente, puoi selezionare Chiave gestita dal cliente in Opzioni avanzate. Viene visualizzato un elenco delle CMEK disponibili tra cui puoi scegliere. Per informazioni su come le chiavi di crittografia gestite dal cliente (CMEK) utilizzare BigQuery Data Transfer Service, vedi Specificare la chiave di crittografia con query pianificate.
Autenticazione come account di servizio Se hai uno o più account di servizio associati al tuo progetto Google Cloud, puoi associare un account di servizio alla query pianificata anziché utilizzare le tue credenziali utente. In Query pianificata credenziale, fai clic sul menu per vedere un elenco dei servizi disponibili . È necessario un account di servizio se hai eseguito l'accesso come e identità federata.
Configurazioni aggiuntive:
Facoltativo: controllo Inviare notifiche email per consentire le notifiche via email degli errori di esecuzione dei trasferimenti.
(Facoltativo) Per l'argomento Pub/Sub, inserisci il tuo nome Pub/Sub nome dell'argomento, ad esempio:
projects/myproject/topics/mytopic
.
Fai clic sul pulsante Programma.
bq
Opzione 1: utilizza il comando bq query
.
Per creare una query pianificata, aggiungi le opzioni destination_table
(oppure
target_dataset
), --schedule
e --display_name
al tuo
bq query
.
bq query \ --display_name=name \ --destination_table=table \ --schedule=interval
Sostituisci quanto segue:
name
. Il nome visualizzato della query pianificata. Il nome visualizzato può essere qualsiasi valore che puoi identificare in seguito se hai bisogno per modificare la query.table
. La tabella di destinazione per la query che consentono di analizzare i dati e visualizzare i risultati.--target_dataset
è un modo alternativo per assegnare un nome al set di dati di destinazione i risultati della query, se utilizzata con le query DDL e DML.- Utilizza
--destination_table
o--target_dataset
, ma non entrambi.
interval
. Se utilizzata conbq query
, rende eseguire query su una query pianificata ricorrente. Una pianificazione della frequenza con cui la query è obbligatorio eseguire. Per maggiori dettagli sulle pianificazioni valide, incluse le pianificazioni intervalli, controlla il camposchedule
in Risorsa:TransferConfig
. Esempi:--schedule='every 24 hours'
--schedule='every 3 hours'
--schedule='every monday 09:00'
--schedule='1st sunday of sep,oct,nov 00:00'
Flag facoltativi:
--project_id
è l'ID progetto. Se--project_id
non è specificato, viene usato il progetto predefinito.--replace
tronca la tabella di destinazione e scrive nuovi risultati con a ogni esecuzione della query pianificata.--append_table
aggiunge i risultati alla tabella di destinazione.Per le query DDL e DML, puoi anche fornire il flag
--location
a specifica una particolare regione per l'elaborazione. Se--location
non è specificata, viene utilizzata la località Google Cloud più vicina.
Ad esempio, il comando seguente crea una query pianificata denominata
My Scheduled Query
con la query semplice SELECT 1 from mydataset.test
.
La tabella di destinazione è mytable
nel set di dati mydataset
. Il programma
viene creata nel progetto predefinito:
bq query \
--use_legacy_sql=false \
--destination_table=mydataset.mytable \
--display_name='My Scheduled Query' \
--schedule='every 24 hours' \
--replace=true \
'SELECT
1
FROM
mydataset.test'
Opzione 2: utilizza il comando bq mk
.
Le query pianificate sono un tipo di trasferimento. Per pianificare una query, puoi utilizzare lo strumento a riga di comando bq per effettuare una configurazione di trasferimento.
Per poter essere pianificate, le query devono essere in dialetto StandardSQL.
Inserisci il comando bq mk
e fornisci i seguenti flag obbligatori:
--transfer_config
--data_source
--target_dataset
(facoltativo per le query DDL e DML)--display_name
--params
Flag facoltativi:
--project_id
è l'ID progetto. Se--project_id
non è specificato, viene usato il progetto predefinito.--schedule
indica la frequenza di esecuzione della query. Se--schedule
non è specificato, l'impostazione predefinita è "ogni 24 ore" in base all'ora di creazione.Per le query DDL e DML, puoi anche fornire il flag
--location
a specifica una particolare regione per l'elaborazione. Se--location
non è specificata, viene utilizzata la località Google Cloud più vicina.--service_account_name
consente di autenticare la query pianificata con un account di servizio anziché il tuo account utente individuale.--destination_kms_key
specifica l'ID risorsa della chiave per la chiave se utilizzi una chiave di crittografia gestita dal cliente (CMEK) per questo trasferimento. Per informazioni su come funzionano le CMEK in BigQuery Data Transfer Service, consulta Specificare la chiave di crittografia con query pianificate.
bq mk \ --transfer_config \ --target_dataset=dataset \ --display_name=name \ --params='parameters' \ --data_source=data_source
Sostituisci quanto segue:
dataset
. Il set di dati di destinazione per il trasferimento configurazione.- Questo parametro è facoltativo per le query DDL e DML. È obbligatorio per tutte le altre query.
name
. Il nome visualizzato del trasferimento configurazione. Il nome visualizzato può essere qualsiasi valore che riesci a identificare in un secondo momento se devi modificare la query.parameters
. Contiene i parametri per una configurazione di trasferimento creata in formato JSON. Ad esempio:--params='{"param":"param_value"}'
.- Per una query pianificata, devi fornire il parametro
query
. - Il parametro
destination_table_name_template
è il nome del tuo tabella di destinazione.- Questo parametro è facoltativo per le query DDL e DML. È obbligatorio per tutte le altre query.
- Per il parametro
write_disposition
, puoi scegliereWRITE_TRUNCATE
per troncare (sovrascrivere) la tabella di destinazione oWRITE_APPEND
per aggiungere i risultati della query alla tabella di destinazione.- Questo parametro è facoltativo per le query DDL e DML. È obbligatorio per tutte le altre query.
- Per una query pianificata, devi fornire il parametro
data_source
. Origine dati:scheduled_query
.- Facoltativo: il flag
--service_account_name
serve per l'autenticazione con un account di servizio invece che con un account utente individuale. - (Facoltativo)
--destination_kms_key
specifica l'ID risorsa della chiave per la chiave Cloud KMS, ad esempioprojects/project_name/locations/us/keyRings/key_ring_name/cryptoKeys/key_name
.
Ad esempio, il comando seguente crea un trasferimento di query pianificato
denominata My Scheduled Query
utilizzando la query semplice SELECT 1
from mydataset.test
. La tabella di destinazione mytable
è troncata ogni
e il set di dati di destinazione è mydataset
. La query pianificata viene creata
nel progetto predefinito ed esegue l'autenticazione come account di servizio:
bq mk \
--transfer_config \
--target_dataset=mydataset \
--display_name='My Scheduled Query' \
--params='{"query":"SELECT 1 from mydataset.test","destination_table_name_template":"mytable","write_disposition":"WRITE_TRUNCATE"}' \
--data_source=scheduled_query \
--service_account_name=abcdef-test-sa@abcdef-test.iam.gserviceaccount.com
La prima volta che esegui il comando, viene visualizzato un messaggio simile al seguenti:
[URL omitted] Please copy and paste the above URL into your web browser and
follow the instructions to retrieve an authentication code.
Segui le istruzioni nel messaggio e incolla il codice di autenticazione la riga di comando.
API
Utilizza la projects.locations.transferConfigs.create
e fornisce un'istanza
TransferConfig
risorsa.
Java
Per scoprire come installare e utilizzare la libreria client per BigQuery, consulta Librerie client di BigQuery. Per ulteriori informazioni, consulta API Java BigQuery documentazione di riferimento.
Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.
Python
Per scoprire come installare e utilizzare la libreria client per BigQuery, consulta Librerie client di BigQuery. Per ulteriori informazioni, consulta API Python BigQuery documentazione di riferimento.
Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.
Configurare query pianificate con un account di servizio
Java
Per scoprire come installare e utilizzare la libreria client per BigQuery, consulta Librerie client di BigQuery. Per ulteriori informazioni, consulta API Java BigQuery documentazione di riferimento.
Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.
Python
Per scoprire come installare e utilizzare la libreria client per BigQuery, consulta Librerie client di BigQuery. Per ulteriori informazioni, consulta API Python BigQuery documentazione di riferimento.
Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.
Visualizza stato query pianificata
Console
Per visualizzare lo stato delle query pianificate, fai clic su Query pianificate. nel riquadro di navigazione. Aggiorna la pagina per visualizzare lo stato aggiornato di le query pianificate. Fai clic su una query pianificata per visualizzare ulteriori dettagli su di esso.
bq
Le query pianificate sono un tipo di trasferimento. Per mostrare i dettagli di un una query pianificata, puoi prima usare lo strumento a riga di comando bq per elencare i configurazioni.
Inserisci il comando bq ls
e fornisci il flag di trasferimento
--transfer_config
. Sono necessari anche i seguenti flag:
--transfer_location
Ad esempio:
bq ls \
--transfer_config \
--transfer_location=us
Per mostrare i dettagli di una singola query pianificata, inserisci bq show
e fornire il transfer_path
necessario
e la configurazione di trasferimento/query pianificata.
Ad esempio:
bq show \
--transfer_config \
projects/862514376110/locations/us/transferConfigs/5dd12f26-0000-262f-bc38-089e0820fe38
API
Utilizza la projects.locations.transferConfigs.list
e fornisce un'istanza
TransferConfig
risorsa.
Java
Per scoprire come installare e utilizzare la libreria client per BigQuery, consulta Librerie client di BigQuery. Per ulteriori informazioni, consulta API Java BigQuery documentazione di riferimento.
Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.
Python
Per scoprire come installare e utilizzare la libreria client per BigQuery, consulta Librerie client di BigQuery. Per ulteriori informazioni, consulta API Python BigQuery documentazione di riferimento.
Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.
Aggiorna query pianificate
Console
Per aggiornare una query pianificata, segui questi passaggi:
- Nel riquadro di navigazione, fai clic su Query pianificate.
- Nell'elenco delle query pianificate, fai clic sul nome della query che che vuoi modificare.
- Nella pagina Dettagli query pianificata che si apre, fai clic su Modifica.
- (Facoltativo) Cambia il testo della query nel riquadro di modifica della query.
- Fai clic su Pianifica query e poi seleziona Aggiorna query pianificata.
- (Facoltativo) Modifica eventuali altre opzioni di pianificazione per la query.
- Fai clic su Aggiorna.
bq
Le query pianificate sono un tipo di trasferimento. Per aggiornare la query pianificata, puoi utilizzare lo strumento a riga di comando bq per effettuare una configurazione di trasferimento.
Inserisci il comando bq update
con il --transfer_config
richiesto
flag.
Flag facoltativi:
--project_id
è l'ID progetto. Se--project_id
non è specificato, viene usato il progetto predefinito.--schedule
indica la frequenza di esecuzione della query. Se--schedule
non è specificato, l'impostazione predefinita è "ogni 24 ore" in base all'ora di creazione.--service_account_name
diventa effettivo solo se--update_credentials
è di destinazione. Per ulteriori informazioni, vedi Aggiornare le credenziali delle query pianificate.--target_dataset
(facoltativo per le query DDL e DML) è un'alternativa il modo per assegnare un nome al set di dati di destinazione per i risultati della query, se utilizzato con DDL e DML.--display_name
è il nome della query pianificata.--params
dei parametri per la configurazione di trasferimento creata in JSON formato. Ad esempio: --params='{"param":"param_value"}'.--destination_kms_key
specifica l'ID risorsa della chiave per la chiave Cloud KMS se utilizzi una chiave di crittografia gestita dal cliente (CMEK) per questo trasferimento. Per informazioni su come la crittografia gestita dal cliente (CMEK) funziona con BigQuery Data Transfer Service. Consulta Specificare la chiave di crittografia con query pianificate.
bq update \ --target_dataset=dataset \ --display_name=name \ --params='parameters' --transfer_config \ RESOURCE_NAME
Sostituisci quanto segue:
dataset
. Il set di dati di destinazione per il trasferimento configurazione. Questo parametro è facoltativo per le query DDL e DML. È obbligatoria per tutte le altre query.name
. Il nome visualizzato del trasferimento configurazione. Il nome visualizzato può essere qualsiasi valore che riesci a identificare in un secondo momento se devi modificare la query.parameters
. Contiene i parametri per una configurazione di trasferimento creata in formato JSON. Ad esempio:--params='{"param":"param_value"}'
.- Per una query pianificata, devi fornire il parametro
query
. - Il parametro
destination_table_name_template
è il nome del tuo tabella di destinazione. Questo parametro è facoltativo per le query DDL e DML. È obbligatorio per tutte le altre query. - Per il parametro
write_disposition
, puoi scegliereWRITE_TRUNCATE
per troncare (sovrascrivere) la tabella di destinazione oWRITE_APPEND
per aggiungere i risultati della query alla tabella di destinazione. Questo parametro è facoltativo per le query DDL e DML. È obbligatorio per tutte le altre query.
- Per una query pianificata, devi fornire il parametro
- (Facoltativo)
--destination_kms_key
specifica l'ID risorsa della chiave per la chiave Cloud KMS, ad esempioprojects/project_name/locations/us/keyRings/key_ring_name/cryptoKeys/key_name
. RESOURCE_NAME
: nome risorsa del trasferimento (chiamata anche configurazione di trasferimento). Se non conosci del trasferimento, trova il nome della risorsa con:bq ls --transfer_config --transfer_location=location
.
Ad esempio, il comando seguente aggiorna un trasferimento di query pianificato
denominata My Scheduled Query
utilizzando la query semplice SELECT 1
from mydataset.test
. La tabella di destinazione mytable
è troncata ogni
e il set di dati di destinazione è mydataset
:
bq update \
--target_dataset=mydataset \
--display_name='My Scheduled Query' \
--params='{"query":"SELECT 1 from mydataset.test","destination_table_name_template":"mytable","write_disposition":"WRITE_TRUNCATE"}'
--transfer_config \
projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7
API
Utilizza la projects.transferConfigs.patch
e fornisci il nome risorsa del trasferimento utilizzando
transferConfig.name
. Se non conosci la risorsa del trasferimento
Nome, utilizza il
bq ls --transfer_config --transfer_location=location
per elencare tutti i trasferimenti o chiamare
projects.locations.transferConfigs.list
e fornisci l'ID progetto utilizzando il parametro parent
.
Java
Per scoprire come installare e utilizzare la libreria client per BigQuery, consulta Librerie client di BigQuery. Per ulteriori informazioni, consulta API Java BigQuery documentazione di riferimento.
Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.
Python
Per scoprire come installare e utilizzare la libreria client per BigQuery, consulta Librerie client di BigQuery. Per ulteriori informazioni, consulta API Python BigQuery documentazione di riferimento.
Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.
Aggiornare le query pianificate con limitazioni di proprietà
Se provi ad aggiornare una query pianificata che non è di tua proprietà, l'aggiornamento potrebbe non riuscire con il seguente messaggio di errore:
Cannot modify restricted parameters without taking ownership of the transfer configuration.
Il proprietario della query pianificata è l'utente associato alla query pianificata o l'utente che ha accesso all'account di servizio associato all'account di servizio query. L'utente associato può essere visualizzato nei dettagli di configurazione una query pianificata. Per informazioni su come aggiornare la query pianificata da eseguire proprietà, consulta Aggiornare le credenziali delle query pianificate. A concedere agli utenti l'accesso a un account di servizio, devi disporre Ruolo utente Account di servizio.
Qualsiasi utente che non è il proprietario della query pianificata, ma che ha accesso a tutte risorse menzionate dalla query, potrebbero essere ancora autorizzate ad aggiornarla. Questo scenario è supportato solo se la query può essere convalidata entro un minuto o due. In caso contrario, verrà visualizzato lo stesso messaggio di errore indicato in precedenza. Se è troppo complessa, puoi invece aggiornare le credenziali della query pianificata assumere direttamente la proprietà della query pianificata o utilizzare un account di servizio.
Aggiorna le credenziali delle query pianificate
Se stai pianificando una query esistente, potresti dover aggiornare l'utente le credenziali per la query. Le credenziali vengono aggiornate automaticamente per i nuovi query pianificate.
Ecco altre situazioni che potrebbero richiedere l'aggiornamento delle credenziali: seguenti:
- Vuoi eseguire una query sui dati di Google Drive in un una query pianificata.
Quando tenti di pianificare la query, ricevi un errore INVALID_USER:
Error code 5 : Authentication failure: User Id not found. Error code: INVALID_USERID
Ricevi il seguente errore relativo ai parametri con restrizioni quando tenti di aggiorna la query:
Cannot modify restricted parameters without taking ownership of the transfer configuration.
Console
Per aggiornare le credenziali esistenti in una query pianificata:
Fai clic sul pulsante ALTRO e seleziona Aggiorna credenziali.
Attendi da 10 a 20 minuti affinché la modifica abbia effetto. Potresti dover svuotare la cache del browser.
bq
Le query pianificate sono un tipo di trasferimento. Per aggiornare le credenziali di un una query pianificata, puoi utilizzare lo strumento a riga di comando bq aggiornare la configurazione di trasferimento.
Inserisci il comando bq update
e fornisci il flag di trasferimento
--transfer_config
. Sono necessari anche i seguenti flag:
--update_credentials
Flag facoltativo:
--service_account_name
consente di autenticare la query pianificata con un account di servizio anziché il tuo account utente individuale.
Ad esempio, il comando seguente aggiorna un trasferimento di query pianificato per eseguire l'autenticazione come account di servizio:
bq update \
--update_credentials \
--service_account_name=abcdef-test-sa@abcdef-test.iam.gserviceaccount.com
--transfer_config \
projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7
Java
Per scoprire come installare e utilizzare la libreria client per BigQuery, consulta Librerie client di BigQuery. Per ulteriori informazioni, consulta API Java BigQuery documentazione di riferimento.
Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.
Python
Per scoprire come installare e utilizzare la libreria client per BigQuery, consulta Librerie client di BigQuery. Per ulteriori informazioni, consulta API Python BigQuery documentazione di riferimento.
Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.
Configura un'esecuzione manuale in date storiche
Oltre a pianificare una query da eseguire in futuro, puoi anche attivare
viene eseguito manualmente. sarebbe necessario attivare un'esecuzione immediata se
utilizza il parametro run_date
e si sono verificati problemi durante un'esecuzione precedente.
Ad esempio, ogni giorno alle 09:00 esegui una query su una tabella di origine per trovare le righe che
la data corrente. Tuttavia, hai notato che i dati non sono stati aggiunti alla tabella di origine
degli ultimi tre giorni. In questo caso, puoi impostare la query in modo che venga eseguita
i dati storici all'interno dell'intervallo di date da te specificato. La query viene eseguita con
combinazioni di parametri run_date
e run_time
che corrispondono alle date
configurate nella query pianificata.
Dopo aver configurato una query pianificata, ecco come procedere puoi eseguire la query utilizzando un intervallo di date storico:
Console
Dopo aver fatto clic su Pianifica per salvare la query pianificata, puoi fare clic sul Pulsante Query pianificate per visualizzare l'elenco delle query attualmente pianificate. Fai clic su un nome visualizzato per esaminare i dettagli della pianificazione della query. In alto a destra nella pagina, fai clic su Pianifica backfill per specificare dell'intervallo di date storico.
Tutti i runtime scelti rientrano nell'intervallo selezionato, incluso il primo data e esclusa l'ultima data.
Esempio 1
La query pianificata è impostata per essere eseguita nel fuso orario del Pacifico - every day 09:00
. Stai
mancano i dati del 1° gennaio, del 2 gennaio e del 3 gennaio. Scegli i seguenti valori storici
intervallo di date:
Start Time = 1/1/19
End Time = 1/4/19
La query viene eseguita utilizzando i parametri run_date
e run_time
corrispondenti
ai seguenti orari:
- 01/01/19 09:00 Fuso orario del Pacifico
- 02/01/19 09:00 Fuso orario del Pacifico
- 3/1/19 09:00 Fuso orario del Pacifico
Esempio 2
La query pianificata è impostata per essere eseguita nel fuso orario del Pacifico - every day 23:00
. Stai
mancano i dati del 1° gennaio, del 2 gennaio e del 3 gennaio. Scegli i seguenti valori storici
intervalli di date (vengono scelte date successive perché il fuso orario UTC ha una data diversa
23:00 ora del Pacifico):
Start Time = 1/2/19
End Time = 1/5/19
La query viene eseguita utilizzando i parametri run_date
e run_time
corrispondenti
ai seguenti orari:
- 2/1/2019 06:00 UTC o 1/1/2019 23:00 ora del Pacifico
- 3/1/2019 06:00 UTC o 2/1/2019 23:00 ora del Pacifico
- 4/1/2019 06:00 UTC o 23:00 (fuso orario del Pacifico) del 3/1/2019
Dopo aver configurato le esecuzioni manuali, aggiorna la pagina per visualizzarle nell'elenco delle viene eseguito.
bq
Per eseguire manualmente la query su un intervallo di date storico:
Inserisci il comando bq mk
e fornisci il flag di esecuzione del trasferimento
--transfer_run
. Sono necessari anche i seguenti flag:
--start_time
--end_time
bq mk \ --transfer_run \ --start_time='start_time' \ --end_time='end_time' \ resource_name
Sostituisci quanto segue:
start_time
eend_time
. Timestamp che terminano con Z o che contengono un offset di fuso orario valido. Esempi:- 2017-08-19T12:11:35.00Z
- 2017-05-25T00:00:00+00:00
resource_name
. La query pianificata (o del trasferimento) della risorsa. Il nome della risorsa è anche noto come e configurazione di trasferimento.
Ad esempio, il comando seguente pianifica un backfill per la query pianificata
risorsa (o configurazione di trasferimento):
projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7
.
bq mk \
--transfer_run \
--start_time 2017-05-25T00:00:00Z \
--end_time 2017-05-25T00:00:00Z \
projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7
Per ulteriori informazioni, vedi bq mk --transfer_run
.
API
Utilizza projects.locations.transferConfigs.scheduleRun e fornisci un percorso di TransferConfig risorsa.
Java
Per scoprire come installare e utilizzare la libreria client per BigQuery, consulta Librerie client di BigQuery. Per ulteriori informazioni, consulta API Java BigQuery documentazione di riferimento.
Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.
Python
Per scoprire come installare e utilizzare la libreria client per BigQuery, consulta Librerie client di BigQuery. Per ulteriori informazioni, consulta API Python BigQuery documentazione di riferimento.
Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.
Eliminare le query pianificate
Console
Per eliminare una query pianificata tramite la console:
Nel riquadro di navigazione, fai clic su Query pianificate.
Nell'elenco delle query pianificate, fai clic sul nome della query pianificata che vuoi eliminare.
Nella pagina Dettagli query pianificata che si apre, fai clic su Elimina.
Java
Per scoprire come installare e utilizzare la libreria client per BigQuery, consulta Librerie client di BigQuery. Per ulteriori informazioni, consulta API Java BigQuery documentazione di riferimento.
Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.
Python
Per scoprire come installare e utilizzare la libreria client per BigQuery, consulta Librerie client di BigQuery. Per ulteriori informazioni, consulta API Python BigQuery documentazione di riferimento.
Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.
Quote
Le query pianificate vengono eseguite con le credenziali e il progetto dell'autore, come se stessi eseguendo la query personalmente. Le query pianificate vengono sempre eseguite come job di query in batch.
Sebbene le query pianificate utilizzino funzionalità BigQuery Data Transfer Service, non sono trasferimenti e non sono soggetti alla quota dei job di caricamento. Le query programmate sono soggette alle stesse quote e limiti di BigQuery, come le query manuali.
Prezzi
Il prezzo delle query pianificate è lo stesso di quello per le query manuali Query BigQuery.
Aree geografiche supportate
Le query pianificate sono supportate nelle seguenti località.
Regioni
La tabella seguente elenca le regioni nelle Americhe in cui è disponibile BigQuery.Descrizione regione | Nome regione | Dettagli |
---|---|---|
Columbus, Ohio | us-east5 |
|
Dallas | us-south1 |
|
Iowa | us-central1 |
|
Las Vegas | us-west4 |
|
Los Angeles | us-west2 |
|
Montréal | northamerica-northeast1 |
|
Virginia del Nord | us-east4 |
|
Oregon | us-west1 |
|
Salt Lake City | us-west3 |
|
San Paolo | southamerica-east1 |
|
Santiago | southamerica-west1 |
|
Carolina del Sud | us-east1 |
|
Toronto | northamerica-northeast2 |
|
Descrizione regione | Nome regione | Dettagli |
---|---|---|
Delhi | asia-south2 |
|
Hong Kong | asia-east2 |
|
Giacarta | asia-southeast2 |
|
Melbourne | australia-southeast2 |
|
Mumbai | asia-south1 |
|
Osaka | asia-northeast2 |
|
Seul | asia-northeast3 |
|
Singapore | asia-southeast1 |
|
Sydney | australia-southeast1 |
|
Taiwan | asia-east1 |
|
Tokyo | asia-northeast1 |
Descrizione regione | Nome regione | Dettagli |
---|---|---|
Belgio | europe-west1 |
|
Berlino | europe-west10 |
|
Finlandia | europe-north1 |
|
Francoforte | europe-west3 |
|
Londra | europe-west2 |
|
Madrid | europe-southwest1 |
|
Milano | europe-west8 |
|
Paesi Bassi | europe-west4 |
|
Parigi | europe-west9 |
|
Torino | europe-west12 |
|
Varsavia | europe-central2 |
|
Zurigo | europe-west6 |
|
Descrizione regione | Nome regione | Dettagli |
---|---|---|
Dammam | me-central2 |
|
Doha | me-central1 |
|
Tel Aviv | me-west1 |
Descrizione regione | Nome regione | Dettagli |
---|---|---|
Johannesburg | africa-south1 |
Più regioni
La tabella seguente elenca le regioni multiple in cui è disponibile BigQuery.Descrizione per più regioni | Nome di più regioni |
---|---|
I data center all'interno di stati membri dell'Unione Europea1 | EU |
Data center negli Stati Uniti | US |
1 I dati situati nell'area multiregionale EU
sono disponibili solo
archiviata nei dati europe-west1
(Belgio) o europe-west4
(Paesi Bassi)
center.
Passaggi successivi
- Ad esempio di una query pianificata che utilizza un account di servizio e include
i parametri
@run_date
e@run_time
, consulta Creazione di snapshot delle tabelle con una query pianificata.