Exécuter une requête

Ce document explique comment exécuter une requête dans BigQuery et connaître la quantité de données que la requête va traiter avant son exécution en effectuant un dry run (test à blanc).

Types de requêtes

Vous pouvez interroger des données BigQuery à l'aide de l'un des types de job de requête suivants :

  • Tâches de requête interactives. Par défaut, BigQuery exécute les requêtes en tant que tâches de requête interactives, qui sont censées commencer à s'exécuter le plus rapidement possible.

  • Tâches de requête par lot Les requêtes par lot ont une priorité inférieure à celle des requêtes interactives. Lorsqu'un projet ou une réservation utilise toutes ses ressources de calcul disponibles, les requêtes par lot sont plus susceptibles d'être mises en file d'attente et d'y rester. Une fois qu'une requête par lot commence à s'exécuter, elle fonctionne de la même manière qu'une requête interactive. Pour en savoir plus, consultez la section Files d'attente de requêtes.

  • Jobs de requête continue. Avec ces jobs, la requête s'exécute en continu, ce qui vous permet d'analyser les données entrantes dans BigQuery en temps réel, puis d'écrire les résultats dans une table BigQuery ou de les exporter vers Bigtable ou Pub/Sub. Grâce à cette fonctionnalité, vous pouvez effectuer des tâches urgentes, telles que la création et l'action immédiate sur les insights, l'application d'inférences de machine learning (ML) en temps réel et la création de pipelines de données basés sur des événements.

Vous pouvez exécuter des jobs de requête à l'aide des méthodes suivantes :

BigQuery enregistre les résultats de la requête dans une table temporaire (par défaut) ou dans une table permanente. Lorsque vous spécifiez une table permanente comme table de destination pour les résultats, vous pouvez choisir d'ajouter ou d'écraser une table existante, ou de créer une table avec un nom unique.

Rôles requis

Pour obtenir les autorisations nécessaires pour exécuter un job de requête, demandez à votre administrateur de vous accorder les rôles IAM suivants :

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.

Ces rôles prédéfinis contiennent les autorisations requises pour exécuter un job de requête. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :

Autorisations requises

Les autorisations suivantes sont requises pour exécuter un job de requête :

  • bigquery.jobs.create sur le projet à partir duquel la requête est exécutée, quel que soit l'emplacement de stockage des données.
  • bigquery.tables.getData sur toutes les tables et vues auxquelles votre requête fait référence. Pour interroger des vues, vous devez également disposer de cette autorisation sur toutes les tables et vues sous-jacentes. Si vous utilisez des vues autorisées ou des ensembles de données autorisés, vous n'avez pas besoin d'accéder aux données sources sous-jacentes.

Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.

Dépannage

Access Denied: Project [project_id]: User does not have bigquery.jobs.create
permission in project [project_id].

Cette erreur se produit lorsqu'un compte principal ne dispose pas de l'autorisation nécessaire pour créer des jobs de requête dans le projet.

Solution : Un administrateur doit vous accorder l'autorisation bigquery.jobs.create sur le projet que vous interrogez. Cette autorisation est requise en plus de toute autorisation requise pour accéder aux données interrogées.

Pour plus d'informations sur les autorisations BigQuery, consultez la page Contrôle des accès avec IAM.

Exécuter une requête interactive

Pour exécuter une requête interactive, sélectionnez l'une des options suivantes :

Console

  1. Accédez à la page BigQuery.

    Accéder à BigQuery

  2. Cliquez sur Requête SQL.

  3. Dans l'éditeur de requête, saisissez une requête GoogleSQL valide.

    Par exemple, interrogez l'ensemble de données public BigQuery usa_names pour déterminer les noms les plus couramment utilisés aux États-Unis entre 1910 et 2013 :

    SELECT
      name, gender,
      SUM(number) AS total
    FROM
      `bigquery-public-data.usa_names.usa_1910_2013`
    GROUP BY
      name, gender
    ORDER BY
      total DESC
    LIMIT
      10;
    

    Vous pouvez également utiliser le panneau "Référence" pour créer des requêtes.

  4. Facultatif : Pour afficher automatiquement des suggestions de code lorsque vous saisissez une requête, cliquez sur Plus, puis sélectionnez Saisie semi-automatique SQL. Si vous n'avez pas besoin de suggestions de saisie semi-automatique, désélectionnez Saisie semi-automatique SQL. Cela désactive également les suggestions de saisie automatique pour le nom du projet.

  5. Facultatif : Pour sélectionner des paramètres de requête supplémentaires, cliquez sur Plus, puis sur Paramètres de requête.

  6. Cliquez sur Exécuter.

    Si vous ne spécifiez pas de table de destination, le job de requête écrit la sortie dans une table (en cache) temporaire.

    Vous pouvez maintenant explorer les résultats de la requête dans l'onglet Résultats du volet Résultats de la requête.

  7. Facultatif : Pour trier les résultats de la requête par colonne, cliquez sur Ouvrir le menu de tri à côté du nom de la colonne et sélectionnez un ordre de tri. Si le nombre d'octets estimés pris en compte pour le tri est supérieur à zéro, il s'affiche en haut du menu.

  8. Facultatif : Pour visualiser les résultats de votre requête, accédez à l'onglet Visualisation. Vous pouvez faire un zoom avant ou arrière sur le graphique, le télécharger au format PNG ou activer/désactiver la visibilité de la légende.

    Dans le volet Configuration de la visualisation, vous pouvez modifier le type de visualisation et configurer les mesures et les dimensions de la visualisation. Les champs de ce volet sont préremplis avec la configuration initiale déduite du schéma de la table de destination de la requête. La configuration est conservée entre les exécutions de requêtes suivantes dans le même éditeur de requête.

    Pour les visualisations En courbes, À barres ou Graphique à nuage de points, les dimensions acceptées sont les types de données INT64, FLOAT64, NUMERIC, BIGNUMERIC, TIMESTAMP, DATE, DATETIME, TIME et STRING, tandis que les mesures acceptées sont les types de données INT64, FLOAT64, NUMERIC et BIGNUMERIC.

    Si les résultats de votre requête incluent le type GEOGRAPHY, Carte est le type de visualisation par défaut, qui vous permet de visualiser vos résultats sur une carte interactive.

  9. Facultatif : Dans l'onglet JSON, vous pouvez explorer les résultats de la requête au format JSON, où la clé est le nom de la colonne et la valeur est le résultat de cette colonne.

