Écrire des résultats de requête

Ce document explique comment écrire des résultats de requête.

Tables temporaires et permanentes

BigQuery enregistre tous les résultats de requête dans une table, qui peut être permanente ou temporaire :

  • Une table temporaire est une table nommée de manière aléatoire et enregistrée dans un ensemble de données spécial. Les tables temporaires sont utilisées pour mettre en cache des résultats de requête. Elles ont une durée de vie d'environ 24 heures. Les tables temporaires ne sont pas disponibles pour le partage et ne sont pas consultables à l'aide des méthodes "list" standards ni des autres méthodes de manipulation des tables. Le stockage de tables temporaires n'est pas facturé.

  • Une table permanente peut être une table nouvelle ou existante dans un ensemble de données auquel vous avez accès. Si vous écrivez des résultats de requête dans une nouvelle table, le stockage des données vous est facturé. Lorsque vous écrivez des résultats de requête dans une table permanente, les tables que vous interrogez doivent se trouver dans le même emplacement que l'ensemble de données qui contient la table de destination.

Écrire des résultats de requête dans une table permanente

Lorsque vous écrivez des résultats de requête dans une table permanente, vous pouvez créer une table, ajouter les résultats à une table existante ou remplacer une table existante. Vous pouvez écrire des résultats de requête dans une table permanente à l'aide de l'UI Web de BigQuery ou de la commande bq query de l'outil de ligne de commande, ou bien en appelant la méthode jobs.insert, et en configurant une tâche de type query.

Autorisations requises

Les autorisations requises pour écrire des résultats de requête dans une table permanente dépendent de la disposition en écriture des données.

Autorisations d'écriture de résultats de requête dans une nouvelle table

Si vous écrivez des résultats de requête dans une nouvelle table, vous devez disposer d'un accès WRITER au niveau de l'ensemble de données ou d'un rôle IAM au niveau du projet qui inclut les autorisations bigquery.tables.create. Les rôles IAM prédéfinis au niveau du projet ci-dessous incluent les autorisations bigquery.tables.create :

En outre, comme le rôle bigquery.user dispose d'autorisations bigquery.datasets.create, un utilisateur ayant le rôle bigquery.user peut créer des tables dans tous les ensembles de données qu'il crée. Lorsqu'un utilisateur détenant le rôle bigquery.user crée un ensemble de données, il bénéficie d'un accès OWNER à celui-ci. L'accès OWNER à un ensemble de données donne à l'utilisateur un contrôle total sur celui-ci et sur toutes les tables qu'il contient.

Pour en savoir plus sur les rôles et les autorisations IAM dans BigQuery, consultez la page Contrôle des accès. Pour en savoir plus sur les rôles au niveau de l'ensemble de données, consultez la section Rôles primitifs pour les ensembles de données.

Autorisations d'écraser ou d'ajouter des données

Si vous utilisez des résultats de requête pour écraser une table existante ou ajouter des données à cette dernière, vous devez disposer d'un accès WRITER au niveau de l'ensemble de données ou d'un rôle IAM au niveau du projet qui inclut les autorisations bigquery.tables.updateData. Les rôles IAM prédéfinis au niveau du projet ci-dessous incluent les autorisations bigquery.tables.updateData :

En outre, comme le rôle bigquery.user dispose d'autorisations bigquery.datasets.create, un utilisateur ayant le rôle bigquery.user peut écraser ou ajouter toutes les tables qu'il crée dans l'ensemble de données. Lorsqu'un utilisateur détenant le rôle bigquery.user crée un ensemble de données, il bénéficie d'un accès OWNER à celui-ci. L'accès OWNER à un ensemble de données donne à l'utilisateur un contrôle total sur celui-ci et sur toutes les tables qu'il contient.

Pour en savoir plus sur les rôles et les autorisations IAM dans BigQuery, consultez la page Contrôle des accès. Pour en savoir plus sur les rôles au niveau de l'ensemble de données, consultez la section Rôles primitifs pour les ensembles de données.

Écrire des résultats de requête

Pour écrire des résultats de requête dans une table permanente :

