Exporter des résultats de requête vers un fichier
Vous pouvez enregistrer les résultats d'une requête BigQuery dans un fichier local, Google Drive, Google Sheets ou Cloud Storage afin de les partager ou de les analyser dans d'autres outils. Pour les fichiers locaux, vous pouvez choisir des formats tels que CSV et JSON délimité par un retour à la ligne.
Limites
BigQuery ne permet pas d'exporter des données imbriquées ou répétées (types de données RECORD / STRUCT ou ARRAY) au format CSV. Même si les champs RECORD ou STRUCT ne semblent pas profondément imbriqués, BigQuery les traite comme des champs de schéma imbriqués et renvoie une erreur indiquant que le schéma ne peut pas être imbriqué.
Pour exporter les résultats d'une requête vers un fichier CSV structuré, votre requête doit être normalisée dans une structure plate avec un champ par colonne de requête. Vous pouvez normaliser les structures imbriquées en sélectionnant des champs individuels à l'aide de la notation par points, ou normaliser les tableaux répétés à l'aide de l'opérateur UNNEST.
Par exemple, si votre table contient une structure customer et un tableau items, normalisez la requête avant de l'exécuter et d'enregistrer les résultats au format CSV :
SELECT
customer.id AS customer_id,
customer.name AS customer_name,
item
FROM
`my_project.my_dataset.my_table`,
UNNEST(items) AS item;
Télécharger des résultats de requête dans un fichier local
Il n'est pas possible de télécharger des résultats de requête dans un fichier local avec l'outil de ligne de commande bq ou avec l'API.
Pour télécharger des résultats de requête dans un fichier CSV ou JSON délimité par un retour à la ligne, utilisez la consoleGoogle Cloud :
Dans la console Google Cloud , ouvrez la page "BigQuery".
Cliquez sur Requête SQL.
Saisissez une requête GoogleSQL valide dans la zone de texte de l'éditeur de requête.
Facultatif : Pour modifier la zone de traitement, cliquez sur Modifier > Paramètres de requête. Pour Emplacement des données, choisissez l'emplacement de vos données.
Cliquez sur Exécuter.
Lorsque les résultats sont renvoyés, cliquez sur Enregistrer les résultats et sélectionnez le format ou l'emplacement d'enregistrement des résultats.
Le fichier est téléchargé à l'emplacement de téléchargement par défaut de votre navigateur.
Enregistrer des résultats de requête dans Google Drive
L'outil de ligne de commande bq et l'API ne permettent pas d'enregistrer des résultats de requête dans Google Drive.
Une erreur peut se produire lorsque vous tentez d'enregistrer les résultats BigQuery dans Google Drive. Cette erreur est due au fait que l'API Drive SDK ne peut pas accéder à Google Workspace. Pour résoudre le problème, vous devez autoriser votre compte utilisateur à accéder à Google Drive à l'aide de l'API Drive SDK.
Pour enregistrer des résultats de recherche dans Google Drive, utilisez la console Google Cloud :
Dans la console Google Cloud , ouvrez la page "BigQuery".
Cliquez sur Requête SQL.
Saisissez une requête GoogleSQL valide dans la zone de texte de l'éditeur de requête.
Cliquez sur Exécuter.
Lorsque les résultats sont renvoyés, cliquez sur Enregistrer les résultats.
Sous Google Drive, sélectionnez CSV ou JSON. Lorsque vous enregistrez des résultats dans Google Drive, vous ne pouvez pas choisir l'emplacement. Les résultats sont toujours enregistrés à la racine de "Mon Drive".
L'enregistrement des résultats sur Google Drive peut prendre quelques minutes. Une fois les résultats enregistrés, vous recevez un message de la boîte de dialogue incluant le nom de fichier
bq-results-[TIMESTAMP]-[RANDOM_CHARACTERS].[CSV or JSON].
Dans le message de la boîte de dialogue, cliquez sur Ouvrir pour ouvrir le fichier ou accédez à Google Drive, puis cliquez sur Mon Drive.
Enregistrer des résultats de requête dans Google Sheets
Il n'est pas possible d'enregistrer des résultats de requête dans Google Sheets avec l'outil de ligne de commande bq ni avec l'API.
Une erreur peut se produire lorsque vous tentez d'ouvrir les résultats BigQuery depuis Google Sheets. Cette erreur est due au fait que l'API Drive SDK ne peut pas accéder à Google Workspace. Pour résoudre le problème, vous devez autoriser votre compte utilisateur à accéder à Google Sheets à l'aide de l'API Drive SDK.
Pour enregistrer des résultats de requête dans Google Sheets, utilisez la console Google Cloud :
Dans la console Google Cloud , ouvrez la page "BigQuery".
Cliquez sur Requête SQL.
Saisissez une requête GoogleSQL valide dans la zone de texte de l'éditeur de requête.
Facultatif : Pour modifier la zone de traitement, cliquez sur Modifier > Paramètres de requête. Pour Emplacement des données, choisissez l'emplacement de vos données.
Cliquez sur Exécuter.
Lorsque les résultats sont renvoyés, cliquez sur Enregistrer les résultats et sélectionnez Google Sheets.
Si nécessaire, suivez les instructions vous invitant à vous connecter à votre compte utilisateur et cliquez sur Autoriser afin que BigQuery puisse écrire les données dans votre dossier Google Drive
My Drive.Une fois que vous avez suivi les messages d'invite, vous devez recevoir un e-mail confirmant que les outils clients BigQuery ont été connectés à votre compte utilisateur. Il contient des informations sur les autorisations que vous avez accordées ainsi que les étapes à suivre pour les révoquer.
Lorsque les résultats sont enregistrés, un message semblable au suivant apparaît sous les résultats de la requête dans la console Google Cloud :
Saved to Sheets as "results-20190225-103531". Cliquez sur le lien dans le message pour afficher vos résultats dans Google Sheets, ou accédez à votre dossierMy Driveet ouvrez le fichier manuellement.Lorsque vous enregistrez les résultats de requête dans Google Sheets, le nom du fichier commence par
results-[DATE], où[DATE]correspond à la date du jour au formatYYYYMMDD.
Résoudre les problèmes d'enregistrement des résultats dans Google Sheets
Lorsque vous enregistrez des données depuis BigQuery vers Google Sheets, vous pouvez constater que certaines cellules des feuilles sont vides. Cela se produit lorsque les données que vous écrivez dans la cellule dépassent la limite de Google Sheets de 50 000 caractères. Pour résoudre ce problème, utilisez une fonction de chaîne dans la requête SQL pour fractionner la colonne contenant les données longues en deux colonnes ou plus, puis enregistrez le résultat dans Sheets.
Enregistrer des résultats de requête dans Cloud Storage
Vous pouvez exporter les résultats de votre requête vers Cloud Storage dans la console Google Cloud en procédant comme suit :
Ouvrez la page BigQuery dans la console Google Cloud .
Cliquez sur Requête SQL.
Saisissez une requête GoogleSQL valide dans la zone de texte de l'éditeur de requête.
Cliquez sur Exécuter.
Lorsque les résultats sont renvoyés, cliquez sur Enregistrer les résultats > Cloud Storage.
Dans la boîte de dialogue Exporter vers Google Cloud Storage :
- Dans le champ Emplacement GCS, recherchez le bucket, le dossier ou le fichier vers lequel vous souhaitez exporter les données.
- Pour le champ Format d'exportation, choisissez le format des données exportées : CSV, JSON (délimité par un retour à la ligne), Avro ou Parquet.
- Pour le champ Compression, sélectionnez un format de compression ou
Nonepour n'appliquer aucune compression.
Cliquez sur Enregistrer pour exporter les résultats de la requête.
Pour vérifier la progression du job, développez le volet Historique des jobs et recherchez le job de type EXTRACT.
Limiter le téléchargement des résultats de requête
Pour empêcher les utilisateurs de télécharger les résultats de requêtes depuis la console Google Cloud , utilisez l'une des méthodes suivantes :
Configurez un périmètre VPC Service Controls pour empêcher l'exfiltration de données. Cela empêche les utilisateurs de télécharger et d'exporter des données en dehors des limites du périmètre établi.
Contactez Cloud Customer Care pour demander l'ajout de votre projet ou organisation Google Cloud à une liste d'autorisation. Cela désactive les options de téléchargement et d'exportation des données directement dans la console Google Cloud .
Étapes suivantes
- Apprenez à exporter une table vers un fichier JSON de manière automatisée.
- Apprenez-en plus sur les quotas des jobs d'extraction.
- Découvrez les tarifs de stockage de BigQuery.