bq

  1. In the Trusted Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Trusted 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.

  2. Utilisez la commande bq query. Dans l'exemple suivant, l'option --use_legacy_sql=false vous permet d'utiliser la syntaxe GoogleSQL.

    bq query \
        --use_legacy_sql=false \
        'QUERY'

    Remplacez QUERY par une requête GoogleSQL valide. Par exemple, interrogez l'ensemble de données public BigQuery usa_names pour déterminer les noms les plus couramment utilisés aux États-Unis entre 1910 et 2013 :

    bq query \
        --use_legacy_sql=false \
        'SELECT
          name, gender,
          SUM(number) AS total
        FROM
          `bigquery-public-data.usa_names.usa_1910_2013`
        GROUP BY
          name, gender
        ORDER BY
          total DESC
        LIMIT
          10;'
    

    Le job de requête écrit la sortie dans une table (en cache) temporaire.

    Sinon, vous pouvez spécifier la table de destination et l'emplacement pour les résultats de la requête. Pour écrire les résultats dans une table existante, ajoutez l'option appropriée afin d'ajouter (--append_table=true) ou d'écraser (--replace=true) la table.

    bq query \
        --location=LOCATION \
        --destination_table=TABLE \
        --use_legacy_sql=false \
        'QUERY'

    Remplacez les éléments suivants :

    • LOCATION : région ou emplacement multirégional de la table de destination, par exemple US

      Dans cet exemple, l'ensemble de données usa_names est stocké dans l'emplacement multirégional États-Unis. Si vous spécifiez une table de destination pour cette requête, l'ensemble de données contenant la table de destination doit également se trouver dans l'emplacement multirégional des États-Unis. Vous ne pouvez pas interroger un ensemble de données dans un emplacement spécifique et écrire les résultats dans une table dont l'emplacement est différent.

      Vous pouvez définir une valeur par défaut correspondant à l'emplacement en utilisant le fichier .bigqueryrc.

    • TABLE : nom de la table de destination, par exemple myDataset.myTable.

      Si la table de destination est une nouvelle table, BigQuery la crée lorsque vous exécutez votre requête. Cependant, vous devez spécifier un ensemble de données existant.

      Si la table ne se trouve pas dans votre projet actuel, ajoutez l'ID du projetTrusted Cloud en utilisant le format PROJECT_ID:DATASET.TABLE (par exemple, myProject:myDataset.myTable). Si --destination_table n'est pas spécifiée, un job de requête est généré pour écrire la sortie dans une table temporaire.

  3. API

    Pour exécuter une requête à l'aide de l'API, insérez une nouvelle tâche, puis définissez la propriété de configuration de tâche query. (Facultatif) Spécifiez votre locationemplacementjobReference dans la propriété de la section de la ressource de job.

    Interrogez les résultats en appelant getQueryResults jusqu'à ce que jobComplete ait la valeur true. Recherchez les erreurs et les avertissements dans la liste errors.

    C#

    Avant d'essayer cet exemple, suivez les instructions de configuration pour C# 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 C#.

    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.

    Avant d'exécuter des exemples de code, définissez la variable d'environnement GOOGLE_CLOUD_UNIVERSE_DOMAIN sur s3nsapis.fr.

    
    using Google.Cloud.BigQuery.V2;
    using System;
    
    public class BigQueryQuery
    {
        public void Query(
            string projectId = "your-project-id"
        )
        {
            BigQueryClient client = BigQueryClient.Create(projectId);
            string query = @"
                SELECT name FROM `bigquery-public-data.usa_names.usa_1910_2013`
                WHERE state = 'TX'
                LIMIT 100";
            BigQueryJob job = client.CreateQueryJob(
                sql: query,
                parameters: null,
                options: new QueryOptions { UseQueryCache = false });
            // Wait for the job to complete.
            job = job.PollUntilCompleted().ThrowOnAnyError();
            // Display the results
            foreach (BigQueryRow row in client.GetQueryResults(job.Reference))
            {
                Console.WriteLine($"{row["name"]}");
            }
        }
    }

    Go

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

    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.

    Avant d'exécuter des exemples de code, définissez la variable d'environnement GOOGLE_CLOUD_UNIVERSE_DOMAIN sur s3nsapis.fr.

    import (
    	"context"
    	"fmt"
    	"io"
    
    	"cloud.google.com/go/bigquery"
    	"google.golang.org/api/iterator"
    )
    
    // queryBasic demonstrates issuing a query and reading results.
    func queryBasic(w io.Writer, projectID string) error {
    	// projectID := "my-project-id"
    	ctx := context.Background()
    	client, err := bigquery.NewClient(ctx, projectID)
    	if err != nil {
    		return fmt.Errorf("bigquery.NewClient: %v", err)
    	}
    	defer client.Close()
    
    	q := client.Query(
    		"SELECT name FROM `bigquery-public-data.usa_names.usa_1910_2013` " +
    			"WHERE state = \"TX\" " +
    			"LIMIT 100")
    	// Location must match that of the dataset(s) referenced in the query.
    	q.Location = "US"
    	// Run the query and print results when the query job is completed.
    	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.Fprintln(w, row)
    	}
    	return nil
    }
    

    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.

    Avant d'exécuter des exemples de code, définissez la variable d'environnement GOOGLE_CLOUD_UNIVERSE_DOMAIN sur s3nsapis.fr.

    import com.google.cloud.bigquery.BigQuery;
    import com.google.cloud.bigquery.BigQueryException;
    import com.google.cloud.bigquery.BigQueryOptions;
    import com.google.cloud.bigquery.QueryJobConfiguration;
    import com.google.cloud.bigquery.TableResult;
    
    public class SimpleQuery {
    
      public static void runSimpleQuery() {
        // TODO(developer): Replace this query before running the sample.
        String query = "SELECT corpus FROM `bigquery-public-data.samples.shakespeare` GROUP BY corpus;";
        simpleQuery(query);
      }
    
      public static void simpleQuery(String query) {
        try {
          // Initialize client that will be used to send requests. This client only needs to be created
          // once, and can be reused for multiple requests.
          BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();
    
          // Create the query job.
          QueryJobConfiguration queryConfig = QueryJobConfiguration.newBuilder(query).build();
    
          // Execute the query.
          TableResult result = bigquery.query(queryConfig);
    
          // Print the results.
          result.iterateAll().forEach(rows -> rows.forEach(row -> System.out.println(row.getValue())));
    
          System.out.println("Query ran successfully");
        } catch (BigQueryException | InterruptedException e) {
          System.out.println("Query did not run \n" + e.toString());
        }
      }
    }

    Pour exécuter une requête avec un proxy, consultez la section Configurer un proxy.

    Node.js

    Avant d'essayer cet exemple, suivez les instructions de configuration pour Node.js 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 Node.js.

    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.

    Avant d'exécuter des exemples de code, définissez la variable d'environnement GOOGLE_CLOUD_UNIVERSE_DOMAIN sur s3nsapis.fr.

    // Import the Google Cloud client library using default credentials
    const {BigQuery} = require('@google-cloud/bigquery');
    const bigquery = new BigQuery();
    async function query() {
      // Queries the U.S. given names dataset for the state of Texas.
    
      const query = `SELECT name
        FROM \`bigquery-public-data.usa_names.usa_1910_2013\`
        WHERE state = 'TX'
        LIMIT 100`;
    
      // For all options, see https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs/query
      const options = {
        query: query,
        // Location must match that of the dataset(s) referenced in the query.
        location: 'US',
      };
    
      // Run the query as a job
      const [job] = await bigquery.createQueryJob(options);
      console.log(`Job ${job.id} started.`);
    
      // Wait for the query to finish
      const [rows] = await job.getQueryResults();
    
      // Print the results
      console.log('Rows:');
      rows.forEach(row => console.log(row));
    }

    PHP

    Avant d'essayer cet exemple, suivez les instructions de configuration pour PHP 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 PHP.

    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.

    Avant d'exécuter des exemples de code, définissez la variable d'environnement GOOGLE_CLOUD_UNIVERSE_DOMAIN sur s3nsapis.fr.

    use Google\Cloud\BigQuery\BigQueryClient;
    use Google\Cloud\Core\ExponentialBackoff;
    
    /** Uncomment and populate these variables in your code */
    // $projectId = 'The Google project ID';
    // $query = 'SELECT id, view_count FROM `bigquery-public-data.stackoverflow.posts_questions`';
    
    $bigQuery = new BigQueryClient([
        'projectId' => $projectId,
    ]);
    $jobConfig = $bigQuery->query($query);
    $job = $bigQuery->startQuery($jobConfig);
    
    $backoff = new ExponentialBackoff(10);
    $backoff->execute(function () use ($job) {
        print('Waiting for job to complete' . PHP_EOL);
        $job->reload();
        if (!$job->isComplete()) {
            throw new Exception('Job has not yet completed', 500);
        }
    });
    $queryResults = $job->queryResults();
    
    $i = 0;
    foreach ($queryResults as $row) {
        printf('--- Row %s ---' . PHP_EOL, ++$i);
        foreach ($row as $column => $value) {
            printf('%s: %s' . PHP_EOL, $column, json_encode($value));
        }
    }
    printf('Found %s row(s)' . PHP_EOL, $i);

    Python

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

    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.

    Avant d'exécuter des exemples de code, définissez la variable d'environnement GOOGLE_CLOUD_UNIVERSE_DOMAIN sur s3nsapis.fr.

    from google.cloud import bigquery
    
    # Construct a BigQuery client object.
    client = bigquery.Client()
    
    query = """
        SELECT name, SUM(number) as total_people
        FROM `bigquery-public-data.usa_names.usa_1910_2013`
        WHERE state = 'TX'
        GROUP BY name, state
        ORDER BY total_people DESC
        LIMIT 20
    """
    rows = client.query_and_wait(query)  # Make an API request.
    
    print("The query data:")
    for row in rows:
        # Row values can be accessed by field name or index.
        print("name={}, count={}".format(row[0], row["total_people"]))

    Ruby

    Avant d'essayer cet exemple, suivez les instructions de configuration pour Ruby 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 Ruby.

    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.

    Avant d'exécuter des exemples de code, définissez la variable d'environnement GOOGLE_CLOUD_UNIVERSE_DOMAIN sur s3nsapis.fr.

    require "google/cloud/bigquery"
    
    def query
      bigquery = Google::Cloud::Bigquery.new
      sql = "SELECT name FROM `bigquery-public-data.usa_names.usa_1910_2013` " \
            "WHERE state = 'TX' " \
            "LIMIT 100"
    
      # Location must match that of the dataset(s) referenced in the query.
      results = bigquery.query sql do |config|
        config.location = "US"
      end
    
      results.each do |row|
        puts row.inspect
      end
    end