Interface utilisateur Web

  1. Accédez à l'interface utilisateur Web de BigQuery.
    Accéder à l'interface utilisateur Web de BigQuery

  2. Cliquez sur le bouton Saisir une requête.

  3. Saisissez une requête SQL BigQuery valide dans la zone de texte Nouvelle requête.

  4. Cliquez sur Afficher les options.

  5. Dans la section Table de destination, cliquez sur Sélectionner une table.

  6. Dans la boîte de dialogue Sélectionner une table de destination :

    1. Pour Projet, choisissez le projet où la table de destination sera créée.

    2. Pour Ensemble de données, choisissez l'ensemble de données où sera stockée la table.

    3. Dans le champ ID de la table, saisissez un nom de table. Le nom doit être unique dans l'ensemble de données de destination. Il doit comporter 1 024 caractères maximum et peut contenir uniquement des lettres (A-Z, a-z), des chiffres (0-9) et des traits de soulignement (_).

    4. Cliquez sur OK.

  7. Dans la section Table de destination, pour Préférence d'écriture, sélectionnez l'une des options suivantes :

    • Écrire si la table est vide : n'écrit les résultats de requête dans la table que si celle-ci est vide.
    • Ajouter à la table : ajoute les résultats de requête à une table existante.
    • Écraser la table : écrase une table existante portant le même nom à l'aide des résultats de requête.
  8. (Facultatif) Dans le champ Zone de traitement, cliquez sur Non spécifiée et sélectionnez l'emplacement de vos données.

  9. Cliquez sur Exécuter la requête. Cette action crée une tâche de requête qui écrit les résultats dans la table spécifiée.

Si vous oubliez de spécifier une table de destination avant d'exécuter la requête, vous pouvez également copier la table temporaire dans une table permanente. Pour ce faire, cliquez sur le bouton Enregistrer en tant que table dans la fenêtre des résultats.

CLI

Saisissez la commande bq query et spécifiez l'indicateur --destination_table pour créer une table permanente en fonction des résultats de requête. Spécifiez l'indicateur use_legacy_sql=false pour utiliser la syntaxe SQL standard. Pour écrire les résultats de requête dans une table qui ne se trouve pas dans votre projet par défaut, ajoutez l'ID du projet au nom de l'ensemble de données en respectant le format suivant : [PROJECT_ID]:[DATASET].

Définissez l'indicateur --location sur la valeur correspondant à votre emplacement.

Pour contrôler la disposition en écriture d'une table de destination existante, spécifiez l'un des indicateurs facultatifs suivants :

  • --append_table : si la table de destination existe, les résultats de requête y sont ajoutés.
  • --replace : si la table de destination existe, elle est remplacée par les résultats de requête.

    bq --location=[LOCATION] query --destination_table [PROJECT_ID]:[DATASET].[TABLE] --use_legacy_sql=false '[QUERY]'
    

Où :

  • [LOCATION] est le nom de l'emplacement utilisé pour traiter la requête. L'indicateur --location est facultatif. Par exemple, si vous utilisez BigQuery dans la région de Tokyo, définissez la valeur de l'indicateur sur asia-northeast1. Vous pouvez spécifier une valeur par défaut pour l'emplacement à l'aide du fichier .bigqueryrc.
  • [PROJECT_ID] est l'ID de votre projet.
  • [DATASET] est le nom de l'ensemble de données contenant la table dans laquelle vous écrivez les résultats de requête.
  • [TABLE] est le nom de la table dans laquelle vous écrivez les résultats de requête.
  • [QUERY] est une requête en syntaxe SQL standard.

Si aucun indicateur de disposition en écriture n'est spécifié, le comportement par défaut consiste à écrire les résultats dans la table uniquement si celle-ci est vide. Si la table existe et qu'elle n'est pas vide, l'erreur suivante est renvoyée : BigQuery error in query operation: Error processing job '[PROJECT_ID]:bqjob_123abc456789_00000e1234f_1': Already Exists: Table [PROJECT_ID]:[DATASET].[TABLE].

Exemples :

Saisissez la commande suivante pour écrire les résultats de requête dans une table de destination nommée mytable dans mydataset. L'ensemble de données se trouve dans votre projet par défaut. Aucun indicateur de disposition en écriture n'étant spécifié dans la commande, la table doit être nouvelle ou vide. Sinon, une erreur Already exists est renvoyée. La requête extrait les données de l'ensemble de données public USA Name Data.

