Questo documento descrive come creare una sottoscrizione 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 acquisire familiarità con 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 relativi ai messaggi.
Oltre alla tua familiarità con Pub/Sub e BigQuery, assicurati di soddisfare i seguenti prerequisiti prima di creare una sottoscrizione BigQuery:
Esiste una tabella BigQuery. In alternativa, puoi crearne una quando crei la sottoscrizione 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, riceverai un messaggio di errore relativo alla compatibilità. Per ulteriori informazioni, consulta la sezione Compatibilità degli schemi.
Autorizzazioni e ruoli richiesti
Di seguito è riportato un elenco di linee guida relative ai ruoli e alle autorizzazioni:
Per creare una sottoscrizione, devi configurare il controllo dell'accesso a livello di progetto.
Devi disporre delle autorizzazioni a livello di risorsa anche se gli abbonamenti e gli argomenti si trovano in progetti diversi, come illustrato 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
) per il progetto.
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.
Questo ruolo predefinito contiene le autorizzazioni necessarie per creare sottoscrizioni BigQuery. Per visualizzare le autorizzazioni esatte necessarie, espandi la sezione Autorizzazioni richieste:
Autorizzazioni obbligatorie
Per creare sottoscrizioni BigQuery sono necessarie le seguenti autorizzazioni:
-
Esegui il pull da una sottoscrizione:
pubsub.subscriptions.consume
-
Crea una sottoscrizione:
pubsub.subscriptions.create
-
Elimina una sottoscrizione:
pubsub.subscriptions.delete
-
Acquista un abbonamento:
pubsub.subscriptions.get
-
Elenca un abbonamento:
pubsub.subscriptions.list
-
Aggiorna un abbonamento:
pubsub.subscriptions.update
-
Allega una sottoscrizione a un argomento:
pubsub.topics.attachSubscription
-
Ottieni il criterio IAM per una sottoscrizione:
pubsub.subscriptions.getIamPolicy
-
Configura il criterio IAM per un abbonamento:
pubsub.subscriptions.setIamPolicy
Potresti anche essere in grado di ottenere queste autorizzazioni con i ruoli personalizzati o altri ruoli predefiniti.
Se devi creare sottoscrizioni BigQuery in un progetto associati 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 formato service-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 leggere i metadati della tabella.
Concedi il ruolo di 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 BigQuery IAM, consulta Ruoli e autorizzazioni di BigQuery.
Proprietà della sottoscrizione BigQuery
Quando configuri una sottoscrizione BigQuery, puoi specificare le seguenti proprietà.
Proprietà comuni
Scopri di più sulle proprietà di abbonamento comuni che puoi impostare per tutte le sottoscrizioni.
Utilizza schema argomento
Questa opzione consente a Pub/Sub di utilizzare lo schema dell'argomento Pub/Sub a cui è collegato la sottoscrizione. Inoltre, Pub/Sub scrive i campi dei messaggi nelle colonne corrispondenti della tabella BigQuery.
Quando utilizzi questa opzione, ricordati di controllare i seguenti requisiti aggiuntivi:
I campi nello schema dell'argomento e in quello di BigQuery devono avere gli stessi nomi e i loro tipi devono essere compatibili tra loro.
Qualsiasi campo facoltativo dello schema dell'argomento deve essere obbligatorio anche nello schema di BigQuery.
Non è necessario che i campi obbligatori nello schema dell'argomento siano obbligatori nello schema di BigQuery.
Se ci sono campi BigQuery che non sono presenti nello schema dell'argomento, questi campi BigQuery devono essere in modalità
NULLABLE
.Se lo schema dell'argomento include campi aggiuntivi che non sono presenti nello schema BigQuery e questi campi possono essere eliminati, seleziona l'opzione Elimina campi sconosciuti.
Puoi selezionare solo una delle proprietà della sottoscrizione, Utilizza schema argomento o Utilizza schema 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.
Potresti non notare che le modifiche allo schema degli argomenti Pub/Sub o allo schema della tabella BigQuery diventeranno effettive immediatamente con i messaggi scritti nella tabella BigQuery. Ad esempio, se l'opzione Elimina campi sconosciuti è abilitata e nello schema Pub/Sub è presente un campo, ma non lo schema BigQuery, i messaggi scritti nella tabella BigQuery potrebbero comunque non contenere il campo dopo averlo aggiunto allo schema BigQuery. Alla fine, gli schemi verranno sincronizzati e i messaggi successivi includeranno il campo.
Quando utilizzi l'opzione Utilizza schema argomento per la sottoscrizione BigQuery, puoi anche usufruire della Change Data Capture (CDC) di BigQuery. CDC aggiorna le tabelle BigQuery elaborando e applicando modifiche alle righe esistenti.
Per scoprire di più su questa funzionalità, consulta Streaming di aggiornamenti delle tabelle con Change Data Capture (CDC).
Per scoprire come utilizzare questa funzionalità con le sottoscrizioni BigQuery, consulta Change Data Capture (CDC) di BigQuery.
Usa 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 controllare i seguenti requisiti aggiuntivi:
I messaggi pubblicati devono essere in formato JSON.
Se all'argomento della sottoscrizione è associato uno schema, la proprietà di codifica del messaggio deve essere impostata su
JSON
.Se ci sono campi BigQuery che non sono presenti nei messaggi, questi campi BigQuery devono essere in modalità
NULLABLE
.Se i messaggi contengono campi aggiuntivi che non sono presenti nello schema di BigQuery e questi campi possono essere eliminati, seleziona l'opzione Elimina campi sconosciuti.
Nel messaggio JSON, i valori
DATE
,DATETIME
,TIME
eTIMESTAMP
devono essere numeri interi che rispettano le rappresentazioni supportate.Nel messaggio JSON, i valori
NUMERIC
eBIGNUMERIC
devono essere byte codificati utilizzando BigDecimalByteStringEncoder.Puoi selezionare solo una delle proprietà della sottoscrizione, Utilizza schema argomento o Utilizza schema 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.
Potresti non notare che le modifiche allo schema della tabella BigQuery vengono applicate immediatamente con i messaggi scritti nella tabella BigQuery. Ad esempio, se l'opzione Elimina campi sconosciuti è abilitata e un campo è presente nei messaggi, ma non nello schema BigQuery, i messaggi scritti nella tabella BigQuery potrebbero comunque non contenere il campo dopo averlo aggiunto allo schema BigQuery. Alla fine, lo schema viene sincronizzato e i messaggi successivi includono il campo.
Quando utilizzi l'opzione Utilizza schema tabella per la sottoscrizione BigQuery, puoi anche usufruire della Change Data Capture (CDC) di BigQuery. CDC aggiorna le tabelle BigQuery elaborando e applicando modifiche alle righe esistenti.
Per scoprire di più su questa funzionalità, consulta Streaming di aggiornamenti delle tabelle con Change Data Capture (CDC).
Per scoprire come utilizzare questa funzionalità con le sottoscrizioni BigQuery, consulta Change Data Capture (CDC) 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 Elimina campi sconosciuti non viene impostato, i messaggi con campi aggiuntivi non vengono scritti in BigQuery e rimangono nel backlog della sottoscrizione. L'abbonamento risulta stato di errore.
Scrivi metadati
Questa opzione consente a Pub/Sub di scrivere i metadati di ciascun 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 seguente tabella.
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 entrambe le opzioni Scrivi metadati e 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 cammello di questi parametri relativi alle custodie serpenti.
Parametri | |
---|---|
subscription_name |
STRING Il 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 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
I seguenti esempi mostrano come creare una sottoscrizione con la consegna di BigQuery.
Console
- Nella console Google Cloud, vai alla pagina Abbonamenti.
- Fai clic su Crea sottoscrizione.
- Inserisci un nome nel campo ID abbonamento.
Per informazioni su come assegnare un nome a una sottoscrizione, consulta le linee guida per assegnare un nome a un argomento o a una sottoscrizione.
- Scegli o crea un argomento dal menu a discesa. La sottoscrizione riceve messaggi dall'argomento.
- Seleziona Tipo di consegna come Scrivi 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 Creazione di set di dati.
- Seleziona una tabella esistente o creane una nuova.
Per informazioni su come creare una tabella, consulta la sezione Creazione delle tabelle.
- Ti consigliamo vivamente di abilitare Non recapitabili per gestire gli errori relativi ai messaggi.
Per ulteriori informazioni, consulta l'argomento messaggi non recapitabili.
- Fai clic su Crea.
Puoi creare un abbonamento anche dalla pagina Argomenti. Questa scorciatoia è utile per associare gli argomenti agli abbonamenti.
- Nella console Google Cloud, vai alla pagina Argomenti.
- Fai clic su more_vert accanto all'argomento per cui vuoi creare una sottoscrizione.
- Dal menu contestuale, seleziona Crea abbonamento.
- Seleziona Tipo di consegna come Scrivi 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 Creazione di set di dati.
- Seleziona una tabella esistente o creane una nuova.
Per informazioni su come creare un set di dati, consulta la sezione Creazione di tabelle.
- Ti consigliamo vivamente di abilitare Non recapitabili per gestire gli errori relativi ai messaggi.
Per ulteriori informazioni, consulta l'argomento messaggi non recapitabili.
- Fai clic su Crea.
gcloud
-
Nella console Google Cloud, attiva Cloud Shell.
Nella parte inferiore della console Google Cloud viene avviata una sessione di Cloud Shell che mostra un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installato e con valori già impostati per il progetto attuale. L'inizializzazione della sessione può richiedere alcuni secondi.
-
Per creare un abbonamento Pub/Sub, utilizza 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 della sottoscrizione.
- 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++ nella guida rapida di Pub/Sub sull'utilizzo delle librerie client. Per maggiori informazioni, consulta la documentazione di riferimento dell'API C++ di Pub/Sub.
Per eseguire l'autenticazione in Pub/Sub, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
C#
Prima di provare questo esempio, segui le istruzioni di configurazione di C# nella guida rapida di Pub/Sub sull'utilizzo delle librerie client. Per maggiori informazioni, consulta la documentazione di riferimento dell'API C# di Pub/Sub.
Per eseguire l'autenticazione in Pub/Sub, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Go
Prima di provare questo esempio, segui le istruzioni di configurazione di Go nella guida rapida di Pub/Sub sull'utilizzo delle librerie client. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Go di Pub/Sub.
Per eseguire l'autenticazione in Pub/Sub, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java nella guida rapida di Pub/Sub sull'utilizzo delle librerie client. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Java di Pub/Sub.
Per eseguire l'autenticazione in Pub/Sub, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, 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 nella guida rapida di Pub/Sub sull'utilizzo delle librerie client. Per maggiori informazioni, consulta la documentazione di riferimento dell'API PHP di Pub/Sub.
Per eseguire l'autenticazione in Pub/Sub, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python nella guida rapida di Pub/Sub sull'utilizzo delle librerie client. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Python di Pub/Sub.
Per eseguire l'autenticazione in Pub/Sub, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Ruby
Prima di provare questo esempio, segui le istruzioni di configurazione di Ruby nella guida rapida di Pub/Sub sull'utilizzo delle librerie client. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Ruby di Pub/Sub.
Per eseguire l'autenticazione in Pub/Sub, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Passaggi successivi
- Crea o modifica una sottoscrizione con i comandi
gcloud
. - Creare o modificare una sottoscrizione con le API REST.
- Risolvere i problemi relativi a una abbonamento a BigQuery.