Exécuter une requête par lot

Pour exécuter une requête par lot, sélectionnez l'une des options suivantes :

Console

  1. Accédez à la page BigQuery.

    Accéder à BigQuery

  2. Cliquez sur Requête SQL.

  3. Dans l'éditeur de requête, saisissez une requête GoogleSQL valide.

    Par exemple, interrogez l'ensemble de données public BigQuery usa_names pour déterminer les noms les plus couramment utilisés aux États-Unis entre 1910 et 2013 :

    SELECT
      name, gender,
      SUM(number) AS total
    FROM
      `bigquery-public-data.usa_names.usa_1910_2013`
    GROUP BY
      name, gender
    ORDER BY
      total DESC
    LIMIT
      10;
    
  4. Cliquez sur Plus, puis sur Paramètres de requête.

  5. Dans la section Gestion des ressources, sélectionnez Par lot.

  6. Facultatif : Ajustez les paramètres de votre requête.

  7. Cliquez sur Enregistrer.

  8. Cliquez sur Exécuter.

    Si vous ne spécifiez pas de table de destination, le job de requête écrit la sortie dans une table (en cache) temporaire.

bq

  1. In the Trusted Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Trusted 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.

  2. Exécutez la commande bq query, puis spécifiez l'option --batch. Dans l'exemple suivant, l'option --use_legacy_sql=false vous permet d'utiliser la syntaxe GoogleSQL.

    bq query \
        --batch \
        --use_legacy_sql=false \
        'QUERY'

    Remplacez QUERY par une requête GoogleSQL valide. Par exemple, interrogez l'ensemble de données public BigQuery usa_names pour déterminer les noms les plus couramment utilisés aux États-Unis entre 1910 et 2013 :

    bq query \
        --batch \
        --use_legacy_sql=false \
        'SELECT
          name, gender,
          SUM(number) AS total
        FROM
          `bigquery-public-data.usa_names.usa_1910_2013`
        GROUP BY
          name, gender
        ORDER BY
          total DESC
        LIMIT
          10;'
    

    Le job de requête écrit la sortie dans une table (en cache) temporaire.

    Sinon, vous pouvez spécifier la table de destination et l'emplacement pour les résultats de la requête. Pour écrire les résultats dans une table existante, ajoutez l'option appropriée afin d'ajouter (--append_table=true) ou d'écraser (--replace=true) la table.

    bq query \
        --batch \
        --location=LOCATION \
        --destination_table=TABLE \
        --use_legacy_sql=false \
        'QUERY'

    Remplacez les éléments suivants :

    • LOCATION : région ou emplacement multirégional de la table de destination, par exemple US

      Dans cet exemple, l'ensemble de données usa_names est stocké dans l'emplacement multirégional États-Unis. Si vous spécifiez une table de destination pour cette requête, l'ensemble de données contenant la table de destination doit également se trouver dans l'emplacement multirégional des États-Unis. Vous ne pouvez pas interroger un ensemble de données dans un emplacement spécifique et écrire les résultats dans une table dont l'emplacement est différent.

      Vous pouvez définir une valeur par défaut correspondant à l'emplacement en utilisant le fichier .bigqueryrc.

    • TABLE : nom de la table de destination, par exemple myDataset.myTable.

      Si la table de destination est une nouvelle table, BigQuery la crée lorsque vous exécutez votre requête. Cependant, vous devez spécifier un ensemble de données existant.

      Si la table ne se trouve pas dans votre projet actuel, ajoutez l'ID du projetTrusted Cloud en utilisant le format PROJECT_ID:DATASET.TABLE (par exemple, myProject:myDataset.myTable). Si --destination_table n'est pas spécifiée, un job de requête est généré pour écrire la sortie dans une table temporaire.

  3. API

    Pour exécuter une requête à l'aide de l'API, insérez une nouvelle tâche, puis définissez la propriété de configuration de tâche query. (Facultatif) Spécifiez votre locationemplacementjobReference dans la propriété de la section de la ressource de job.

    Lorsque vous spécifiez les propriétés du job de requête, incluez la propriété configuration.query.priority et définissez la valeur sur BATCH.

    Interrogez les résultats en appelant getQueryResults jusqu'à ce que jobComplete ait la valeur true. Recherchez les erreurs et les avertissements dans la liste errors.

    Go

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

    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.

    Avant d'exécuter des exemples de code, définissez la variable d'environnement GOOGLE_CLOUD_UNIVERSE_DOMAIN sur s3nsapis.fr.

    import (
    	"context"
    	"fmt"
    	"io"
    	"time"
    
    	"cloud.google.com/go/bigquery"
    )
    
    // queryBatch demonstrates issuing a query job using batch priority.
    func queryBatch(w io.Writer, projectID, dstDatasetID, dstTableID string) error {
    	// projectID := "my-project-id"
    	// dstDatasetID := "mydataset"
    	// dstTableID := "mytable"
    	ctx := context.Background()
    	client, err := bigquery.NewClient(ctx, projectID)
    	if err != nil {
    		return fmt.Errorf("bigquery.NewClient: %v", err)
    	}
    	defer client.Close()
    
    	// Build an aggregate table.
    	q := client.Query(`
    		SELECT
      			corpus,
      			SUM(word_count) as total_words,
      			COUNT(1) as unique_words
    		FROM ` + "`bigquery-public-data.samples.shakespeare`" + `
    		GROUP BY corpus;`)
    	q.Priority = bigquery.BatchPriority
    	q.QueryConfig.Dst = client.Dataset(dstDatasetID).Table(dstTableID)
    
    	// Start the job.
    	job, err := q.Run(ctx)
    	if err != nil {
    		return err
    	}
    	// Job is started and will progress without interaction.
    	// To simulate other work being done, sleep a few seconds.
    	time.Sleep(5 * time.Second)
    	status, err := job.Status(ctx)
    	if err != nil {
    		return err
    	}
    
    	state := "Unknown"
    	switch status.State {
    	case bigquery.Pending:
    		state = "Pending"
    	case bigquery.Running:
    		state = "Running"
    	case bigquery.Done:
    		state = "Done"
    	}
    	// You can continue to monitor job progress until it reaches
    	// the Done state by polling periodically.  In this example,
    	// we print the latest status.
    	fmt.Fprintf(w, "Job %s in Location %s currently in state: %s\n", job.ID(), job.Location(), state)
    
    	return nil
    
    }
    

    Java

    Pour exécuter une requête par lot, définissez la priorité de la requête sur QueryJobConfiguration.Priority.BATCH lors de la création d'une configuration QueryJobConfiguration.

    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.

    Avant d'exécuter des exemples de code, définissez la variable d'environnement GOOGLE_CLOUD_UNIVERSE_DOMAIN sur s3nsapis.fr.

    import com.google.cloud.bigquery.BigQuery;
    import com.google.cloud.bigquery.BigQueryException;
    import com.google.cloud.bigquery.BigQueryOptions;
    import com.google.cloud.bigquery.QueryJobConfiguration;
    import com.google.cloud.bigquery.TableResult;
    
    // Sample to query batch in a table
    public class QueryBatch {
    
      public static void runQueryBatch() {
        // TODO(developer): Replace these variables before running the sample.
        String projectId = "MY_PROJECT_ID";
        String datasetName = "MY_DATASET_NAME";
        String tableName = "MY_TABLE_NAME";
        String query =
            "SELECT corpus"
                + " FROM `"
                + projectId
                + "."
                + datasetName
                + "."
                + tableName
                + " GROUP BY corpus;";
        queryBatch(query);
      }
    
      public static void queryBatch(String query) {
        try {
          // Initialize client that will be used to send requests. This client only needs to be created
          // once, and can be reused for multiple requests.
          BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();
    
          QueryJobConfiguration queryConfig =
              QueryJobConfiguration.newBuilder(query)
                  // Run at batch priority, which won't count toward concurrent rate limit.
                  .setPriority(QueryJobConfiguration.Priority.BATCH)
                  .build();
    
          TableResult results = bigquery.query(queryConfig);
    
          results
              .iterateAll()
              .forEach(row -> row.forEach(val -> System.out.printf("%s,", val.toString())));
    
          System.out.println("Query batch performed successfully.");
        } catch (BigQueryException | InterruptedException e) {
          System.out.println("Query batch not performed \n" + e.toString());
        }
      }
    }

    Node.js

    Avant d'essayer cet exemple, suivez les instructions de configuration pour Node.js 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 Node.js.

    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.

    Avant d'exécuter des exemples de code, définissez la variable d'environnement GOOGLE_CLOUD_UNIVERSE_DOMAIN sur s3nsapis.fr.

    // Import the Google Cloud client library and create a client
    const {BigQuery} = require('@google-cloud/bigquery');
    const bigquery = new BigQuery();
    
    async function queryBatch() {
      // Runs a query at batch priority.
    
      // Create query job configuration. For all options, see
      // https://cloud.google.com/bigquery/docs/reference/rest/v2/Job#jobconfigurationquery
      const queryJobConfig = {
        query: `SELECT corpus
                FROM \`bigquery-public-data.samples.shakespeare\` 
                LIMIT 10`,
        useLegacySql: false,
        priority: 'BATCH',
      };
    
      // Create job configuration. For all options, see
      // https://cloud.google.com/bigquery/docs/reference/rest/v2/Job#jobconfiguration
      const jobConfig = {
        // Specify a job configuration to set optional job resource properties.
        configuration: {
          query: queryJobConfig,
        },
      };
    
      // Make API request.
      const [job] = await bigquery.createJob(jobConfig);
    
      const jobId = job.metadata.id;
      const state = job.metadata.status.state;
      console.log(`Job ${jobId} is currently in state ${state}`);
    }

    Python

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

    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.

    Avant d'exécuter des exemples de code, définissez la variable d'environnement GOOGLE_CLOUD_UNIVERSE_DOMAIN sur s3nsapis.fr.

    from google.cloud import bigquery
    
    # Construct a BigQuery client object.
    client = bigquery.Client()
    
    job_config = bigquery.QueryJobConfig(
        # Run at batch priority, which won't count toward concurrent rate limit.
        priority=bigquery.QueryPriority.BATCH
    )
    
    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, job_config=job_config)  # Make an API request.
    
    # Check on the progress by getting the job's updated state. Once the state
    # is `DONE`, the results are ready.
    query_job = client.get_job(
        query_job.job_id, location=query_job.location
    )  # Make an API request.
    
    print("Job {} is currently in state {}".format(query_job.job_id, query_job.state))