bq --location=US query --destination_table mydataset.mytable --use_legacy_sql=false 'SELECT name,number FROM `bigquery-public-data.usa_names.usa_1910_current` WHERE gender = "M" ORDER BY number DESC'

Saisissez la commande suivante pour utiliser les résultats de requête afin d'écraser une table de destination nommée mytable dans mydataset. L'ensemble de données se trouve dans votre projet par défaut. La commande utilise l'indicateur --replace pour écraser la table de destination.

bq --location=US query --destination_table mydataset.mytable --replace --use_legacy_sql=false 'SELECT name,number FROM `bigquery-public-data.usa_names.usa_1910_current` WHERE gender = "M" ORDER BY number DESC'

Saisissez la commande suivante pour ajouter des résultats de requête à une table de destination nommée mytable dans mydataset. L'ensemble de données se trouve dans myotherproject, et non dans votre projet par défaut. La commande utilise l'indicateur --append pour ajouter les résultats de requête à la table de destination.

bq --location=US query --destination_table myotherproject:mydataset.mytable --append --use_legacy_sql=false 'SELECT name,number FROM `bigquery-public-data.usa_names.usa_1910_current` WHERE gender = "M" ORDER BY number DESC'

API

Pour enregistrer des résultats de requête dans une table permanente, appelez la méthode jobs.insert, configurez une tâche de type query et incluez une valeur pour la propriété configuration.query.destinationTable. Pour contrôler la disposition d'écriture d'une table de destination existante, configurez la propriété configuration.query.writeDisposition.

Spécifiez votre emplacement dans la propriété location de la section jobReference de la ressource de tâche.

Go

Avant d'essayer cet exemple, suivez les instructions de configuration de Go décrites dans le 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 Go.

// To run this sample, you will need to create (or reuse) a context and
// an instance of the bigquery client.  For example:
// import "cloud.google.com/go/bigquery"
// ctx := context.Background()
// client, err := bigquery.NewClient(ctx, "your-project-id")

q := client.Query("SELECT 17 as my_col")
q.Location = "US" // Location must match the dataset(s) referenced in query.
q.QueryConfig.Dst = client.Dataset(destDatasetID).Table(destTableID)
job, err := q.Run(ctx)
if err != nil {
	return err
}
status, err := job.Wait(ctx)
if err != nil {
	return err
}
if err := status.Err(); err != nil {
	return err
}
it, err := job.Read(ctx)
for {
	var row []bigquery.Value
	err := it.Next(&row)
	if err == iterator.Done {
		break
	}
	if err != nil {
		return err
	}
	fmt.Println(row)
}

Java

Avant d'essayer cet exemple, suivez les instructions de configuration de Java décrites dans le 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 Java.

Pour enregistrer les résultats de requête dans une table permanente, définissez la table de destination sur l'identifiant TableId souhaité dans une classe QueryJobConfiguration.

// BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();
// String destinationDataset = 'my_destination_dataset';
// String destinationTable = 'my_destination_table';
String query = "SELECT corpus FROM `bigquery-public-data.samples.shakespeare` GROUP BY corpus;";
QueryJobConfiguration queryConfig =
    // Note that setUseLegacySql is set to false by default
    QueryJobConfiguration.newBuilder(query)
        // Save the results of the query to a permanent table.
        .setDestinationTable(TableId.of(destinationDataset, destinationTable))
        .build();

// Print the results.
for (FieldValueList row : bigquery.query(queryConfig).iterateAll()) {
  for (FieldValue val : row) {
    System.out.printf("%s,", val.toString());
  }
  System.out.printf("\n");
}

Python

Avant d'essayer cet exemple, suivez les instructions de configuration de Python décrites dans le 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 Python.

Pour enregistrer les résultats de requête dans une table permanente, créez une classe QueryJobConfig et définissez la destination sur la valeur TableReference souhaitée. Transmettez la configuration de la tâche à la méthode de requête.

# from google.cloud import bigquery
# client = bigquery.Client()
# dataset_id = 'your_dataset_id'

