Introduzione alle query continue
Le query continue di BigQuery sono istruzioni SQL che vengono eseguite continuamente per consentirti di analizzare i dati in entrata in BigQuery in tempo reale. Puoi utilizzare le query continue per attività urgenti, come la generazione di insight immediati, l'applicazione dell'inferenza di machine learning (ML) in tempo reale e la replica dei dati su altre piattaforme. Questa funzionalità ti consente di utilizzare BigQuery come motore di trattamento dati basato sugli eventi per la logica decisionale nelle tue applicazioni.
Destinazioni e origini dati supportate
Puoi scrivere o esportare le righe di output prodotte da una query continua nelle seguenti destinazioni:
- Tabelle BigQuery
- Tabelle gestite Apache Iceberg
- Argomenti Pub/Sub
- Tabelle Bigtable
- Tabelle Spanner
Le query continue possono elaborare i dati scritti in tabelle BigQuery standard o tabelle gestite Apache Iceberg utilizzando uno dei seguenti metodi:
- API BigQuery Storage Write (gRPC)
- API BigQuery Storage Write (REST)
- Caricamento in batch
- L'istruzione DML
INSERT - Istruzioni DML (Data Manipulation Language) di mutazione, come
DELETE,UPDATEeMERGEdurante l'esportazione dei dati in Pub/Sub. - Scrive dai risultati di una query batch in una tabella permanente
- Scrive dai risultati di una query continua di BigQuery in una tabella permanente
- Una sottoscrizione Pub/Sub BigQuery
- Scrive da Dataflow a BigQuery
- Scrive da Datastream a BigQuery utilizzando la modalità di scrittura in modalità di sola aggiunta
Il seguente diagramma mostra i flussi di lavoro comuni delle query continue:
Casi d'uso
I casi d'uso comuni in cui potresti voler utilizzare le query continue sono i seguenti:
- Servizi di interazione con i clienti personalizzati: utilizza l'AI generativa per creare messaggi personalizzati per ogni interazione con i clienti.
- Rilevamento di anomalie: crea soluzioni che ti consentono di rilevare anomalie e minacce su dati complessi in tempo reale, in modo da poter reagire ai problemi più rapidamente.
- Pipeline personalizzabili basate su eventi: utilizza l'integrazione delle query continue con Pub/Sub per attivare le applicazioni downstream in base ai dati in entrata.
- Arricchimento dei dati ed estrazione delle entità: utilizza le query continue per eseguire l'arricchimento e la trasformazione dei dati in tempo reale utilizzando funzioni SQL e modelli ML.
- Estrazione, trasformazione e caricamento (ETL) inverso: esegui l'ETL inverso in tempo reale in altri sistemi di archiviazione più adatti per la pubblicazione di applicazioni a bassa latenza. Ad esempio, analizzando o migliorando i dati sugli eventi scritti in BigQuery, per poi trasmetterli in flussi a Bigtable, Spanner o tabelle gestite di Apache Iceberg per la pubblicazione delle applicazioni.
- Attivazione autonoma degli agenti: attiva pipeline di dati agentiche in tempo reale in base a eventi complessi rilevati in flussi di dati in tempo reale. Per un esempio, consulta il codelab Crea un agente per i dati basato su eventi con BigQuery e Agent Development Kit (ADK).
- Monitoraggio autonomo degli agenti: sviluppa un monitoraggio e un sistema di avvisi automatizzati in tempo reale per le interazioni agentiche in tempo reale utilizzando il plug-in BigQuery Agent Analytics, che trasmette in streaming tutti i dati di traccia degli agenti, l'utilizzo degli strumenti e i log operativi direttamente in BigQuery per un'osservabilità approfondita della tua forza lavoro AI.
Funzionalità supportata
Le seguenti operazioni sono supportate nelle query continue:
- Esecuzione di
istruzioni
INSERTper scrivere dati da una query continua in una tabella BigQuery o in una tabella gestita da Iceberg. Esecuzione di istruzioni
EXPORT DATAper pubblicare l'output delle query continue negli argomenti Pub/Sub.Le query continue che esportano dati in Pub/Sub devono essere eseguite utilizzando un service account. Per saperne di più, consulta Esporta dati in Pub/Sub.
Da un argomento Pub/Sub, puoi utilizzare i dati con altri servizi, ad esempio per eseguire analisi dei flussi di dati utilizzando Dataflow o per utilizzare i dati in un workflow di Application Integration.
Esecuzione di istruzioni
EXPORT DATAper esportare i dati da BigQuery in tabelle Bigtable. Per saperne di più, consulta Esporta i dati in Bigtable.Esecuzione di istruzioni
EXPORT DATAper esportare i dati da BigQuery alle tabelle Spanner. Per saperne di più, consulta Esporta i dati in Spanner (ETL inverso).Chiamata delle seguenti funzioni AI generative:
AI.GENERATE-
- Questa funzione richiede un modello remoto BigQuery ML su un modello Gemini Enterprise Agent Platform.
Chiamata delle seguenti funzioni AI:
Queste funzioni richiedono un modello remoto BigQuery ML su un'API Cloud AI.
Normalizzazione dei dati numerici utilizzando la funzione
ML.NORMALIZER.Analisi ed elaborazione dei dati
JSON, incluso il supporto per le funzioni JSON e l'un-nesting JSON.Utilizzo di funzioni GoogleSQL stateless, ad esempio funzioni di conversione. Nelle funzioni stateless, ogni riga viene elaborata indipendentemente dalle altre righe della tabella.
Utilizzo di operazioni stateful, ad esempio
JOIN, aggregazioni e aggregazioni di finestre. Nelle operazioni stateful, lo stato dei dati importati viene conservato in più righe o intervalli di tempo per calcolare un risultato accurato.Utilizzando la funzione di cronologia delle modifiche
APPENDSper elaborare i dati aggiunti da un momento specifico nel tempo su tabelle BigQuery standard o tabelle gestite Apache Iceberg.Utilizzando la funzione di cronologia delle modifiche
CHANGESper elaborare i dati modificati, incluse le aggiunte e le mutazioni, da un momento specifico durante l'esportazione dei dati in Pub/Sub. Tuttavia,CHANGESnon è supportato quando utilizzi un'operazione stateful o quando esegui query su tabelle gestite Iceberg.Esecuzione di query sulle viste, a condizione che la query SQL sottostante della vista sia una query continua valida.
Operazioni stateful supportate
Per richiedere assistenza o fornire un feedback su questa funzionalità, invia un'email all'indirizzo bq-continuous-queries-feedback@google.com.
Le operazioni stateful consentono alle query continue di eseguire analisi complesse che richiedono la conservazione delle informazioni su più righe o intervalli di tempo. Mentre le funzioni stateless elaborano ogni riga in modo indipendente, le operazioni stateful mantengono lo stato dei dati importati per supportare funzioni come JOIN, aggregazioni e aggregazioni di finestre. Questa funzionalità ti consente di correlare gli eventi di stream diversi o di calcolare le metriche nel tempo, ad esempio una media di 30 minuti, archiviando i dati necessari in memoria durante l'esecuzione della query.
Le query continue supportano le seguenti operazioni stateful:
Autorizzazione
I token di accessoGoogle Cloud utilizzati durante l'esecuzione di job di query continue hanno una durata (TTL) di due giorni se vengono generati da un account utente. Pertanto, questi job smettono di essere eseguiti dopo due giorni. I token di accesso generati dai service account possono essere eseguiti più a lungo, ma devono comunque rispettare il tempo di esecuzione massimo delle query. Per saperne di più, consulta Esegui una query continua utilizzando un service account.
Località
Per un elenco delle regioni supportate, consulta Località delle query continue di BigQuery.
Limitazioni
Le query continue sono soggette alle seguenti limitazioni:
- Lo stato dei dati importati viene mantenuto solo per le specifiche operazioni stateful in anteprima.
Sebbene le query continue ora supportino alcuni tipi di
JOIN, aggregazioni e aggregazioni di finestre, queste sono limitate a operazioni stateful specifiche. Non tutti i tipi di operazioni stateful sono supportati. Non puoi utilizzare le seguenti funzionalità SQL in una query continua, a meno che non siano elencate come operazione stateful supportata:
I seguenti operatori di query:
Operatori di set di query, ad eccezione di
UNION ALL.Funzioni di BigQuery ML diverse da quelle elencate in Funzionalità supportate
Istruzioni DML (Data Manipulation Language), ad eccezione di
INSERT.Istruzioni
EXPORT DATAche non hanno come target Bigtable, Pub/Sub o Spanner.
Le query continue non supportano le seguenti origini dati:
- Tabelle esterne.
- Viste dello schema di informazioni.
- Tabelle con funzione carattere jolly.
- Dati di upsert Change Data Capture (CDC).
- Viste materializzate.
- Viste in cui la query SQL sottostante utilizza funzionalità non supportate, come funzioni definite dall'utente, tabelle esterne o tabelle abilitate per CDC.
Le query continue non supportano le funzionalità di sicurezza a livello di column- e di riga.
L'output di una query continua è soggetto alle quote e ai limiti intrinseci del servizio di destinazione in cui viene esportato.
Quando esporti dati in Bigtable, Spanner o endpoint di località Pub/Sub puoi scegliere come target solo risorse Bigtable, Spanner o Pub/Sub che rientrano nello stesso confine regionale Google Cloud del set di dati BigQuery che contiene la tabella su cui stai eseguendo la query. Questa limitazione non si applica quando esporti i dati verso endpoint globali Pub/Sub. Per saperne di più sull'esportazione in una policy di routing del profilo dell'app Bigtable, consulta Considerazioni sulla località.
Non puoi eseguire una query continua da un data canvas.
Non puoi modificare l'SQL utilizzato in una query continua mentre il job di query continua è in esecuzione. Per saperne di più, consulta Modifica l'SQL di una query continua.
Se un job di query continua rimane indietro nell'elaborazione dei dati in arrivo e presenta un ritardo del watermark di output superiore a 48 ore, non va a buon fine. Puoi eseguire nuovamente la query e utilizzare la funzione della cronologia delle modifiche
APPENDSoCHANGESper riprendere l'elaborazione dal momento in cui hai interrotto il job di query continua precedente. Per saperne di più, consulta Avvia una query continua da un momento specifico.Una query continua configurata con un account utente può essere eseguita per un massimo di due giorni. Una query continua configurata con un account di servizio può essere eseguita per un massimo di 150 giorni. Quando viene raggiunto il tempo di esecuzione massimo della query, la query non va a buon fine e interrompe l'elaborazione dei dati in arrivo.
Sebbene le query continue siano create utilizzando le funzionalità di affidabilità di BigQuery, occasionalmente possono verificarsi problemi temporanei. I problemi potrebbero comportare una certa quantità di rielaborazione automatica della query continua, che potrebbe generare dati duplicati nell'output della query continua. Progetta i tuoi sistemi downstream in modo che gestiscano questi scenari.
Limitazioni delle prenotazioni
- Per eseguire query continue, devi creare una prenotazione della versione Enterprise o Enterprise Plus con un tipo di assegnazione
CONTINUOUS. Le query continue non supportano il modello di fatturazione del computing on demand. - Quando crei un'assegnazione di prenotazione
CONTINUOUS, la prenotazione associata è limitata a un massimo di 500 slot. Puoi richiedere un aumento di questo limite contattando bq-continuous-queries-feedback@google.com. - Non puoi creare un'assegnazione di prenotazione che utilizza un tipo di prestazione diverso nella stessa prenotazione di un'assegnazione di prenotazione per query continua.
BigQuery determina il numero di query continue che possono essere eseguite contemporaneamente per progetto in base alle dimensioni configurate dell'assegnazione della prenotazione che utilizza il tipo di prestazione
CONTINUOUS. Per ammettere nuovi job, BigQuery richiede una soglia di 10 slot per job di query continua. La query non consuma necessariamente tutti e 10 gli slot durante la normale esecuzione. Questa soglia garantisce che ogni query continua in esecuzione mantenga una capacità di calcolo di base sufficiente per gestire picchi improvvisi nel volume di dati in entrata senza ritardi o compromissioni nell'elaborazione a bassa latenza.Per assicurarti che le query vengano ammesse correttamente senza raggiungere i limiti di concorrenza, ti consigliamo di utilizzare la scalabilità automatica degli slot. Con la scalabilità automatica, l'utilizzo complessivo degli slot viene scalato dinamicamente in base alla domanda effettiva di risorse. Puoi configurare una prenotazione di base più piccola e impostare un limite massimo di scalabilità automatica che copra comodamente la soglia di 10 slot per query per le query simultanee previste.
Quando esegui più query continue utilizzando la stessa prenotazione, i singoli job potrebbero non suddividere equamente le risorse disponibili, come definito dall'equità di BigQuery.
Scalabilità automatica degli slot
Le query continue possono utilizzare la scalabilità automatica degli slot per scalare dinamicamente la capacità allocata in base al workload. Man mano che il workload delle query continue aumenta o diminuisce, BigQuery regola dinamicamente gli slot.
Dopo l'avvio di una query continua, questa ascolta attivamente i dati in entrata, consumando risorse slot. Anche se una prenotazione con una query continua in esecuzione non fa fare lo scale down a zero slot, una query continua inattiva che è principalmente in ascolto dei dati in entrata dovrebbe consumare una quantità minima di slot, in genere circa 1 slot.
Condivisione di slot inattivi
Le query continue possono utilizzare la condivisione degli slot inattivi per condividere le risorse degli slot inutilizzati con altre prenotazioni e tipi di prestazione.
- È comunque necessaria
un'assegnazione della prenotazione di
CONTINUOUSper eseguire una query continua e non puoi fare affidamento solo sugli slot inattivi di altre prenotazioni. Pertanto, un'assegnazione di prenotazioneCONTINUOUSrichiede una base di riferimento degli slot diversa da zero o una configurazione di scalabilità automatica degli slot diversa da zero. - Sono condivisibili solo gli slot di riferimento inattivi o gli slot impegnati di un'assegnazione di prenotazione
CONTINUOUS. Gli slot con scalabilità automatica non sono condivisibili come slot inattivi per altre prenotazioni.
Prezzi
Le query continue possono utilizzare la scalabilità fluida di BigQuery.
Le query continue utilizzano i prezzi per il computing della capacità di BigQuery, che vengono misurati in slot.
Per eseguire query continue, devi disporre di una prenotazione che utilizzi la versione Enterprise o Enterprise Plus e di un'assegnazione della prenotazione che utilizzi il tipo di job CONTINUOUS.
L'utilizzo di altre risorse BigQuery, come l'importazione e l'archiviazione dei dati, viene addebitato in base alle tariffe indicate in Prezzi di BigQuery.
L'utilizzo di altri servizi che ricevono risultati di query continue o che vengono chiamati durante l'elaborazione di query continue viene addebitato alle tariffe pubblicate per questi servizi. Per i prezzi di altri servizi Google Cloud utilizzati dalle query continue, consulta i seguenti argomenti:
Stima dei requisiti di capacità degli slot
Poiché ogni workload è diverso, spesso non è possibile stimare in anticipo il numero esatto di slot per le query continue. Il numero di slot richiesti dalle query continue dipende da una combinazione di diversi fattori:
- Il numero di query continue in esecuzione contemporaneamente.
- La complessità dell'istruzione SQL.
- L'utilizzo di funzioni di elaborazione stateful, tra cui durate delle finestre,
JOINe aggregazioni. - La frequenza o la velocità dei dati in entrata.
- La struttura e le dimensioni dei dati importati.
In linea di principio, puoi stimare il fabbisogno totale di slot in base al workload delle query continue:
Slot stimati ≈ Numero di query continue x ∑ (Frequenza dati x Complessità query)
Poiché il consumo effettivo di slot dipende in larga misura dal workload e dai pattern di dati unici, il metodo più accurato per stimare i costi è monitorare un job in esecuzione. Puoi misurare l'utilizzo di slot di picco di un'esecuzione di query continua isolata utilizzando le visualizzazioni INFORMATION_SCHEMA. Per istruzioni dettagliate e query di esempio per monitorare l'utilizzo degli slot nel tempo, consulta Visualizza le informazioni sull'utilizzo degli slot.
Passaggi successivi
Prova a creare una query continua.