Exécuter une requête continue

L'exécution d'une requête continue nécessite une configuration supplémentaire. Pour en savoir plus, consultez Créer des requêtes continues.

Utiliser le panneau Référence

Dans l'éditeur de requêtes, le panneau Référence affiche de manière dynamique des informations contextuelles sur les tables, les instantanés, les vues et les vues matérialisées. Ce panneau vous permet de prévisualiser les détails du schéma de ces ressources ou de les ouvrir dans un nouvel onglet. Vous pouvez également utiliser le panneau Référence pour créer des requêtes ou modifier des requêtes existantes en insérant des extraits de requêtes ou des noms de champs.

Pour créer une requête à l'aide du panneau Référence, procédez comme suit :

  1. Dans la console Trusted Cloud , accédez à la page BigQuery.

    Accéder à BigQuery

  2. Cliquez sur Requête SQL.

  3. Cliquez sur quick_reference_all Référence.

  4. Cliquez sur une table ou une vue récente ou suivie. Vous pouvez également utiliser la barre de recherche pour trouver des tables et des vues.

  5. Cliquez sur Afficher les actions, puis sur Insérer un extrait de requête.

    Panneau de référence dans l'éditeur de requête

  6. Facultatif : Vous pouvez prévisualiser les détails du schéma de la table, les afficher ou les ouvrir dans un nouvel onglet.

  7. Vous pouvez maintenant modifier la requête manuellement ou insérer des noms de champs directement dans votre requête. Pour insérer un nom de champ, pointez sur l'emplacement de l'éditeur de requête où vous souhaitez insérer le nom de champ, puis cliquez sur le nom de champ dans le panneau Référence.

