Questo documento descrive come creare un abbonamento a BigQuery. Puoi utilizzare la console Google Cloud, Google Cloud CLI, la libreria client o l'API Pub/Sub per creare una sottoscrizione BigQuery.
Prima di iniziare
Prima di leggere questo documento, assicurati di conoscere quanto segue:
Come funzionano gli abbonamenti.
Il flusso di lavoro per le sottoscrizioni BigQuery.
Come configurare un argomento messaggi non recapitabili per gestire gli errori dei messaggi.
Oltre a conoscere Pub/Sub e BigQuery, assicurati di soddisfare i seguenti prerequisiti prima di creare una sottoscrizione BigQuery:
Esiste una tabella BigQuery. In alternativa, puoi crearne uno quando crei l'abbonamento BigQuery come descritto nelle sezioni successive di questo documento.
Compatibilità tra lo schema dell'argomento Pub/Sub e la tabella BigQuery. Se aggiungi una tabella BigQuery non compatibile, viene visualizzato un messaggio di errore relativo alla compatibilità. Per ulteriori informazioni, consulta la sezione Compatibilità degli schemi.
Ruoli e autorizzazioni richiesti
Di seguito è riportato un elenco di linee guida relative a ruoli e autorizzazioni:
Per creare un abbonamento, devi configurare il controllo dell'accesso a livello di progetto.
Sono inoltre necessarie autorizzazioni a livello di risorsa se i tuoi abbonati e gli argomenti si trovano in progetti diversi, come discusso più avanti in questa sezione.
Per creare una sottoscrizione BigQuery, l'account di servizio Pub/Sub deve disporre dell'autorizzazione per scrivere nella tabella BigQuery specifica. Per ulteriori informazioni su come concedere queste autorizzazioni, consulta la sezione successiva di questo documento.
Puoi configurare una sottoscrizione BigQuery in un progetto per scrivere in una tabella BigQuery di un altro progetto.
Per ottenere le autorizzazioni necessarie per creare sottoscrizioni BigQuery,
chiedi all'amministratore di concederti il ruolo IAM Editor Pub/Sub (roles/pubsub.editor
) nel progetto.
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.
Questo ruolo predefinito contiene le autorizzazioni necessarie per creare sottoscrizioni BigQuery. Per visualizzare le autorizzazioni esatte richieste, espandi la sezione Autorizzazioni richieste:
Autorizzazioni obbligatorie
Per creare sottoscrizioni BigQuery sono necessarie le seguenti autorizzazioni:
-
Estrazione da un abbonamento:
pubsub.subscriptions.consume
-
Creare un abbonamento:
pubsub.subscriptions.create
-
Eliminare un abbonamento:
pubsub.subscriptions.delete
-
Acquista un abbonamento:
pubsub.subscriptions.get
-
Elencare un abbonamento:
pubsub.subscriptions.list
-
Aggiornare un abbonamento:
pubsub.subscriptions.update
-
Allega una sottoscrizione a un argomento:
pubsub.topics.attachSubscription
-
Recupera il criterio IAM per un abbonamento:
pubsub.subscriptions.getIamPolicy
-
Configura il criterio IAM per un abbonamento:
pubsub.subscriptions.setIamPolicy
Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.
Se devi creare sottoscrizioni BigQuery in un progetto associate a un argomento in un altro progetto, chiedi all'amministratore dell'argomento di concederti anche il ruolo IAM Editor Pub/Sub(roles/pubsub.editor)
per l'argomento.
Assegna i ruoli BigQuery all'account di servizio Pub/Sub
Alcuni servizi Google Cloud dispongono di account di servizio gestiti da Google Cloud che consentono ai servizi di accedere alle tue risorse. Questi account di servizio sono noti come agenti di servizio. Pub/Sub crea e gestisce un account di servizio per ogni progetto nel formatoservice-project-number@gcp-sa-pubsub.iam.gserviceaccount.com
.
Per creare una sottoscrizione BigQuery, l'account di servizio Pub/Sub deve disporre dell'autorizzazione per scrivere nella tabella BigQuery specifica e per leggere i metadati della tabella.
Concedi il ruolo Editor dati BigQuery (roles/bigquery.dataEditor
) all'account di servizio Pub/Sub.
Nella console Google Cloud, vai alla pagina IAM.
Fai clic su Concedi accesso.
Nella sezione Aggiungi entità, inserisci il nome del tuo account di servizio Pub/Sub. Il formato dell'account di servizio è
service-project-number@gcp-sa-pubsub.iam.gserviceaccount.com
. Ad esempio, per un progetto conproject-number=112233445566
, l'account di servizio è nel formatoservice-112233445566@gcp-sa-pubsub.iam.gserviceaccount.com
.Nella sezione Assegna ruoli, fai clic su Aggiungi un altro ruolo.
Nel menu a discesa Seleziona un ruolo, inserisci
BigQuery
e seleziona il ruolo Editor dati BigQuery.Fai clic su Salva.
Per ulteriori informazioni su IAM di BigQuery, consulta Ruoli e autorizzazioni di BigQuery.
Proprietà delle sottoscrizioni BigQuery
Quando configuri un abbonamento BigQuery, puoi specificare le seguenti proprietà.
Proprietà comuni
Scopri le proprietà comuni degli abbonamenti che puoi impostare su tutti gli abbonamenti.
Utilizza schema argomento
Questa opzione consente a Pub/Sub di utilizzare lo schema dell'argomento Pub/Sub a cui è associata la sottoscrizione. Inoltre, Pub/Sub scrive i campi nei messaggi nelle colonne corrispondenti della tabella BigQuery.
Quando utilizzi questa opzione, ricordati di verificare i seguenti requisiti aggiuntivi:
I campi nello schema dell'argomento e nello schema di BigQuery devono avere gli stessi nomi e i relativi tipi devono essere compatibili tra loro.
Qualsiasi campo facoltativo nello schema dell'argomento deve essere facoltativo anche nello schema di BigQuery.
I campi obbligatori nello schema dell'argomento non devono essere obbligatori nello schema di BigQuery.
Se sono presenti campi BigQuery non presenti nello schema dell'argomento, questi campi devono essere in modalità
NULLABLE
.Se lo schema dell'argomento contiene campi aggiuntivi che non sono presenti nello schema di BigQuery e che possono essere ignorati, seleziona l'opzione Ignora campi sconosciuti.
Puoi selezionare una sola delle proprietà di sottoscrizione, Utilizza lo schema dell'argomento o Utilizza lo schema della tabella.
Se non selezioni l'opzione Utilizza schema argomento o Utilizza schema tabella, assicurati che la tabella BigQuery abbia una colonna denominata data
di tipo BYTES
, STRING
o JSON
. Pub/Sub scrive il messaggio in questa colonna BigQuery.
Le modifiche allo schema degli argomenti Pub/Sub o allo schema della tabella BigQuery potrebbero non essere applicate immediatamente ai messaggi scritti nella tabella BigQuery. Ad esempio, se l'opzione Elimina campi sconosciuti è attivata e un campo è presente nello schema Pub/Sub, ma non in quello di BigQuery, i messaggi scritti nella tabella BigQuery potrebbero non contenere ancora il campo dopo averlo aggiunto allo schema di BigQuery. Alla fine, gli schemi si sincronizzano e i messaggi successivi includono il campo.
Quando utilizzi l'opzione Utilizza schema dell'argomento per la sottoscrizione BigQuery, puoi anche usufruire del CDC (Change Data Capture) di BigQuery. CDC aggiorna le tabelle BigQuery elaborando e applicando le modifiche alle righe esistenti.
Per scoprire di più su questa funzionalità, consulta Aggiornare le tabelle di streaming con l'acquisizione dei dati sulle modifiche.
Per scoprire come utilizzare questa funzionalità con gli abbonamenti BigQuery, consulta Acquisizione dei dati sulle modifiche di BigQuery.
Utilizza schema tabella
Questa opzione consente a Pub/Sub di utilizzare lo schema della tabella BigQuery per scrivere i campi di un messaggio JSON nelle colonne corrispondenti. Quando utilizzi questa opzione, ricordati di verificare i seguenti requisiti aggiuntivi:
I messaggi pubblicati devono essere in formato JSON.
Sono supportate le seguenti conversioni JSON:
Tipo JSON Tipo di dati BigQuery string
NUMERIC
,BIGNUMERIC
,DATE
,TIME
,DATETIME
oTIMESTAMP
number
NUMERIC
,BIGNUMERIC
,DATE
,TIME
,DATETIME
oTIMESTAMP
- Quando utilizzi le conversioni da
number
aDATE
,DATETIME
,TIME
oTIMESTAMP
, il numero deve rispettare le rappresentazioni supportate. - Quando utilizzi la conversione da
number
aNUMERIC
oBIGNUMERIC
, la precisione e l'intervallo di valori sono limitati a quelli accettati dallo standard IEEE 754 per l'aritmetica a virgola mobile. Se hai bisogno di una precisione elevata o di una gamma più ampia di valori, utilizza le conversioni dastring
aNUMERIC
oBIGNUMERIC
. - Quando utilizzi le conversioni da
string
aNUMERIC
oBIGNUMERIC
, Pub/Sub presuppone che la stringa sia un numero leggibile (ad es."123.124"
). Se l'elaborazione della stringa come numero leggibile non va a buon fine, Pub/Sub la tratta come byte codificati con BigDecimalByteStringEncoder.
- Quando utilizzi le conversioni da
Se all'argomento della sottoscrizione è associato uno schema, la proprietà di codifica dei messaggi deve essere impostata su
JSON
.Se sono presenti campi BigQuery non presenti nei messaggi, questi campi BigQuery devono essere in modalità
NULLABLE
.Se i messaggi contengono campi aggiuntivi non presenti nello schema BigQuery e questi campi possono essere ignorati, seleziona l'opzione Ignora campi sconosciuti.
Puoi selezionare una sola delle proprietà di sottoscrizione, Utilizza lo schema dell'argomento o Utilizza lo schema della tabella.
Se non selezioni l'opzione Utilizza schema argomento o Utilizza schema tabella, assicurati che la tabella BigQuery abbia una colonna denominata data
di tipo BYTES
, STRING
o JSON
. Pub/Sub scrive il messaggio in questa colonna BigQuery.
Le modifiche allo schema della tabella BigQuery potrebbero non essere applicate immediatamente ai messaggi scritti nella tabella BigQuery. Ad esempio, se l'opzione Elimina campi sconosciuti è attivata e un campo è presente nei messaggi, ma non nello schema di BigQuery, i messaggi scritti nella tabella BigQuery potrebbero non contenere ancora il campo dopo averlo aggiunto allo schema di BigQuery. Alla fine, lo schema si sincronizza e i messaggi successivi includono il campo.
Quando utilizzi l'opzione Utilizza lo schema della tabella per la tua sottoscrizione BigQuery, puoi anche sfruttare il vantaggio di BigQuery Change Data Capture (CDC). CDC aggiorna le tabelle BigQuery elaborando e applicando le modifiche alle righe esistenti.
Per scoprire di più su questa funzionalità, consulta Aggiornare le tabelle di streaming con l'acquisizione dei dati sulle modifiche.
Per scoprire come utilizzare questa funzionalità con gli abbonamenti BigQuery, consulta Acquisizione dei dati sulle modifiche di BigQuery.
Rilascia campi sconosciuti
Questa opzione viene utilizzata con l'opzione Utilizza schema argomento o Utilizza schema tabella. Questa opzione consente a Pub/Sub di ignorare qualsiasi campo presente nello schema o nel messaggio dell'argomento, ma non nello schema di BigQuery. Se non è impostato Elimina campi sconosciuti, i messaggi con campi aggiuntivi non vengono scritti in BigQuery e rimangono nel backlog della sottoscrizione. L'abbonamento termina in uno stato di errore.
Scrivi metadati
Questa opzione consente a Pub/Sub di scrivere i metadati di ogni messaggio in colonne aggiuntive della tabella BigQuery. In caso contrario, i metadati non vengono scritti nella tabella BigQuery.
Se selezioni l'opzione Scrivi metadati, assicurati che la tabella BigQuery contenga i campi descritti nella tabella seguente.
Se non selezioni l'opzione Scrivi metadati, la tabella BigQuery di destinazione richiede solo il campo data
, a meno che use_topic_schema
non sia true. Se selezioni sia l'opzione Scrivi metadati sia
Utilizza schema argomento, lo schema dell'argomento non deve
contenere campi con nomi corrispondenti a quelli dei parametri dei metadati.
Questa limitazione include le versioni con lettere maiuscole di questi parametri con lettere minuscole.
Parametri | |
---|---|
subscription_name |
STRING Nome di un abbonamento. |
message_id |
STRING ID di un messaggio |
publish_time |
TIMESTAMP L'ora di pubblicazione di un messaggio. |
data |
BYTES, STRING o JSON Il corpo del messaggio. Il campo |
attributes |
STRING o JSON Un oggetto JSON contenente tutti gli attributi del messaggio. Contiene inoltre campi aggiuntivi che fanno parte del messaggio Pub/Sub, inclusa la chiave di ordinamento, se presente. |
Creare una sottoscrizione BigQuery
Gli esempi riportati di seguito mostrano come creare un abbonamento con invio BigQuery.
Console
- Nella console Google Cloud, vai alla pagina Abbonamenti.
- Fai clic su Crea sottoscrizione.
- Per il campo ID sottoscrizione, inserisci un nome.
Per informazioni su come assegnare un nome a un abbonamento, consulta le linee guida per assegnare un nome a un argomento o a un abbonamento.
- Scegli o crea un argomento dal menu a discesa. La sottoscrizione riceve i messaggi dall'argomento.
- Seleziona Tipo di importazione come Scrive in BigQuery.
- Seleziona il progetto per la tabella BigQuery.
- Seleziona un set di dati esistente o creane uno nuovo.
Per informazioni su come creare un set di dati, consulta Creare set di dati.
- Seleziona una tabella esistente o creane una nuova.
Per informazioni su come creare una tabella, consulta Creare tabelle.
- Ti consigliamo vivamente di attivare la funzionalità Messaggi non recapitabili per gestire gli errori dei messaggi.
Per ulteriori informazioni, consulta l'argomento Lettere morte.
- Fai clic su Crea.
Puoi anche creare una sottoscrizione dalla pagina Argomenti. Questa scorciatoia è utile per associare gli argomenti alle sottoscrizioni.
- Nella console Google Cloud, vai alla pagina Topic.
- Fai clic su more_vert accanto all'argomento per cui vuoi creare un abbonamento.
- Dal menu contestuale, seleziona Crea abbonamento.
- Seleziona Tipo di importazione come Scrive in BigQuery.
- Seleziona il progetto per la tabella BigQuery.
- Seleziona un set di dati esistente o creane uno nuovo.
Per informazioni su come creare un set di dati, consulta Creare set di dati.
- Seleziona una tabella esistente o creane una nuova.
Per informazioni su come creare un set di dati, consulta Creare tabelle.
- Ti consigliamo vivamente di attivare la funzionalità Messaggi non recapitabili per gestire gli errori dei messaggi.
Per ulteriori informazioni, consulta l'argomento Lettere morte.
- Fai clic su Crea.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
-
Per creare una sottoscrizione Pub/Sub, usa il comando
gcloud pubsub subscriptions create
:gcloud pubsub subscriptions create SUBSCRIPTION_ID \ --topic=TOPIC_ID \ --bigquery-table=PROJECT_ID:DATASET_ID.TABLE_ID
Sostituisci quanto segue:
- SUBSCRIPTION_ID: specifica l'ID dell'abbonamento.
- TOPIC_ID: specifica l'ID dell'argomento. L'argomento richiede uno schema.
- PROJECT_ID: specifica l'ID del progetto.
- DATASET_ID: specifica l'ID di un set di dati esistente. Per creare un set di dati, consulta Creare set di dati.
- TABLE_ID: specifica l'ID di una tabella esistente. La tabella richiede un campo data se l'argomento non ha uno schema. Per creare una tabella, consulta Creare una tabella vuota con una definizione di schema.
C++
Prima di provare questo esempio, segui le istruzioni di configurazione di C++ riportate nella guida rapida di Pub/Sub che utilizza le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub C++.
Per autenticarti a Pub/Sub, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per le librerie client.
C#
Prima di provare questo esempio, segui le istruzioni di configurazione di C# riportate nella guida rapida di Pub/Sub che utilizza le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub C#.
Per autenticarti a Pub/Sub, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per le librerie client.
Go
Prima di provare questo esempio, segui le istruzioni di configurazione di Go riportate nella guida rapida di Pub/Sub che utilizza le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub Go.
Per autenticarti a Pub/Sub, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per le librerie client.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java riportate nella guida rapida di Pub/Sub che utilizza le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub Java.
Per autenticarti a Pub/Sub, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per le librerie client.
Node.js
Node.js
PHP
Prima di provare questo esempio, segui le istruzioni di configurazione di PHP riportate nella guida rapida di Pub/Sub che utilizza le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub PHP.
Per autenticarti a Pub/Sub, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per le librerie client.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python riportate nella guida rapida di Pub/Sub che utilizza le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub Python.
Per autenticarti a Pub/Sub, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per le librerie client.
Ruby
Prima di provare questo esempio, segui le istruzioni di configurazione di Ruby riportate nella guida rapida di Pub/Sub che utilizza le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub Ruby.
Per autenticarti a Pub/Sub, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per le librerie client.
Monitorare una sottoscrizione BigQuery
Cloud Monitoring fornisce una serie di metriche per monitorare gli abbonamenti.
Per un elenco di tutte le metriche disponibili relative a Pub/Sub e le relative descrizioni, consulta la documentazione di monitoraggio per Pub/Sub.
Puoi anche monitorare le iscrizioni dall'interno di Pub/Sub.
Passaggi successivi
- Crea o modifica un abbonamento con i comandi
gcloud
. - Crea o modifica un abbonamento con le API REST.
- Risolvi i problemi relativi a un abbonamento BigQuery.