Ce document explique comment créer un abonnement BigQuery. Vous pouvez créer un abonnement BigQuery à l'aide de la console Google Cloud, de la Google Cloud CLI, de la bibliothèque cliente ou de l'API Pub/Sub.
Avant de commencer
Avant de lire ce document, assurez-vous de connaître les éléments suivants:
Fonctionnement des abonnements
Workflow des abonnements BigQuery
Configurer un sujet de lettres mortes pour gérer les échecs de messages
En plus de connaître Pub/Sub et BigQuery, assurez-vous de remplir les conditions préalables suivantes avant de créer un abonnement BigQuery:
Une table BigQuery existe. Vous pouvez également en créer un lorsque vous créez l'abonnement BigQuery, comme décrit dans les sections suivantes de ce document.
Compatibilité entre le schéma du sujet Pub/Sub et la table BigQuery. Si vous ajoutez une table BigQuery non compatible, un message d'erreur lié à la compatibilité s'affiche. Pour en savoir plus, consultez la section Compatibilité des schémas.
Rôles et autorisations requis
Vous trouverez ci-dessous une liste de consignes concernant les rôles et les autorisations:
Pour créer un abonnement, vous devez configurer le contrôle des accès au niveau du projet.
Vous avez également besoin d'autorisations au niveau des ressources si vos abonnements et vos sujets se trouvent dans différents projets, comme indiqué plus loin dans cette section.
Pour créer un abonnement BigQuery, le compte de service Pub/Sub doit être autorisé à écrire dans la table BigQuery spécifique. Pour en savoir plus sur l'octroi de ces autorisations, consultez la section suivante de ce document.
Vous pouvez configurer un abonnement BigQuery dans un projet pour écrire dans une table BigQuery d'un autre projet.
Pour obtenir les autorisations nécessaires pour créer des abonnements BigQuery, demandez à votre administrateur de vous accorder le rôle IAM Éditeur Pub/Sub (roles/pubsub.editor
) sur le projet.
Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.
Ce rôle prédéfini contient les autorisations requises pour créer des abonnements BigQuery. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :
Autorisations requises
Les autorisations suivantes sont requises pour créer des abonnements BigQuery:
-
Extraire des données à partir d'un abonnement :
pubsub.subscriptions.consume
-
Créez un abonnement :
pubsub.subscriptions.create
-
Supprimer un abonnement :
pubsub.subscriptions.delete
-
Obtenir un abonnement :
pubsub.subscriptions.get
-
Lister un abonnement :
pubsub.subscriptions.list
-
Modifier un abonnement :
pubsub.subscriptions.update
-
Joindre un abonnement à un sujet :
pubsub.topics.attachSubscription
-
Obtenez la stratégie IAM d'un abonnement :
pubsub.subscriptions.getIamPolicy
-
Configurez la stratégie IAM pour un abonnement :
pubsub.subscriptions.setIamPolicy
Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.
Si vous devez créer des abonnements BigQuery dans un projet associés à un sujet dans un autre projet, demandez à l'administrateur du sujet de vous accorder également le rôle IAM (roles/pubsub.editor)
Éditeur Pub/Sub sur le sujet.
Attribuer des rôles BigQuery au compte de service Pub/Sub
Certains services Google Cloud disposent de comptes de service gérés par Google Cloud qui leur permettent d'accéder à vos ressources. Ces comptes de service sont appelés agents de service. Pub/Sub crée et gère un compte de service pour chaque projet au format service-project-number@gcp-sa-pubsub.iam.gserviceaccount.com
.
Pour créer un abonnement BigQuery, le compte de service Pub/Sub doit être autorisé à écrire dans la table BigQuery spécifique et à lire ses métadonnées.
Attribuez le rôle Éditeur de données BigQuery (roles/bigquery.dataEditor
) au compte de service Pub/Sub.
Dans la console Google Cloud, accédez à la page IAM.
Cliquez sur Accorder l'accès.
Dans la section Ajouter des comptes principaux, saisissez le nom de votre compte de service Pub/Sub. Le format du compte de service est
service-project-number@gcp-sa-pubsub.iam.gserviceaccount.com
. Par exemple, pour un projet avecproject-number=112233445566
, le compte de service est au formatservice-112233445566@gcp-sa-pubsub.iam.gserviceaccount.com
.Dans la section Attribuer des rôles, cliquez sur Ajouter un autre rôle.
Dans le menu déroulant Sélectionner un rôle, saisissez
BigQuery
, puis sélectionnez le rôle Éditeur de données BigQuery.Cliquez sur Enregistrer.
Pour en savoir plus sur IAM BigQuery, consultez la page Rôles et autorisations BigQuery.
Propriétés des abonnements BigQuery
Lorsque vous configurez un abonnement BigQuery, vous pouvez spécifier les propriétés suivantes.
Propriétés communes
Découvrez les propriétés d'abonnement courantes que vous pouvez définir pour tous les abonnements.
Utiliser un schéma avec sujet
Cette option permet à Pub/Sub d'utiliser le schéma du sujet Pub/Sub auquel l'abonnement est associé. De plus, Pub/Sub écrit les champs des messages dans les colonnes correspondantes de la table BigQuery.
Lorsque vous utilisez cette option, n'oubliez pas de vérifier les exigences supplémentaires suivantes:
Les champs du schéma du sujet et du schéma BigQuery doivent porter le même nom et leurs types doivent être compatibles.
Tout champ facultatif du schéma du sujet doit également être facultatif dans le schéma BigQuery.
Les champs obligatoires dans le schéma du sujet ne doivent pas nécessairement l'être dans le schéma BigQuery.
Si des champs BigQuery ne figurent pas dans le schéma du sujet, ils doivent être en mode
NULLABLE
.Si le schéma du sujet comporte des champs supplémentaires qui ne sont pas présents dans le schéma BigQuery et que ces champs peuvent être supprimés, sélectionnez l'option Supprimer les champs inconnus.
Vous ne pouvez sélectionner qu'une seule des propriétés d'abonnement, Utiliser le schéma de sujet ou Utiliser le schéma de table.
Si vous ne sélectionnez pas l'option Utiliser un schéma de sujet ou Utiliser un schéma de table, assurez-vous que la table BigQuery comporte une colonne appelée data
de type BYTES
, STRING
ou JSON
. Pub/Sub écrit le message dans cette colonne BigQuery.
Les modifications apportées au schéma des sujets Pub/Sub ou au schéma de la table BigQuery peuvent ne pas prendre effet immédiatement avec les messages écrits dans la table BigQuery. Par exemple, si l'option Supprimer les champs inconnus est activée et qu'un champ est présent dans le schéma Pub/Sub, mais pas dans le schéma BigQuery, les messages écrits dans la table BigQuery peuvent toujours ne pas contenir le champ après l'avoir ajouté au schéma BigQuery. À terme, les schémas se synchronisent et les messages suivants incluent le champ.
Lorsque vous utilisez l'option Utiliser un schéma de sujet pour votre abonnement BigQuery, vous pouvez également profiter de la capture des données modifiées (CDC, Change Data Capture) de BigQuery. La capture des données modifiées met à jour vos tables BigQuery en traitant et en appliquant les modifications aux lignes existantes.
Pour en savoir plus sur cette fonctionnalité, consultez Diffuser les mises à jour des tables avec la capture des données modifiées.
Pour savoir comment utiliser cette fonctionnalité avec des abonnements BigQuery, consultez la section Capture de données modifiées BigQuery.
Utiliser un schéma de table
Cette option permet à Pub/Sub d'utiliser le schéma de la table BigQuery pour écrire les champs d'un message JSON dans les colonnes correspondantes. Lorsque vous utilisez cette option, n'oubliez pas de vérifier les exigences supplémentaires suivantes:
Les messages publiés doivent être au format JSON.
Les conversions JSON suivantes sont acceptées:
Type JSON Type de données BigQuery string
NUMERIC
,BIGNUMERIC
,DATE
,TIME
,DATETIME
ouTIMESTAMP
number
NUMERIC
,BIGNUMERIC
,DATE
,TIME
,DATETIME
ouTIMESTAMP
- Lorsque vous utilisez des conversions
number
versDATE
,DATETIME
,TIME
ouTIMESTAMP
, le nombre doit respecter les représentations acceptées. - Lorsque vous effectuez une conversion
number
versNUMERIC
ouBIGNUMERIC
, la précision et la plage de valeurs sont limitées à celles acceptées par la norme IEEE 754 pour l'arithmétique à virgule flottante. Si vous avez besoin d'une précision élevée ou d'une plage de valeurs plus large, utilisez plutôt des conversionsstring
versNUMERIC
ouBIGNUMERIC
. - Lorsque vous effectuez des conversions
string
versNUMERIC
ouBIGNUMERIC
, Pub/Sub suppose que la chaîne est un nombre lisible par l'humain (par exemple,"123.124"
). Si le traitement de la chaîne en tant que nombre lisible par l'humain échoue, Pub/Sub traite la chaîne comme des octets encodés avec BigDecimalByteStringEncoder.
- Lorsque vous utilisez des conversions
Si le sujet de l'abonnement est associé à un schéma, la propriété d'encodage des messages doit être définie sur
JSON
.Si des champs BigQuery ne sont pas présents dans les messages, ils doivent être en mode
NULLABLE
.Si les messages comportent des champs supplémentaires qui ne figurent pas dans le schéma BigQuery et que ces champs peuvent être supprimés, sélectionnez l'option Supprimer les champs inconnus.
Vous ne pouvez sélectionner qu'une seule des propriétés d'abonnement, Utiliser le schéma de sujet ou Utiliser le schéma de table.
Si vous ne sélectionnez pas l'option Utiliser un schéma de sujet ou Utiliser un schéma de table, assurez-vous que la table BigQuery comporte une colonne appelée data
de type BYTES
, STRING
ou JSON
. Pub/Sub écrit le message dans cette colonne BigQuery.
Les modifications apportées au schéma de la table BigQuery ne sont pas toujours appliquées immédiatement avec les messages écrits dans la table BigQuery. Par exemple, si l'option Supprimer les champs inconnus est activée et qu'un champ est présent dans les messages, mais pas dans le schéma BigQuery, les messages écrits dans la table BigQuery peuvent toujours ne pas contenir le champ après l'avoir ajouté au schéma BigQuery. À terme, le schéma se synchronise et les messages suivants incluent le champ.
Lorsque vous utilisez l'option Utiliser le schéma de table pour votre abonnement BigQuery, vous pouvez également profiter de la capture des données modifiées (CDC, Change Data Capture) de BigQuery. La capture des données modifiées met à jour vos tables BigQuery en traitant et en appliquant les modifications aux lignes existantes.
Pour en savoir plus sur cette fonctionnalité, consultez Diffuser les mises à jour des tables avec la capture des données modifiées.
Pour savoir comment utiliser cette fonctionnalité avec des abonnements BigQuery, consultez Capture de données modifiées BigQuery.
Supprimer les champs inconnus
Cette option est utilisée avec l'option Utiliser un schéma avec sujet ou Utiliser un schéma de table. Cette option permet à Pub/Sub de supprimer tous les champs présents dans le schéma ou le message du sujet, mais pas dans le schéma BigQuery. Si l'option Supprimer les champs inconnus n'est pas définie, les messages contenant des champs supplémentaires ne sont pas écrits dans BigQuery et restent dans la file d'attente des abonnements. L'abonnement se retrouve dans un état d'erreur.
Écrire des métadonnées
Cette option permet à Pub/Sub d'écrire les métadonnées de chaque message dans des colonnes supplémentaires de la table BigQuery. Sinon, les métadonnées ne sont pas écrites dans la table BigQuery.
Si vous sélectionnez l'option Écrire les métadonnées, assurez-vous que la table BigQuery comporte les champs décrits dans le tableau suivant.
Si vous ne sélectionnez pas l'option Écrire les métadonnées, la table BigQuery de destination ne nécessite que le champ data
, sauf si use_topic_schema
est défini sur "true". Si vous sélectionnez les options Écrire les métadonnées et Utiliser le schéma du sujet, le schéma du sujet ne doit contenir aucun champ dont le nom correspond à celui des paramètres de métadonnées.
Cette limitation inclut les versions CamelCase de ces paramètres en casse snake.
Paramètres | |
---|---|
subscription_name |
STRING Nom d'un abonnement. |
message_id |
STRING ID d'un message |
publish_time |
TIMESTAMP Heure de publication d'un message. |
data |
BYTES, STRING ou JSON Corps du message. Le champ |
attributes |
STRING ou JSON Objet JSON contenant tous les attributs du message. Il contient également des champs supplémentaires qui font partie du message Pub/Sub, y compris la clé de tri, le cas échéant. |
Créer un abonnement BigQuery
Les exemples suivants montrent comment créer un abonnement avec une distribution BigQuery.
Console
- Dans la console Google Cloud, accédez à la page Abonnements.
- Cliquez sur Créer un abonnement.
- Dans le champ ID d'abonnement, saisissez un nom.
Pour savoir comment nommer un abonnement, consultez les consignes de dénomination d'un sujet ou d'un abonnement.
- Choisissez ou créez un sujet dans le menu déroulant. L'abonnement reçoit les messages du sujet.
- Sélectionnez Type de diffusion comme Écrire dans BigQuery.
- Sélectionnez le projet de la table BigQuery.
- Sélectionnez un ensemble de données existant ou créez-en un.
Pour savoir comment créer un ensemble de données, consultez la section Créer des ensembles de données.
- Sélectionnez un tableau existant ou créez-en un.
Pour en savoir plus sur la création d'une table, consultez la section Créer des tables.
- Nous vous recommandons vivement d'activer la file d'attente de lettres mortes pour gérer les échecs de message.
Pour en savoir plus, consultez la section Sujet de lettre morte.
- Cliquez sur Créer.
Vous pouvez également créer un abonnement à partir de la page Sujets. Ce raccourci est utile pour associer des sujets à des abonnements.
- Dans la console Google Cloud, accédez à la page Topics (Sujets).
- Cliquez sur more_vert à côté du sujet pour lequel vous souhaitez créer un abonnement.
- Dans le menu contextuel, sélectionnez Créer un abonnement.
- Sélectionnez Type de diffusion comme Écrire dans BigQuery.
- Sélectionnez le projet de la table BigQuery.
- Sélectionnez un ensemble de données existant ou créez-en un.
Pour savoir comment créer un ensemble de données, consultez la section Créer des ensembles de données.
- Sélectionnez un tableau existant ou créez-en un.
Pour en savoir plus sur la création d'un ensemble de données, consultez la section Créer des tables.
- Nous vous recommandons vivement d'activer la file d'attente de lettres mortes pour gérer les échecs de message.
Pour en savoir plus, consultez la section Sujet de lettre morte.
- Cliquez sur Créer.
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.
-
Pour créer un abonnement Pub/Sub, utilisez la commande
gcloud pubsub subscriptions create
:gcloud pubsub subscriptions create SUBSCRIPTION_ID \ --topic=TOPIC_ID \ --bigquery-table=PROJECT_ID:DATASET_ID.TABLE_ID
Remplacez les éléments suivants :
- SUBSCRIPTION_ID: spécifie l'ID de l'abonnement.
- TOPIC_ID: spécifie l'ID du sujet. Le sujet nécessite un schéma.
- PROJECT_ID: spécifie l'ID du projet.
- DATASET_ID: spécifie l'ID d'un ensemble de données existant. Pour créer un ensemble de données, consultez Créer des ensembles de données.
- TABLE_ID: spécifie l'ID d'une table existante. La table nécessite un champ data si votre sujet ne possède pas de schéma. Pour créer une table, consultez Créer une table vide avec une définition de schéma.
C++
Avant d'essayer cet exemple, suivez les instructions de configuration pour C++ du guide de démarrage rapide de Pub/Sub : utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub C++.
Pour vous authentifier auprès de Pub/Sub, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
C#
Avant d'essayer cet exemple, suivez les instructions de configuration pour C# du guide de démarrage rapide de Pub/Sub : utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub C#.
Pour vous authentifier auprès de Pub/Sub, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Go
Avant d'essayer cet exemple, suivez les instructions de configuration pour Go du guide de démarrage rapide de Pub/Sub : utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub Go.
Pour vous authentifier auprès de Pub/Sub, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Java
Avant d'essayer cet exemple, suivez les instructions de configuration pour Java du guide de démarrage rapide de Pub/Sub : utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub Java.
Pour vous authentifier auprès de Pub/Sub, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Node.js
Node.js
PHP
Avant d'essayer cet exemple, suivez les instructions de configuration pour PHP du guide de démarrage rapide de Pub/Sub : utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub PHP.
Pour vous authentifier auprès de Pub/Sub, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Python
Avant d'essayer cet exemple, suivez les instructions de configuration pour Python du guide de démarrage rapide de Pub/Sub : utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub Python.
Pour vous authentifier auprès de Pub/Sub, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Ruby
Avant d'essayer cet exemple, suivez les instructions de configuration pour Ruby du guide de démarrage rapide de Pub/Sub : utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub Ruby.
Pour vous authentifier auprès de Pub/Sub, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Surveiller un abonnement BigQuery
Cloud Monitoring fournit un certain nombre de métriques pour surveiller les abonnements.
Pour obtenir la liste de toutes les métriques disponibles liées à Pub/Sub et leurs descriptions, consultez la documentation de surveillance de Pub/Sub.
Vous pouvez également surveiller les abonnements à partir de Pub/Sub.
Étape suivante
- Créez ou modifiez un abonnement à l'aide des commandes
gcloud
. - Créez ou modifiez un abonnement à l'aide des API REST.
- Résolvez les problèmes liés à un abonnement BigQuery.