Paramètres de requête

Lorsque vous exécutez une requête, vous pouvez spécifier les paramètres suivants :

Mode de création de job facultatif

Le mode de création de job facultatif peut améliorer la latence globale des requêtes qui s'exécutent pendant une courte durée, comme celles des tableaux de bord ou des charges de travail d'exploration de données. Ce mode exécute la requête et renvoie les résultats intégrés pour les instructions SELECT sans nécessiter l'utilisation de jobs.getQueryResults pour récupérer les résultats. Les requêtes utilisant le mode de création de tâche facultatif ne créent pas de tâche lorsqu'elles sont exécutées, sauf si BigQuery détermine qu'une création de tâche est nécessaire pour terminer la requête.

Pour activer le mode de création de job facultatif, définissez le champ jobCreationMode de l'instance QueryRequest sur JOB_CREATION_OPTIONAL dans le corps de la requête jobs.query.

Lorsque la valeur de ce champ est définie sur JOB_CREATION_OPTIONAL, BigQuery détermine si la requête peut utiliser le mode de création de job facultatif. Si tel est le cas, BigQuery exécute la requête et renvoie tous les résultats dans le champ rows de la réponse. Étant donné qu'aucune tâche n'est créée pour cette requête, BigQuery ne renvoie pas de jobReference dans le corps de la réponse. Il renvoie un champ queryId que vous pouvez utiliser pour obtenir des insights sur la requête à l'aide de la vue INFORMATION_SCHEMA.JOBS. Étant donné qu'aucun job n'est créé, aucun jobReference ne peut être transmis aux API jobs.get et jobs.getQueryResults pour rechercher ces requêtes.

Si BigQuery détermine qu'une tâche est nécessaire pour terminer la requête, une valeur jobReference est renvoyée. Vous pouvez inspecter le champ job_creation_reason dans la vue INFORMATION_SCHEMA.JOBS pour déterminer la raison pour laquelle une tâche a été créée pour la requête. Dans ce cas, vous devez utiliser jobs.getQueryResults pour récupérer les résultats une fois la requête terminée.

Lorsque vous utilisez la valeur JOB_CREATION_OPTIONAL, il est possible que le champ jobReference ne soit pas présent dans la réponse. Vérifiez si le champ existe avant d'y accéder.

