Questo documento fornisce una panoramica di una sottoscrizione BigQuery, del flusso di lavoro e delle proprietà associate.
Una sottoscrizione BigQuery è un tipo di sottoscrizione per l'esportazione che scrive i messaggi in una tabella BigQuery esistente quando vengono ricevuti. Non è necessario configurare un client sottoscrittore separato. Utilizza la console Google Cloud, Google Cloud CLI, le librerie client o l'API Pub/Sub per creare, aggiornare, elencare, scollegare o eliminare abbonamento a BigQuery.
Senza il tipo di sottoscrizione BigQuery, devi avere una sottoscrizione pull o push e un sottoscrittore (come Dataflow) che legge i messaggi e li scrive in una tabella BigQuery. L'overhead associato all'esecuzione Il job Dataflow non è necessario quando i messaggi non richiedono ulteriori elaborazioni prima di archiviarle in una tabella BigQuery; puoi usare una sottoscrizione BigQuery.
Tuttavia, è comunque consigliata una pipeline Dataflow Sistemi Pub/Sub in cui è richiesta una certa trasformazione dei dati prima vengono archiviati in una tabella BigQuery. Per scoprire come trasmettere in streaming da Pub/Sub a BigQuery con trasformazione utilizzando Dataflow, vedi Flusso di dati da Pub/Sub BigQuery.
La sottoscrizione Pub/Sub al modello BigQuery di Dataflow applica la distribuzione "exactly-once" entro il giorno predefinito. Ciò si ottiene in genere mediante meccanismi di deduplicazione all'interno la pipeline Dataflow. Tuttavia, BigQuery abbonamento supporta solo la consegna "at-least-once". Se la deduplicazione esatta viene fondamentale per il tuo caso d'uso, considera i processi downstream BigQuery per gestire i potenziali duplicati.
Prima di iniziare
Prima di leggere questo documento, assicurati di acquisire familiarità con quanto segue:
Come funziona Pub/Sub e le diverse di Pub/Sub.
I diversi tipi di abbonamenti supportato da Pub/Sub e i motivi per cui potresti voler utilizzare abbonamento a BigQuery.
Come funziona BigQuery e come configurarlo e gestire le tabelle BigQuery.
Flusso di lavoro della sottoscrizione BigQuery
L'immagine seguente mostra il flusso di lavoro tra un ambiente BigQuery abbonamento a BigQuery e BigQuery.
Ecco una breve descrizione del flusso di lavoro che fa riferimento alla Figura 1:
- Pub/Sub utilizza la funzionalità di scrittura dello spazio di archiviazione BigQuery API per inviare dati a BigQuery tabella.
- I messaggi vengono inviati in batch alla tabella BigQuery.
- Dopo il completamento di un'operazione di scrittura, l'API restituisce un la risposta corretta.
- In caso di errori durante l'operazione di scrittura, Il messaggio Pub/Sub stesso viene confermato negativamente. La il messaggio viene inviato di nuovo. Se il messaggio non funziona abbastanza volte e per l'argomento messaggi non recapitabili configurato nella sottoscrizione, il messaggio viene spostato all'argomento messaggi non recapitabili.
Proprietà di una sottoscrizione BigQuery
Le proprietà che configuri per una sottoscrizione BigQuery Determinare la tabella BigQuery a cui inviare Pub/Sub. scrive i messaggi e il tipo di schema di quella tabella.
Per ulteriori informazioni, consulta BigQuery proprietà.
Compatibilità schema
Pub/Sub e BigQuery usano diversi modi per ne definiscono gli schemi. Gli schemi Pub/Sub sono definiti in Apache Avro o Protocol Buffer mentre Gli schemi BigQuery vengono definiti utilizzando vari formati. Di seguito è riportato un elenco informazioni importanti sulla compatibilità dello schema tra un argomento Pub/Sub e una tabella BigQuery.
I messaggi che contengono un campo non correttamente formattato non verranno scritti in in BigQuery.
Nello schema BigQuery,
INT
,SMALLINT
,INTEGER
,BIGINT
,TINYINT
eBYTEINT
sono alias perINTEGER
;DECIMAL
è un alias diNUMERIC
; mentreBIGDECIMAL
è un alias diBIGNUMERIC
.Quando il tipo nello schema dell'argomento è
string
e il tipo nello schema La tabella BigQuery èJSON
,TIMESTAMP
,DATETIME
,DATE
,TIME
,NUMERIC
oBIGNUMERIC
, quindi qualsiasi valore di questo campo in una Il messaggio Pub/Sub deve rispettare il formato specificato per Dati BigQuery tipo.Sono supportati alcuni tipi logici Avro, come specificato nella tabella seguente. Tutti i tipi logici non elencati corrispondono solo al tipo Avro equivalente che annotare, come descritto nelle specifiche di Avro.
Di seguito è riportata una raccolta di mappatura di diversi formati di schema a Tipi di dati di BigQuery.
Tipi di Avro
Tipo di avro | Tipo di dati BigQuery |
null |
Any NULLABLE |
boolean |
BOOLEAN |
int |
INTEGER , NUMERIC o
BIGNUMERIC |
long |
INTEGER , NUMERIC o
BIGNUMERIC |
float |
FLOAT64 , NUMERIC o
BIGNUMERIC |
double |
FLOAT64 , NUMERIC o
BIGNUMERIC |
bytes |
BYTES , NUMERIC o
BIGNUMERIC |
string |
STRING , JSON ,
TIMESTAMP DATETIME
DATE , TIME ,
NUMERIC o BIGNUMERIC |
record |
RECORD/STRUCT |
array di Type |
REPEATED Type |
map con tipo di valore ValueType
|
REPEATED STRUCT <key STRING, value
ValueType> |
union con due tipi, uno che è
null e gli altri Type |
NULLABLE Type |
altri union |
Non mappabile |
fixed |
BYTES , NUMERIC o
BIGNUMERIC |
enum |
INTEGER |
Tipi logici Avro
Tipo logico Avro | Tipo di dati BigQuery |
timestamp-micros |
TIMESTAMP |
date |
DATE |
time-micros |
TIME |
duration |
INTERVAL |
decimal |
NUMERIC o BIGNUMERIC |
Tipi di buffer di protocollo
Tipo di buffer di protocollo | Tipo di dati BigQuery |
double |
FLOAT64 , NUMERIC o
BIGNUMERIC |
float |
FLOAT64 , NUMERIC o
BIGNUMERIC |
int32 |
INTEGER , NUMERIC ,
BIGNUMERIC oppure DATE |
int64 |
INTEGER , NUMERIC ,
BIGNUMERIC DATE
DATETIME o TIMESTAMP |
uint32 |
INTEGER , NUMERIC ,
BIGNUMERIC oppure DATE |
uint64 |
NUMERIC o BIGNUMERIC |
sint32 |
INTEGER , NUMERIC o
BIGNUMERIC |
sint64 |
INTEGER , NUMERIC ,
BIGNUMERIC DATE
DATETIME o TIMESTAMP |
fixed32 |
INTEGER , NUMERIC ,
BIGNUMERIC oppure DATE |
fixed64 |
NUMERIC o BIGNUMERIC |
sfixed32 |
INTEGER , NUMERIC ,
BIGNUMERIC oppure DATE |
sfixed64 |
INTEGER , NUMERIC ,
BIGNUMERIC DATE
DATETIME o TIMESTAMP |
bool |
BOOLEAN |
string |
STRING , JSON ,
TIMESTAMP DATETIME
DATE , TIME ,
NUMERIC o BIGNUMERIC |
bytes |
BYTES , NUMERIC o
BIGNUMERIC |
enum |
INTEGER |
message |
RECORD/STRUCT |
oneof |
Non mappabile |
map<KeyType, ValueType> |
REPEATED RECORD<key KeyType, value
ValueType> |
enum |
INTEGER |
repeated/array of Type |
REPEATED Type |
Rappresentazione del numero intero per data e ora
Quando si esegue la mappatura da un numero intero a uno dei tipi di data o ora, il numero deve rappresentano il valore corretto. Di seguito è riportata la mappatura dai dati BigQuery tipi al numero intero che li rappresenta.
Tipo di dati BigQuery | Rappresentazione dei numeri interi |
DATE |
Il numero di giorni dall'epoca di Unix, 1° gennaio 1970 |
DATETIME |
La data e l'ora in microsecondi espressi come ora civile utilizzando CivilTimeEncoder |
TIME |
Il tempo in microsecondi espresso come ora civile utilizzando la CivilTimeEncoder |
TIMESTAMP |
Il numero di microsecondi dall'epoca di Unix, 1° gennaio 1970 00:00:00 UTC |
Change Data Capture (CDC) di BigQuery
Le sottoscrizioni BigQuery supportano CDC (Change Data Capture)
vengono aggiornati quando
use_topic_schema
oppure
use_table_schema
sia impostato su true
nelle proprietà dell'abbonamento. Per utilizzare la funzionalità con
use_topic_schema
, imposta lo schema dell'argomento con
campo seguente:
_CHANGE_TYPE
(obbligatorio): un campostring
impostato suUPSERT
oDELETE
.Se un messaggio Pub/Sub viene scritto La tabella BigQuery ha
_CHANGE_TYPE
impostato suUPSERT
, BigQuery aggiorna la riga con la stessa chiave se esiste o inserisce una nuova riga in caso contrario.Se un messaggio Pub/Sub viene scritto La tabella BigQuery ha
_CHANGE_TYPE
impostato suDELETE
, BigQuery elimina la riga nella tabella con la stessa chiave, se esistente.
Per utilizzare la funzionalità con use_table_schema
, includi il campo precedente in
il messaggio JSON.
Autorizzazioni dell'account di servizio Pub/Sub
Per creare una sottoscrizione BigQuery, il comando Pub/Sub l'account di servizio deve disporre dell'autorizzazione per scrivere nell'account dalla tabella BigQuery e leggere i metadati della tabella. Per maggiori informazioni informazioni, consulta Assegnare i ruoli BigQuery Servizio Pub/Sub Google Cloud.
Gestire gli errori relativi ai messaggi
Quando non è possibile scrivere un messaggio Pub/Sub
BigQuery, il messaggio non può essere confermato. Per inoltrare tale
messaggi non recapitabili, configura un messaggio non recapitabile
nella sezione
abbonamento a BigQuery. Il messaggio Pub/Sub
inoltrato all'argomento messaggi non recapitabili contiene un attributo
CloudPubSubDeadLetterSourceDeliveryErrorMessage
che è il motivo per cui
Impossibile scrivere il messaggio Pub/Sub
in BigQuery.
Se Pub/Sub non può scrivere messaggi in BigQuery, Pub/Sub si oppone alla consegna dei messaggi in modo simile comportamenti di backoff push. Tuttavia, se ha un abbonamento argomento messaggi non recapitabili allegato Pub/Sub non annulla la consegna quando i messaggi sono dovuti a errori di compatibilità dello schema.
Quote e limiti
Sono presenti limitazioni di quota per il sottoscrittore BigQuery per regione. Per ulteriori informazioni, consulta la pagina relativa alle quote di Pub/Sub e limiti.
Le sottoscrizioni BigQuery scrivono dati utilizzando API BigQuery StorageWrite. Per informazioni su quote e limiti per l'API StorageWrite, consulta API BigQuery Storage Scrivi richieste. BigQuery le sottoscrizioni consumano solo la quota di velocità effettiva per l'API StorageWrite. Tu puoi ignorare le altre considerazioni sulla quota dell'API StorageWrite in questa istanza.
Prezzi
Per i prezzi delle sottoscrizioni BigQuery, consulta dei prezzi di Pub/Sub.
Passaggi successivi
Crea una sottoscrizione, ad esempio un BigQuery abbonamento.
Risolvi i problemi relativi a un BigQuery abbonamento.
Scopri di più su BigQuery.
Consulta i prezzi di Pub/Sub, tra cui sottoscrizioni BigQuery.
Crea o modifica un abbonamento con l'interfaccia a riga di comando di
gcloud
comandi vocali.Creare o modificare una sottoscrizione con REST per le API.