job_config = bigquery.QueryJobConfig()
# Set the destination table
table_ref = client.dataset(dataset_id).table('your_table_id')
job_config.destination = table_ref
sql = """
    SELECT corpus
    FROM `bigquery-public-data.samples.shakespeare`
    GROUP BY corpus;
"""

# Start the query, passing in the extra configuration.
query_job = client.query(
    sql,
    # Location must match that of the dataset(s) referenced in the query
    # and of the destination table.
    location='US',
    job_config=job_config)  # API request - starts the query

query_job.result()  # Waits for the query to finish
print('Query results loaded to table {}'.format(table_ref.path))

Écrire des résultats de requête volumineux

Normalement, les requêtes ont une taille de réponse maximale. Si vous prévoyez d'exécuter une requête pouvant renvoyer des résultats plus importants, vous pouvez :

  • en SQL standard, spécifier une table de destination pour les résultats de requête ;
  • en ancien SQL, spécifier une table de destination et définir l'option allowLargeResults.

Lorsque vous spécifiez une table de destination pour des résultats de requête volumineux, le stockage des données vous est facturé.

Limites

En ancien SQL, l'écriture de résultats volumineux est soumise aux limites suivantes :

  • Vous devez spécifier une table de destination.
  • Vous ne pouvez pas spécifier de clause ORDER BY, TOP ni LIMIT de niveau supérieur. Cela annule l'avantage d'utiliser allowLargeResults, car le résultat de la requête ne peut plus être calculé en parallèle.
  • Les fonctions de fenêtrage ne renvoient des résultats de requête volumineux que si elles sont utilisées avec une clause PARTITION BY.

Écrire des résultats volumineux en ancien SQL

Pour écrire des ensembles de résultats volumineux en ancien SQL :

Interface utilisateur Web

  1. Accédez à l'interface utilisateur Web de BigQuery.
    Accéder à l'interface utilisateur Web de BigQuery

  2. Cliquez sur le bouton Saisir une requête.

  3. Saisissez une requête SQL BigQuery valide dans la zone de texte New Query (Nouvelle requête). Utilisez le préfixe #legacySQL ou veillez à cocher l'option de requête Utiliser l'ancien SQL.

  4. Cliquez sur Afficher les options.

  5. Pour Destination Table (Table de destination), cliquez sur Select Table (Sélectionner une table).

  6. Dans la boîte de dialogue Select Destination Table (Sélectionner une table de destination) :

    1. Pour Projet, choisissez le projet où la table de destination sera créée.

    2. Pour Ensemble de données, choisissez l'ensemble de données où sera stockée la table.

    3. Dans le champ Table ID (ID de la table), saisissez un nom de table.

    4. Cliquez sur OK.

  7. Si vous écrivez un ensemble de résultats volumineux dans une table existante, vous pouvez utiliser l'option Write Preference (Préférence d'écriture) pour contrôler la disposition en écriture de la table de destination :

    • Write if empty (Écrire si la table est vide) : n'écrit les résultats de requête dans la table que si celle-ci est vide.
    • Ajouter à la table : ajoute les résultats de requête à une table existante.
    • Écraser la table : écrase une table existante portant le même nom à l'aide des résultats de requête.
  8. Pour Results Size (Taille des résultats), cochez la case Allow Large Results (Autoriser un nombre élevé de résultats).

    Option "Autoriser un nombre élevé de résultats"

  9. (Facultatif) Dans le champ Zone de traitement, cliquez sur Non spécifiée et sélectionnez l'emplacement de vos données.

  10. Cliquez sur Exécuter la requête. Cette action crée une tâche de requête qui écrit les résultats de requête volumineux dans la table spécifiée.

Ligne de commande

Utilisez conjointement les indicateurs --allow_large_results et --destination_table pour créer la table de destination qui doit contenir l'ensemble de résultats volumineux. Comme l'option --allow_large_results ne s'applique qu'à l'ancien SQL, vous devez également spécifier l'indicateur --use_legacy_sql=true. Pour écrire les résultats de requête dans une table qui ne se trouve pas dans votre projet par défaut, ajoutez l'ID du projet au nom de l'ensemble de données en respectant le format suivant : [PROJECT_ID]:[DATASET]. Définissez l'indicateur --location sur la valeur correspondant à votre emplacement.

