Transferts de stockage de blobs
Le service de transfert de données BigQuery pour le connecteur Azure Blob Storage vous permet de planifier et de gérer automatiquement les tâches de chargement récurrentes de Blob Storage dans BigQuery.
Avant de commencer
Avant de créer un transfert de données de stockage de blobs, procédez comme suit :
- Vérifiez que vous avez effectué toutes les actions requises pour activer le service de transfert de données BigQuery.
- Choisissez un ensemble de données BigQuery existant ou créez-en un pour stocker vos données.
- Choisissez une table BigQuery existante ou créez une table de destination pour votre transfert de données, puis spécifiez la définition du schéma. Le nom de la table de destination doit respecter les règles de dénomination des tables. Les noms de table de destination acceptent également les paramètres.
- Récupérez le nom de votre compte de stockage Blob Storage, le nom du conteneur, le chemin d'accès aux données (facultatif) et le jeton SAP. Pour en savoir plus sur l'attribution d'un accès à Blob Storage à l'aide d'une signature d'accès partagé (SAP), consultez la section Signature d'accès partagé (SAP).
- Si vous limitez l'accès à vos ressources Azure à l'aide d'un pare-feu Azure Storage, ajoutez des nœuds de calcul du service de transfert de données BigQuery à votre liste d'adresses IP autorisées.
- Si vous envisagez de spécifier une clé de chiffrement gérée par le client (CMEK), assurez-vous que votre compte de service est autorisé à procéder au chiffrement et au déchiffrement, et que vous disposez de l'ID de ressource de la clé Cloud KMS requis pour utiliser des clés CMEK. Pour en savoir plus sur le fonctionnement des clés CMEK avec le service de transfert de données BigQuery, consultez la page Spécifier une clé de chiffrement avec des transferts.
Autorisations requises
Pour créer un transfert de données de stockage de blobs, vous devez disposer de l'autorisation IAM (Identity and Access Management) bigquery.transfers.update
. Vous devez également disposer des autorisations bigquery.datasets.get
et bigquery.datasets.update
sur l'ensemble de données cible.
Le rôle IAM prédéfini bigquery.admin
inclut les autorisations dont vous avez besoin pour créer un transfert de données de stockage de blobs.
Pour plus d'informations sur BigQuery IAM, consultez la page Contrôle des accès avec IAM.
Pour vérifier que vous disposez des autorisations nécessaires dans Blob Storage pour activer le transfert de données, consultez la section Signature d'accès partagé (SAP).
Si vous avez l'intention de configurer des notifications d'exécution de transfert pour Pub/Sub, vous devez disposer de l'autorisation pubsub.topics.setIamPolicy
.
Les autorisations Pub/Sub ne sont pas nécessaires pour les notifications par e-mail. Pour en savoir plus, consultez la page Notifications d'exécution du service de transfert de données BigQuery.
Limites
Les transferts de données du stockage de blobs sont soumis aux limitations suivantes :
- L'intervalle minimum entre deux transferts de données récurrents est de 1 heure. L'intervalle par défaut est de 24 heures.
- Selon le format de vos données sources Blob Storage, des limitations supplémentaires peuvent s'appliquer.
- Les transferts de données vers des emplacements BigQuery Omni ne sont pas compatibles.
Configurer un transfert de données de stockage de blobs
Sélectionnez l'une des options suivantes :
Console
Accédez à la page "Transferts de données" dans la console Google Cloud.
Cliquez sur
Créer un transfert.Sur la page Créer un transfert, procédez comme suit :
Dans la section Type de source, choisissez Azure Blob Storage pour Source.
Dans la section Nom de la configuration de transfert, sous Nom à afficher, saisissez le nom du transfert de données.
Dans la section Schedule options (Options de programmation) :
Sélectionnez une fréquence de répétition. Si vous sélectionnez Heures, Jours, Semaines ou Mois, vous devez également spécifier une fréquence. Vous pouvez également sélectionner Personnalisé pour spécifier une fréquence de répétition personnalisée. Si vous sélectionnez À la demande, ce transfert de données s'exécute lorsque vous déclenchez manuellement le transfert.
Le cas échéant, sélectionnez Commencer ou Commencer à l'heure définie, puis indiquez une date de début et une heure d'exécution.
Dans la section Paramètres de destination, pour le champ Ensemble de données de destination, choisissez l'ensemble de données que vous avez créé pour stocker vos données.
Dans la section Data source details (Détails de la source de données), procédez comme suit :
- Pour le champ Destination table (Table de destination), saisissez le nom de la table que vous avez créée pour stocker les données dans BigQuery. Les noms de table de destination sont compatibles avec les paramètres.
- Dans le champ Nom du compte de stockage Azure, saisissez le nom du compte Blob Storage.
- Dans le champ Nom du conteneur, saisissez le nom du conteneur Blob Storage.
- Pour Chemin d'accès aux données, saisissez le chemin d'accès permettant de filtrer les fichiers à transférer. Affichez des exemples.
- Dans le champ Jeton SAP, saisissez le jeton Azure SAP.
- Dans le champ Format de fichier, choisissez le format des données source.
- Pour Disposition d'écriture, sélectionnez
WRITE_APPEND
pour ajouter de nouvelles données de manière incrémentielle à la table de destination, ouWRITE_TRUNCATE
pour écraser les données dans la table de destination à chaque exécution de transfert.WRITE_APPEND
est la valeur par défaut pour la préférence d'écriture.
Pour en savoir plus sur la manière dont le service de transfert de données BigQuery ingère des données à l'aide de
WRITE_APPEND
ou deWRITE_TRUNCATE
, consultez la page Ingestion de données pour Azure Blob Transfers. Pour en savoir plus sur le champwriteDisposition
, consultez la sectionJobConfigurationLoad
.Dans la section Options de transfert, procédez comme suit :
- Dans le champ Number of errors allowed (Nombre d'erreurs autorisées), saisissez une valeur entière pour le nombre maximal d'enregistrements incorrects pouvant être ignorés. La valeur par défaut est 0.
- (Facultatif) Pour les types de cibles décimaux, saisissez une liste de types de données SQL possibles (séparés par des virgules) vers lesquels les valeurs décimales des données sources sont converties. Le type de données SQL sélectionné pour la conversion dépend des conditions suivantes :
- Dans l'ordre
NUMERIC
,BIGNUMERIC
etSTRING
, un type est choisi s'il figure dans votre liste spécifiée et s'il est compatible avec la précision et l'échelle. - Si aucun des types de données répertoriés n'accepte la précision et l'échelle, le type de données acceptant la plus large plage parmi la liste spécifiée est sélectionné. Si une valeur dépasse la plage acceptée lors de la lecture des données sources, une erreur est renvoyée.
- Le type de données
STRING
accepte toutes les valeurs de précision et d'échelle. - Si ce champ n'est pas renseigné, le type de données est défini par défaut sur
NUMERIC,STRING
pour ORC etNUMERIC
pour les autres formats de fichiers. - Ce champ ne peut pas contenir de types de données en double.
- L'ordre dans lequel vous répertoriez les types de données est ignoré.
- Dans l'ordre
Si vous avez choisi CSV ou JSON comme format de fichier, dans la section JSON, CSV, cochez Ignorer les valeurs inconnues pour accepter les lignes contenant des valeurs qui ne correspondent pas au schéma.
Si vous avez choisi CSV comme format de fichier, dans la section CSV, saisissez les options CSV supplémentaires pour le chargement des données.
Dans la section Options de notification, vous pouvez choisir d'activer les notifications par e-mail et les notifications Pub/Sub.
- Lorsque vous activez les notifications par e-mail, l'administrateur de transfert reçoit une notification par e-mail en cas d'échec de l'exécution du transfert.
- Lorsque vous activez les notifications Pub/Sub, choisissez un nom de sujet pour publier ou cliquez sur Créer un sujet pour en créer un.
Si vous utilisez des clés CMEK, dans la section Options avancées, sélectionnez Clé gérée par le client. La liste des clés CMEK disponibles s'affiche. Pour en savoir plus sur le fonctionnement des clés CMEK avec le service de transfert de données BigQuery, consultez la page Spécifier une clé de chiffrement avec des transferts.
Cliquez sur Enregistrer.
bq
Exécutez la commande bq mk --transfer_config
pour créer un transfert de stockage de blobs :
bq mk \ --transfer_config \ --project_id=PROJECT_ID \ --data_source=DATA_SOURCE \ --display_name=DISPLAY_NAME \ --target_dataset=DATASET \ --destination_kms_key=DESTINATION_KEY \ --params=PARAMETERS
Remplacez les éléments suivants :
PROJECT_ID
: (facultatif) ID du projet contenant votre ensemble de données cible. Si non spécifié, votre projet par défaut est utilisé.DATA_SOURCE
:azure_blob_storage
.DISPLAY_NAME
: nom à afficher de la configuration de transfert de données. Ce nom peut correspondre à toute valeur permettant d'identifier le transfert si vous devez le modifier ultérieurement.DATASET
: ensemble de données cible de la configuration de transfert de données.DESTINATION_KEY
: (facultatif) ID de ressource de la clé Cloud KMS (par exemple,projects/project_name/locations/us/keyRings/key_ring_name/cryptoKeys/key_name
).PARAMETERS
: paramètres de la configuration de transfert de données, répertoriés au format JSON. Exemple :--params={"param1":"value1", "param2":"value2"}
. Voici les paramètres d'un transfert de données de stockage de blobs :destination_table_name_template
: valeur obligatoire. Le nom de votre table de destination.storage_account
: valeur obligatoire. Nom du compte Blob Storage.container
: valeur obligatoire. Nom du conteneur Blob Storage.data_path
: facultatif. Chemin d'accès pour filtrer les fichiers à transférer. Affichez des exemples.sas_token
: valeur obligatoire. Le jeton Azure SAS.file_format
: facultatif. Le type de fichiers que vous souhaitez transférer :CSV
,JSON
,AVRO
,PARQUET
ouORC
. La valeur par défaut estCSV
.write_disposition
: facultatif. SélectionnezWRITE_APPEND
pour ajouter des données à la table de destination, ouWRITE_TRUNCATE
pour écraser les données de la table de destination. La valeur par défaut estWRITE_APPEND
.max_bad_records
: facultatif. Le nombre d'enregistrements incorrects autorisés. La valeur par défaut est 0.decimal_target_types
: facultatif. Liste de types de données SQL possibles, séparés par des virgules, vers lesquels les valeurs décimales des données sources sont converties. Si ce champ n'est pas renseigné, le type de données par défaut estNUMERIC,STRING
pour ORC etNUMERIC
pour les autres formats de fichiers.ignore_unknown_values
: facultatif. Cette valeur est ignorée sifile_format
n'est pas défini surJSON
ouCSV
. Définissez la valeur surtrue
pour accepter les lignes contenant des valeurs qui ne correspondent pas au schéma.field_delimiter
: facultatif. Cette valeur s'applique uniquement lorsquefile_format
est défini surCSV
. Le caractère de séparation des champs. La valeur par défaut est,
.skip_leading_rows
: facultatif. Cette valeur s'applique uniquement lorsquefile_format
est défini surCSV
. Indique le nombre de lignes d'en-tête que vous ne souhaitez pas importer. La valeur par défaut est 0.allow_quoted_newlines
: facultatif. Cette valeur s'applique uniquement lorsquefile_format
est défini surCSV
. Indique si les sauts de ligne doivent être autorisés dans les champs entre guillemets.allow_jagged_rows
: facultatif. Cette valeur s'applique uniquement lorsquefile_format
est défini surCSV
. Indique s'il faut accepter les lignes pour lesquelles il manque des colonnes facultatives finales. Les valeurs manquantes sont renseignées avecNULL
.
Par exemple, la commande suivante crée un transfert de données de stockage de blobs appelé mytransfer
:
bq mk \ --transfer_config \ --data_source=azure_blob_storage \ --display_name=mytransfer \ --target_dataset=mydataset \ --destination_kms_key=projects/myproject/locations/us/keyRings/mykeyring/cryptoKeys/key1 --params={"destination_table_name_template":"mytable", "storage_account":"myaccount", "container":"mycontainer", "data_path":"myfolder/*.csv", "sas_token":"my_sas_token_value", "file_format":"CSV", "max_bad_records":"1", "ignore_unknown_values":"true", "field_delimiter":"|", "skip_leading_rows":"1", "allow_quoted_newlines":"true", "allow_jagged_rows":"false"}
API
Utilisez la méthode projects.locations.transferConfigs.create
et fournissez une instance de la ressource TransferConfig
.
Java
Avant d'essayer cet exemple, suivez les instructions de configuration pour Java du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Java.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Spécifier une clé de chiffrement avec les transferts
Vous pouvez spécifier des clés de chiffrement gérées par le client (CMEK) pour chiffrer les données d'une exécution de transfert. Vous pouvez utiliser une clé CMEK pour assurer le transfert depuis Azure Blob Storage.Lorsque vous spécifiez une clé CMEK avec un transfert, le service de transfert de données BigQuery l'applique à tous les caches sur disque intermédiaires des données ingérées afin que l'intégralité du workflow de transfert de données soit compatible avec CMEK.
Vous ne pouvez pas mettre à jour un transfert existant pour ajouter une clé CMEK si le transfert n'a pas été initialement créé avec une clé CMEK. Par exemple, vous ne pouvez pas modifier une table de destination initialement chiffrée par défaut pour être chiffrée avec des clés CMEK. À l'inverse, vous ne pouvez pas modifier une table de destination chiffrée par CMEK pour obtenir un type de chiffrement différent.
Vous pouvez mettre à jour une clé CMEK pour un transfert si la configuration de celui-ci a été initialement créée avec un chiffrement CMEK. Lorsque vous mettez à jour une clé CMEK pour une configuration de transfert, le service de transfert de données BigQuery propage cette clé aux tables de destination à la prochaine exécution du transfert, où le service de transfert de données BigQuery remplace toutes les clés CMEK obsolètes par la nouvelle clé lors de l'exécution du transfert. Pour en savoir plus, consultez Mettre à jour un transfert.
Vous pouvez également utiliser les clés par défaut d'un projet. Lorsque vous spécifiez une clé de projet par défaut avec un transfert, le service de transfert de données BigQuery utilise cette clé pour toutes les nouvelles configurations de transfert.
Résoudre les problèmes liés à la configuration d'un transfert
Si vous rencontrez des problèmes lors de la configuration de votre transfert de données, consultez la section Problèmes de transfert de données avec stockage de blobs.
Étape suivante
- Obtenez plus d'informations sur les paramètres d'exécution dans les transferts.
- Obtenez plus d'informations sur le Service de transfert de données BigQuery.
- Découvrez comment charger des données avec des opérations multicloud.