Lorsque JOB_CREATION_OPTIONAL est spécifié pour les requêtes multi-instructions (scripts), BigQuery peut optimiser le processus d'exécution. Dans le cadre de cette optimisation, BigQuery peut déterminer qu'il peut exécuter le script en créant moins de ressources de job que le nombre d'instructions individuelles, voire en exécutant l'intégralité du script sans créer de job. Cette optimisation dépend de l'évaluation du script par BigQuery. Il est possible qu'elle ne soit pas appliquée dans tous les cas. L'optimisation est entièrement automatisée par le système. Aucune action ni aucun contrôle utilisateur ne sont requis.

Pour exécuter une requête en mode de création de job facultatif, sélectionnez l'une des options suivantes :

Console

  1. Accédez à la page BigQuery.

    Accéder à BigQuery

  2. Cliquez sur Requête SQL.

  3. Dans l'éditeur de requête, saisissez une requête GoogleSQL valide.

    Par exemple, interrogez l'ensemble de données public BigQuery usa_names pour déterminer les noms les plus couramment utilisés aux États-Unis entre 1910 et 2013 :

    SELECT
      name, gender,
      SUM(number) AS total
    FROM
      `bigquery-public-data.usa_names.usa_1910_2013`
    GROUP BY
      name, gender
    ORDER BY
      total DESC
    LIMIT
      10;
    
  4. Cliquez sur Plus, puis sélectionnez le mode de requête Création de job facultative. Pour confirmer ce choix, cliquez sur Confirmer.

  5. Cliquez sur Exécuter.