Pour contrôler la disposition en écriture d'une table de destination existante, spécifiez l'un des indicateurs facultatifs suivants :

  • --append_table : si la table de destination existe, les résultats de requête y sont ajoutés.
  • --replace : si la table de destination existe, elle est remplacée par les résultats de requête.

    bq --location=[LOCATION] query --destination_table [PROJECT_ID]:[DATASET].[TABLE_NAME] --use_legacy_sql=true --allow_large_results "[QUERY]"
    

Où :

  • [LOCATION] est le nom de l'emplacement utilisé pour traiter la requête. L'indicateur --location est facultatif. Par exemple, si vous utilisez BigQuery dans la région de Tokyo, définissez la valeur de l'indicateur sur asia-northeast1. Vous pouvez spécifier une valeur par défaut pour l'emplacement à l'aide du fichier .bigqueryrc.
  • [PROJECT_ID] est l'ID de votre projet.
  • [DATASET] est le nom de l'ensemble de données contenant la table dans laquelle vous écrivez les résultats de requête.
  • [TABLE] est le nom de la table dans laquelle vous écrivez les résultats de requête.
  • [QUERY] est une requête dans une syntaxe en ancien SQL.

Exemples :

Saisissez la commande suivante pour écrire les résultats de requête volumineux dans une table de destination nommée mytable dans mydataset. L'ensemble de données se trouve dans votre projet par défaut. Aucun indicateur de disposition en écriture n'étant spécifié dans la commande, la table doit être nouvelle ou vide. Sinon, une erreur Already exists est renvoyée. La requête extrait les données de l'ensemble de données public USA Name Data. Cette requête est utilisée à titre d'exemple uniquement. L'ensemble de résultats renvoyé ne dépasse pas la taille de réponse maximale.

bq --location=US query --destination_table mydataset.mytable --use_legacy_sql=true --allow_large_results "SELECT name,number FROM [bigquery-public-data:usa_names.usa_1910_current] WHERE gender = 'M' ORDER BY number DESC"

Saisissez la commande suivante pour utiliser les résultats de requête volumineux afin d'écraser une table de destination nommée mytable dans mydataset. L'ensemble de données se trouve dans myotherproject, et non dans votre projet par défaut. La commande utilise l'indicateur --replace pour écraser la table de destination.

bq --location=US query --destination_table mydataset.mytable --replace --use_legacy_sql=true --allow_large_results "SELECT name,number FROM [bigquery-public-data:usa_names.usa_1910_current] WHERE gender = 'M' ORDER BY number DESC"

Saisissez la commande suivante pour ajouter des résultats de requête volumineux à une table de destination nommée mytable dans mydataset. L'ensemble de données se trouve dans myotherproject, et non dans votre projet par défaut. La commande utilise l'indicateur --append pour ajouter les résultats de requête à la table de destination.

bq --location=US query --destination_table myotherproject:mydataset.mytable --append --use_legacy_sql=true --allow_large_results "SELECT name,number FROM [bigquery-public-data:usa_names.usa_1910_current] WHERE gender = 'M' ORDER BY number DESC"

API

Pour écrire des résultats volumineux dans une table de destination, appelez la méthode jobs.insert, configurez une tâche de type query et définissez la propriété configuration.query.allowLargeResults sur true. Spécifiez la table de destination en utilisant la propriété configuration.query.destinationTable. Pour contrôler la disposition en écriture d'une table de destination existante, configurez la propriété configuration.query.writeDisposition.

Spécifiez votre emplacement dans la propriété location de la section jobReference de la ressource de tâche.

Go

Avant d'essayer cet exemple, suivez les instructions de configuration de Go décrites dans le 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 Go.

q := client.Query(
	"SELECT corpus FROM [bigquery-public-data:samples.shakespeare] GROUP BY corpus;")
q.UseLegacySQL = true
q.AllowLargeResults = true
q.QueryConfig.Dst = client.Dataset(dstDatasetID).Table(dstTableID)
job, err := q.Run(ctx)
if err != nil {
	return err
}
status, err := job.Wait(ctx)
if err != nil {
	return err
}
if err := status.Err(); err != nil {
	return err
}
it, err := job.Read(ctx)
for {
	var row []bigquery.Value
	err := it.Next(&row)
	if err == iterator.Done {
		break
	}
	if err != nil {
		return err
	}
	fmt.Println(row)
}