bq

  1. In the Trusted Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Trusted 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.

  2. Exécutez la commande bq query, puis spécifiez l'option --job_creation_mode=JOB_CREATION_OPTIONAL. Dans l'exemple suivant, l'option --use_legacy_sql=false vous permet d'utiliser la syntaxe GoogleSQL.

    bq query \
        --rpc=true \
        --use_legacy_sql=false \
        --job_creation_mode=JOB_CREATION_OPTIONAL \
        --location=LOCATION \
        'QUERY'

    Remplacez QUERY par une requête GoogleSQL valide, et LOCATION par une région valide où se trouve l'ensemble de données. Par exemple, interrogez l'ensemble de données public BigQuery usa_names pour déterminer les noms les plus couramment utilisés aux États-Unis entre 1910 et 2013 :

    bq query \
        --rpc=true \
        --use_legacy_sql=false \
        --job_creation_mode=JOB_CREATION_OPTIONAL \
        --location=us \
        'SELECT
          name, gender,
          SUM(number) AS total
        FROM
          `bigquery-public-data.usa_names.usa_1910_2013`
        GROUP BY
          name, gender
        ORDER BY
          total DESC
        LIMIT
          10;'
    

    La requête renvoie la sortie dans la réponse.

  3. API

    Pour exécuter une requête en mode création de tâche facultative à l'aide de l'API, exécutez une requête de manière synchrone et renseignez la propriété QueryRequest. Incluez la propriété jobCreationMode et définissez sa valeur sur JOB_CREATION_OPTIONAL.

    Vérifiez la réponse. Si jobComplete est égal à true et que jobReference est vide, lisez les résultats du champ rows. Vous pouvez également obtenir le queryId à partir de la réponse.

    Si jobReference est présent, vous pouvez vérifier jobCreationReason pour savoir pourquoi une tâche a été créée par BigQuery. Interrogez les résultats en appelant getQueryResults jusqu'à ce que jobComplete ait la valeur true. Recherchez les erreurs et les avertissements dans la liste errors.

    Java

    Version disponible : 2.51.0 et versions ultérieures

    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.

    Avant d'exécuter des exemples de code, définissez la variable d'environnement GOOGLE_CLOUD_UNIVERSE_DOMAIN sur s3nsapis.fr.

    import com.google.cloud.bigquery.BigQuery;
    import com.google.cloud.bigquery.BigQueryException;
    import com.google.cloud.bigquery.BigQueryOptions;
    import com.google.cloud.bigquery.JobId;
    import com.google.cloud.bigquery.QueryJobConfiguration;
    import com.google.cloud.bigquery.QueryJobConfiguration.JobCreationMode;
    import com.google.cloud.bigquery.TableResult;
    
    // Sample demonstrating short mode query execution.
    //
    // This feature is controlled by setting the defaultJobCreationMode
    // field in the BigQueryOptions used for the client. JOB_CREATION_OPTIONAL
    // allows for the execution of queries without creating a job.
    public class QueryJobOptional {
    
      public static void main(String[] args) {
        String query =
            "SELECT name, gender, SUM(number) AS total FROM "
                + "bigquery-public-data.usa_names.usa_1910_2013 GROUP BY "
                + "name, gender ORDER BY total DESC LIMIT 10";
        queryJobOptional(query);
      }
    
      public static void queryJobOptional(String query) {
        try {
          // Initialize client that will be used to send requests. This client only needs
          // to be created once, and can be reused for multiple requests.
          BigQueryOptions options = BigQueryOptions.getDefaultInstance();
          options.setDefaultJobCreationMode(JobCreationMode.JOB_CREATION_OPTIONAL);
          BigQuery bigquery = options.getService();
    
          // Execute the query. The returned TableResult provides access information
          // about the query execution as well as query results.
          TableResult results = bigquery.query(QueryJobConfiguration.of(query));
    
          JobId jobId = results.getJobId();
          if (jobId != null) {
            System.out.println("Query was run with job state.  Job ID: " + jobId.toString());
          } else {
            System.out.println("Query was run in short mode.  Query ID: " + results.getQueryId());
          }
    
          // Print the results.
          results
              .iterateAll()
              .forEach(
                  row -> {
                    System.out.print("name:" + row.get("name").getStringValue());
                    System.out.print(", gender: " + row.get("gender").getStringValue());
                    System.out.print(", total: " + row.get("total").getLongValue());
                    System.out.println();
                  });
    
        } catch (BigQueryException | InterruptedException e) {
          System.out.println("Query not performed \n" + e.toString());
        }
      }
    }

    Pour exécuter une requête avec un proxy, consultez la section Configurer un proxy.

    Python

    Version disponible : 3.34.0 ou version ultérieure

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

    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.

    Avant d'exécuter des exemples de code, définissez la variable d'environnement GOOGLE_CLOUD_UNIVERSE_DOMAIN sur s3nsapis.fr.

    # This example demonstrates executing a query without requiring an associated
    # job.
    from google.cloud import bigquery
    from google.cloud.bigquery.enums import JobCreationMode
    
    # Construct a BigQuery client object, specifying that the library should
    # avoid creating jobs when possible.
    client = bigquery.Client(
        default_job_creation_mode=JobCreationMode.JOB_CREATION_OPTIONAL
    )
    
    query = """
        SELECT
            name,
            gender,
            SUM(number) AS total
        FROM
            bigquery-public-data.usa_names.usa_1910_2013
        GROUP BY
            name, gender
        ORDER BY
            total DESC
        LIMIT 10
    """
    # Run the query.  The returned `rows` iterator can return information about
    # how the query was executed as well as the result data.
    rows = client.query_and_wait(query)
    
    if rows.job_id is not None:
        print("Query was run with job state.  Job ID: {}".format(rows.job_id))
    else:
        print(
            "Query was run without creating a job.  Query ID: {}".format(rows.query_id)
        )
    
    print("The query data:")
    for row in rows:
        # Row values can be accessed by field name or index.
        print("name={}, gender={}, total={}".format(row[0], row[1], row["total"]))

    Nœud

    Version disponible : 8.1.0 et versions ultérieures

    Avant d'essayer cet exemple, suivez les instructions de configuration pour Node.js 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 Node.js.

    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.

    Avant d'exécuter des exemples de code, définissez la variable d'environnement GOOGLE_CLOUD_UNIVERSE_DOMAIN sur s3nsapis.fr.

    // Demonstrates issuing a query that may be run in short query mode.
    
    // Import the Google Cloud client library
    const {BigQuery} = require('@google-cloud/bigquery');
    const bigquery = new BigQuery({
      // default behavior is to create jobs when using the jobs.query API
      defaultJobCreationMode: 'JOB_CREATION_REQUIRED',
    });
    
    async function queryJobOptional() {
      // SQL query to run.
    
      const sqlQuery = `
        SELECT name, gender, SUM(number) AS total
        FROM bigquery-public-data.usa_names.usa_1910_2013
        GROUP BY name, gender
        ORDER BY total DESC
        LIMIT 10`;
    
      // Run the query
      const [rows, , res] = await bigquery.query({
        query: sqlQuery,
        // Skip job creation to enable short mode.
        jobCreationMode: 'JOB_CREATION_OPTIONAL',
      });
    
      if (!res.jobReference) {
        console.log(`Query was run in short mode. Query ID: ${res.queryId}`);
      } else {
        const jobRef = res.jobReference;
        const qualifiedId = `${jobRef.projectId}.${jobRef.location}.${jobRef.jobId}`;
        console.log(
          `Query was run with job state. Job ID: ${qualifiedId}, Query ID: ${res.queryId}`,
        );
      }
      // Print the results
      console.log('Rows:');
      rows.forEach(row => console.log(row));
    }

    Go

    Version disponible : 1.69.0 et versions ultérieures

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

    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.

    Avant d'exécuter des exemples de code, définissez la variable d'environnement GOOGLE_CLOUD_UNIVERSE_DOMAIN sur s3nsapis.fr.

    import (
    	"context"
    	"fmt"
    	"io"
    
    	"cloud.google.com/go/bigquery"
    	"google.golang.org/api/iterator"
    )
    
    // queryJobOptional demonstrates issuing a query that doesn't require a
    // corresponding job.
    func queryJobOptional(w io.Writer, projectID string) error {
    	// projectID := "my-project-id"
    	ctx := context.Background()
    	client, err := bigquery.NewClient(ctx, projectID,
    		bigquery.WithDefaultJobCreationMode(bigquery.JobCreationModeOptional),
    	)
    	if err != nil {
    		return fmt.Errorf("bigquery.NewClient: %w", err)
    	}
    	defer client.Close()
    
    	q := client.Query(`
    		SELECT
      			name, gender,
      			SUM(number) AS total
    		FROM
    			bigquery-public-data.usa_names.usa_1910_2013
    		GROUP BY 
    			name, gender
    		ORDER BY
    			total DESC
    		LIMIT 10
    		`)
    	// Run the query and process the returned row iterator.
    	it, err := q.Read(ctx)
    	if err != nil {
    		return fmt.Errorf("query.Read(): %w", err)
    	}
    
    	// The iterator provides information about the query execution.
    	// Queries that were run in short query mode will not have the source job
    	// populated.
    	if it.SourceJob() == nil {
    		fmt.Fprintf(w, "Query was run in optional job mode.  Query ID: %q\n", it.QueryID())
    	} else {
    		j := it.SourceJob()
    		qualifiedJobID := fmt.Sprintf("%s:%s.%s", j.ProjectID(), j.Location(), j.ID())
    		fmt.Fprintf(w, "Query was run with job state.  Job ID: %q, Query ID: %q\n",
    			qualifiedJobID, it.QueryID())
    	}
    
    	// Print row data.
    	for {
    		var row []bigquery.Value
    		err := it.Next(&row)
    		if err == iterator.Done {
    			break
    		}
    		if err != nil {
    			return err
    		}
    		fmt.Fprintln(w, row)
    	}
    	return nil
    }
    

    Pilote JDBC

    Version disponible : JDBC v1.6.1 et versions ultérieures

    Nécessite de définir JobCreationMode=2 dans la chaîne de connexion.

        jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443;JobCreationMode=2;Location=US;
      

    Pilote ODBC

    Version disponible : ODBC v3.0.7.1016 et versions ultérieures

    Nécessite de définir JobCreationMode=2 dans le fichier .ini.

        [ODBC Data Sources]
        Sample DSN=Simba Google BigQuery ODBC Connector 64-bit
        [Sample DSN]
        JobCreationMode=2
      

Quotas

Pour en savoir plus sur les quotas concernant les requêtes interactives et par lot, consultez la page Jobs de requête.

Surveiller les requêtes

Vous pouvez obtenir des informations sur les requêtes en cours d'exécution à l'aide de l'explorateur de jobs ou en interrogeant la vue INFORMATION_SCHEMA.JOBS_BY_PROJECT.

Dry run

Une simulation de BigQuery fournit les informations suivantes :

Les simulations n'utilisent pas d'emplacements de requête, et leur exécution ne vous est pas facturée. L'estimation renvoyée par la simulation vous permettra de calculer les coûts de requête dans le simulateur de coût.

Effectuer une simulation

Pour effectuer une simulation, procédez comme suit :

Console

  1. Accédez à la page BigQuery.

    Accéder à BigQuery

  2. Saisissez votre requête dans l'Éditeur de requête.

    Si la requête est valide, une coche apparaît automatiquement avec la quantité de données que la requête va traiter. Si la requête n'est pas valide, un point d'exclamation apparaît avec un message d'erreur.