Java

Avant d'essayer cet exemple, suivez les instructions de configuration de Java décrites dans le 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 Java.

Pour que des résultats de requête volumineux puissent être renvoyés, paramétrez Autoriser un nombre élevé de résultats sur true et définissez la table de destination sur l'identifiant TableId souhaité dans une classe QueryJobConfiguration.

// BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();
// String destinationDataset = 'my_destination_dataset';
// String destinationTable = 'my_destination_table';
String query = "SELECT corpus FROM [bigquery-public-data:samples.shakespeare] GROUP BY corpus;";
QueryJobConfiguration queryConfig =
    // To use legacy SQL syntax, set useLegacySql to true.
    QueryJobConfiguration.newBuilder(query)
        .setUseLegacySql(true)
        // Save the results of the query to a permanent table.
        .setDestinationTable(TableId.of(destinationDataset, destinationTable))
        // Allow results larger than the maximum response size.
        // If true, a destination table must be set.
        .setAllowLargeResults(true)
        .build();

// Print the results.
for (FieldValueList row : bigquery.query(queryConfig).iterateAll()) {
  for (FieldValue val : row) {
    System.out.printf("%s,", val.toString());
  }
  System.out.printf("\n");
}

Python

Avant d'essayer cet exemple, suivez les instructions de configuration de Python décrites dans le 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 Python.

# from google.cloud import bigquery
# client = bigquery.Client()
# dataset_id = 'your_dataset_id'

job_config = bigquery.QueryJobConfig()
# Set use_legacy_sql to True to use legacy SQL syntax.
job_config.use_legacy_sql = True
# Set the destination table
table_ref = client.dataset(dataset_id).table('your_table_id')
job_config.destination = table_ref
job_config.allow_large_results = True
sql = """
    SELECT corpus
    FROM [bigquery-public-data:samples.shakespeare]
    GROUP BY corpus;
"""
# Start the query, passing in the extra configuration.
query_job = client.query(
    sql,
    # Location must match that of the dataset(s) referenced in the query
    # and of the destination table.
    location='US',
    job_config=job_config)  # API request - starts the query

query_job.result()  # Waits for the query to finish
print('Query results loaded to table {}'.format(table_ref.path))

Télécharger et enregistrer des résultats de requête

Une fois que vous avez exécuté une requête SQL, vous pouvez télécharger les résultats dans un fichier situé sur votre machine locale, puis les enregistrer dans Google Sheets ou dans une table permanente dans BigQuery.

Limites

Le téléchargement et l'enregistrement des résultats de requête sont soumis aux restrictions suivantes :

  • Vous ne pouvez télécharger les résultats de requête que dans un fichier local.
  • Pour le téléchargement des résultats de requête, l'ensemble de résultats ne doit pas dépasser 16 000 lignes ni 10 Mo. Si les résultats dépassent 10 Mo ou 16 000 lignes, vous pouvez les enregistrer dans une table.
  • Vous ne pouvez télécharger les résultats de requête qu'au format CSV ou JSON délimité par un retour à la ligne.
  • Vous ne pouvez pas télécharger des résultats de requête contenant des données imbriquées et répétées au format CSV.
  • Vous ne pouvez pas enregistrer des résultats de requête contenant des données imbriquées et répétées dans Google Sheets.
  • Pour l'enregistrement des résultats de requête, l'ensemble de résultats ne doit pas dépasser 16 000 lignes ni 10 Mo. Si les résultats dépassent 10 Mo ou 16 000 lignes, vous pouvez les enregistrer dans une table.
  • L'outil de ligne de commande et l'API ne permettent pas d'enregistrer les résultats dans Google Sheets.

Télécharger des résultats de requête