bq

Saisissez une requête semblable à celle-ci à l'aide de l'option --dry_run.

bq query \
--use_legacy_sql=false \
--dry_run \
'SELECT
   COUNTRY,
   AIRPORT,
   IATA
 FROM
   `project_id`.dataset.airports
 LIMIT
   1000'
 

Pour une requête valide, la commande génère la réponse suivante :

Query successfully validated. Assuming the tables are not modified,
running this query will process 10918 bytes of data.

API

Pour effectuer une simulation avec l'API, envoyez une tâche de requête avec la valeur dryRun définie sur true dans le type JobConfiguration.

Go

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

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.

Avant d'exécuter des exemples de code, définissez la variable d'environnement GOOGLE_CLOUD_UNIVERSE_DOMAIN sur s3nsapis.fr.

import (
	"context"
	"fmt"
	"io"

	"cloud.google.com/go/bigquery"
)

// queryDryRun demonstrates issuing a dry run query to validate query structure and
// provide an estimate of the bytes scanned.
func queryDryRun(w io.Writer, projectID string) error {
	// projectID := "my-project-id"
	ctx := context.Background()
	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	q := client.Query(`
	SELECT
		name,
		COUNT(*) as name_count
	FROM ` + "`bigquery-public-data.usa_names.usa_1910_2013`" + `
	WHERE state = 'WA'
	GROUP BY name`)
	q.DryRun = true
	// Location must match that of the dataset(s) referenced in the query.
	q.Location = "US"

	job, err := q.Run(ctx)
	if err != nil {
		return err
	}
	// Dry run is not asynchronous, so get the latest status and statistics.
	status := job.LastStatus()
	if err := status.Err(); err != nil {
		return err
	}
	fmt.Fprintf(w, "This query will process %d bytes\n", status.Statistics.TotalBytesProcessed)
	return nil
}

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.

Avant d'exécuter des exemples de code, définissez la variable d'environnement GOOGLE_CLOUD_UNIVERSE_DOMAIN sur s3nsapis.fr.

import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.Job;
import com.google.cloud.bigquery.JobInfo;
import com.google.cloud.bigquery.JobStatistics;
import com.google.cloud.bigquery.QueryJobConfiguration;

// Sample to run dry query on the table
public class QueryDryRun {

  public static void runQueryDryRun() {
    String query =
        "SELECT name, COUNT(*) as name_count "
            + "FROM `bigquery-public-data.usa_names.usa_1910_2013` "
            + "WHERE state = 'WA' "
            + "GROUP BY name";
    queryDryRun(query);
  }

  public static void queryDryRun(String query) {
    try {
      // Initialize client that will be used to send requests. This client only needs to be created
      // once, and can be reused for multiple requests.
      BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();

      QueryJobConfiguration queryConfig =
          QueryJobConfiguration.newBuilder(query).setDryRun(true).setUseQueryCache(false).build();

      Job job = bigquery.create(JobInfo.of(queryConfig));
      JobStatistics.QueryStatistics statistics = job.getStatistics();

      System.out.println(
          "Query dry run performed successfully." + statistics.getTotalBytesProcessed());
    } catch (BigQueryException e) {
      System.out.println("Query not performed \n" + e.toString());
    }
  }
}

Node.js

Avant d'essayer cet exemple, suivez les instructions de configuration pour Node.js 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 Node.js.

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.

Avant d'exécuter des exemples de code, définissez la variable d'environnement GOOGLE_CLOUD_UNIVERSE_DOMAIN sur s3nsapis.fr.

// Import the Google Cloud client library
const {BigQuery} = require('@google-cloud/bigquery');
const bigquery = new BigQuery();

async function queryDryRun() {
  // Runs a dry query of the U.S. given names dataset for the state of Texas.

  const query = `SELECT name
    FROM \`bigquery-public-data.usa_names.usa_1910_2013\`
    WHERE state = 'TX'
    LIMIT 100`;

  // For all options, see https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs/query
  const options = {
    query: query,
    // Location must match that of the dataset(s) referenced in the query.
    location: 'US',
    dryRun: true,
  };

  // Run the query as a job
  const [job] = await bigquery.createQueryJob(options);

  // Print the status and statistics
  console.log('Status:');
  console.log(job.metadata.status);
  console.log('\nJob Statistics:');
  console.log(job.metadata.statistics);
}

PHP

Avant d'essayer cet exemple, suivez les instructions de configuration pour PHP 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 PHP.

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.

Avant d'exécuter des exemples de code, définissez la variable d'environnement GOOGLE_CLOUD_UNIVERSE_DOMAIN sur s3nsapis.fr.

use Google\Cloud\BigQuery\BigQueryClient;

/** Uncomment and populate these variables in your code */
// $projectId = 'The Google project ID';
// $query = 'SELECT id, view_count FROM `bigquery-public-data.stackoverflow.posts_questions`';

// Construct a BigQuery client object.
$bigQuery = new BigQueryClient([
    'projectId' => $projectId,
]);

// Set job configs
$jobConfig = $bigQuery->query($query);
$jobConfig->useQueryCache(false);
$jobConfig->dryRun(true);

// Extract query results
$queryJob = $bigQuery->startJob($jobConfig);
$info = $queryJob->info();

printf('This query will process %s bytes' . PHP_EOL, $info['statistics']['totalBytesProcessed']);

Python

Définissez la propriété QueryJobConfig.dry_run sur True. La méthode Client.query() renvoie toujours une tâche QueryJob terminée lorsque vous lui transmettez une configuration de requête simulée.

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

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.

Avant d'exécuter des exemples de code, définissez la variable d'environnement GOOGLE_CLOUD_UNIVERSE_DOMAIN sur s3nsapis.fr.

from google.cloud import bigquery

# Construct a BigQuery client object.
client = bigquery.Client()

job_config = bigquery.QueryJobConfig(dry_run=True, use_query_cache=False)

# Start the query, passing in the extra configuration.
query_job = client.query(
    (
        "SELECT name, COUNT(*) as name_count "
        "FROM `bigquery-public-data.usa_names.usa_1910_2013` "
        "WHERE state = 'WA' "
        "GROUP BY name"
    ),
    job_config=job_config,
)  # Make an API request.

# A dry run query completes immediately.
print("This query will process {} bytes.".format(query_job.total_bytes_processed))

Étapes suivantes