Pour télécharger des résultats de requête dans un fichier CSV ou JSON délimité par un retour à la ligne :

  1. Accédez à l'interface utilisateur Web de BigQuery.
    Accéder à l'interface utilisateur Web de BigQuery

  2. Cliquez sur le bouton Compose Query (Saisir une requête).

  3. Saisissez une requête SQL BigQuery valide dans la zone de texte New Query (Nouvelle requête).

  4. Cliquez sur Afficher les options.

  5. (Facultatif) Dans le champ Zone de traitement, cliquez sur Non spécifiée et sélectionnez l'emplacement de vos données.

  6. Cliquez sur Exécuter la requête.

  7. Lorsque les résultats sont renvoyés, cliquez sur le bouton Download as CSV (Télécharger au format CSV) ou Download as JSON (Télécharger au format JSON) au-dessus.

    Capture d'écran des boutons "Télécharger" et "Enregistrer"

    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 une table

Pour enregistrer des résultats de requête dans une table :

  1. Accédez à l'interface utilisateur Web de BigQuery.
    Accéder à l'interface utilisateur Web de BigQuery

  2. Cliquez sur le bouton Compose Query (Saisir une requête).

  3. Saisissez une requête SQL BigQuery valide dans la zone de texte New Query (Nouvelle requête).

  4. Cliquez sur Afficher les options.

  5. (Facultatif) Dans le champ Zone de traitement, cliquez sur Non spécifiée et sélectionnez l'emplacement de vos données.

  6. Cliquez sur Exécuter la requête.

  7. Lorsque les résultats sont renvoyés, cliquez sur le bouton Save as Table (Enregistrer dans une table) au-dessus.

    Capture d'écran des boutons "Télécharger" et "Enregistrer"

  8. Dans la boîte de dialogue Copy Table (Copier la table) :

    • Pour Destination Project (Projet de destination), choisissez le projet dans lequel les résultats de requête seront stockés.
    • Pour Destination Dataset (Ensemble de données de destination), sélectionnez l'ensemble de données dans lequel vous souhaitez stocker les résultats de requête. Les ensembles de données source et de destination doivent être stockés dans le même emplacement.
    • Pour Destination Table (Table de destination), saisissez un nom pour la nouvelle table. Ce nom doit être unique dans l'ensemble de données de destination. Il doit comporter 1 024 caractères maximum et contenir uniquement des lettres (A-Z, a-z), des chiffres (0-9) et des traits de soulignement (_). Vous ne pouvez pas écraser une table existante dans l'ensemble de données de destination via l'interface utilisateur Web de BigQuery.

      Copie de table

    • Cliquez sur OK.

  9. Une fois que vous avez cliqué sur OK, une tâche de copie est automatiquement générée pour créer la table en copiant la table temporaire (cache). Une fois la tâche terminée, vous pouvez voir la nouvelle table dans le volet de navigation de l'interface utilisateur.

Enregistrer des résultats de requête dans Google Sheets

Pour enregistrer des résultats de requête dans Google Sheets :

  1. Accédez à l'interface utilisateur Web de BigQuery.
    Accéder à l'interface utilisateur Web de BigQuery

  2. Cliquez sur le bouton Compose Query (Saisir une requête).

  3. Saisissez une requête SQL BigQuery valide dans la zone de texte New Query (Nouvelle requête).

  4. Cliquez sur Afficher les options.

  5. (Facultatif) Dans le champ Zone de traitement, cliquez sur Non spécifiée et sélectionnez l'emplacement de vos données.

  6. Cliquez sur Exécuter la requête.

  7. Lorsque les résultats sont renvoyés, cliquez sur le bouton Save to Google Sheets (Enregistrer dans Google Sheets) au-dessus.

    Capture d'écran des boutons "Télécharger" et "Enregistrer"

  8. Si nécessaire, suivez les instructions vous invitant à vous connecter à votre compte Google 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 avec pour objet "Outils client BigQuery connectés à votre compte Google". Il contient des informations sur les autorisations que vous avez accordées ainsi que les étapes à suivre pour les révoquer.

  9. Lorsque les résultats sont enregistrés, un message semblable au suivant s'affiche au-dessus des résultats de requête dans l'UI Web de BigQuery : Results saved to Google Sheets. .Click to view. Cliquez sur le lien dans le message pour afficher vos résultats dans Google Sheets, ou accédez à votre dossier MY Drive et 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 format YYYYMMDD.

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Besoin d'aide ? Consultez notre page d'assistance.