Répertorier les ensembles de données

Ce document explique comment répertorier des ensembles de données dans BigQuery.

Vous pouvez répertorier les ensembles de données de différentes manières :

  • Utiliser la console
  • Utiliser la requête SQL INFORMATION_SCHEMA
  • Utiliser la commande bq ls de l'outil de ligne de commande bq
  • En appelant la méthode API datasets.list
  • Utiliser les bibliothèques clientes

Avant de commencer

Attribuez aux utilisateurs des rôles IAM (Identity and Access Management) incluant les autorisations nécessaires pour effectuer l'ensemble des tâches du présent document.

Autorisations requises

Pour répertorier les ensembles de données, vous devez disposer de l'autorisation IAM bigquery.datasets.get.

Chacun des rôles IAM prédéfinis suivants inclut les autorisations dont vous avez besoin pour créer une vue :

  • roles/bigquery.user
  • roles/bigquery.dataOwner
  • roles/bigquery.dataEditor
  • roles/bigquery.admin

De plus, roles/bigquery.metadataViewer et roles/bigquery.dataViewer, lorsqu'ils sont appliqués au niveau du projet ou de l'organisation, peuvent répertorier tous les ensembles de données du projet.

Pour en savoir plus sur les rôles et les autorisations IAM dans BigQuery, consultez la page Rôles prédéfinis et autorisations.

Répertorier les ensembles de données dans un projet

Pour répertorier les ensembles de données dans un projet, procédez comme suit :

Console

  1. Dans le menu de navigation, cliquez sur Espace de travail SQL.

  2. Dans le panneau Explorateur, développez un nom de projet pour afficher les ensembles de données qu'il contient ou utilisez le champ de recherche pour effectuer une recherche par nom d'ensemble de données.

SQL

Interrogez la vue INFORMATION_SCHEMA.SCHEMATA :

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

    Accéder à BigQuery

  2. Dans l'éditeur de requête, saisissez l'instruction suivante :

    SELECT
      schema_name
    FROM
      PROJECT_ID.INFORMATION_SCHEMA.SCHEMATA;
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID du projet pour lequel lister les ensembles de données disponibles

  3. Cliquez sur Exécuter.

Pour en savoir plus sur l'exécution des requêtes, consultez la page Exécuter des requêtes interactives.

bq

Exécutez la commande bq ls pour répertorier les ensembles de données par ID. Vous pouvez contrôler le résultat à l'aide de l'option --format. Si vous répertoriez un ensemble de données dans un projet autre que votre projet par défaut, ajoutez l'option --project_id à la commande.

Pour répertorier tous les ensembles de données d'un projet, y compris les ensembles de données anonymes, utilisez l'option --all ou le raccourci -a.

Pour répertorier tous les ensembles de données d'un projet, à l'exception des ensembles de données anonymes, utilisez l'option --datasets ou le raccourci -d. Cette option est facultative. Par défaut, les ensembles de données anonymes ne sont pas répertoriés.

Les options supplémentaires comprennent les éléments suivants :

  • --filter : permet de répertorier les ensembles de données qui correspondent à l'expression de filtre. Utilise une liste de clés de libellés et de valeurs séparées par des espaces au format labels.key:value. Pour en savoir plus sur le filtrage des ensembles de données à l'aide de libellés, consultez la page Filtrer des ressources à l'aide de libellés.
  • --max_results ou -n : entier indiquant le nombre maximal de résultats. La valeur par défaut est 50.
bq ls --filter labels.key:value \
--max_results integer \
--format=prettyjson \
--project_id project_id

Remplacez les éléments suivants :

  • key:value : clé et valeur de libellé
  • integer : entier représentant le nombre d'ensembles de données à lister
  • project_id : nom de votre projet

Exemples :

Saisissez la commande suivante pour répertorier les ensembles de données dans votre projet par défaut. L'élément -- format est défini sur "pretty" pour renvoyer une table au format de base.

bq ls --format=pretty

Saisissez la commande suivante pour répertorier les ensembles de données dans myotherproject. L'élément --format est défini sur prettyjson pour renvoyer les résultats détaillés au format JSON.

bq ls --format=prettyjson --project_id myotherproject

Saisissez la commande suivante pour répertorier tous les ensembles de données, y compris les ensembles de données anonymes, dans votre projet par défaut. Dans le résultat, les ensembles de données anonymes commencent par un trait de soulignement.

bq ls -a

Saisissez la commande suivante pour renvoyer plus de résultats que la sortie par défaut, correspondant à 50 ensembles de données dans votre projet par défaut.

bq ls --max_results 60

Saisissez la commande suivante pour répertorier les ensembles de données de votre projet par défaut avec le libellé org:dev.

bq ls --filter labels.org:dev

API

Pour répertorier les ensembles de données à l'aide de l'API, appelez la méthode API datasets.list.

C#

Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour C# décrite 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 C#.


using Google.Cloud.BigQuery.V2;
using System;
using System.Collections.Generic;
using System.Linq;

public class BigQueryListDatasets
{
    public void ListDatasets(
        string projectId = "your-project-id"
    )
    {
        BigQueryClient client = BigQueryClient.Create(projectId);
        // Retrieve list of datasets in project
        List<BigQueryDataset> datasets = client.ListDatasets().ToList();
        // Display the results
        if (datasets.Count > 0)
        {
            Console.WriteLine($"Datasets in project {projectId}:");
            foreach (var dataset in datasets)
            {
                Console.WriteLine($"\t{dataset.Reference.DatasetId}");
            }
        }
        else
        {
            Console.WriteLine($"{projectId} does not contain any datasets.");
        }
    }
}

Go

Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Go décrite 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 sur l'API BigQuery en langage Go.

import (
	"context"
	"fmt"
	"io"

	"cloud.google.com/go/bigquery"
	"google.golang.org/api/iterator"
)

// listDatasets demonstrates iterating through the collection of datasets in a project.
func listDatasets(projectID string, w io.Writer) 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()

	it := client.Datasets(ctx)
	for {
		dataset, err := it.Next()
		if err == iterator.Done {
			break
		}
		if err != nil {
			return err
		}
		fmt.Fprintln(w, dataset.DatasetID)
	}
	return nil
}

Java

Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Java décrite 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.

import com.google.api.gax.paging.Page;
import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQuery.DatasetListOption;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.Dataset;

public class ListDatasets {

  public static void runListDatasets() {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "MY_PROJECT_ID";
    listDatasets(projectId);
  }

  public static void listDatasets(String projectId) {
    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();

      Page<Dataset> datasets = bigquery.listDatasets(projectId, DatasetListOption.pageSize(100));
      if (datasets == null) {
        System.out.println("Dataset does not contain any models");
        return;
      }
      datasets
          .iterateAll()
          .forEach(
              dataset -> System.out.printf("Success! Dataset ID: %s ", dataset.getDatasetId()));
    } catch (BigQueryException e) {
      System.out.println("Project does not contain any datasets \n" + e.toString());
    }
  }
}

Node.js

Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Node.js décrite 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 Node.js.

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

async function listDatasets() {
  // Lists all datasets in current GCP project.

  // Lists all datasets in the specified project
  const [datasets] = await bigquery.getDatasets();
  console.log('Datasets:');
  datasets.forEach(dataset => console.log(dataset.id));
}

PHP

Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour PHP 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 PHP.

use Google\Cloud\BigQuery\BigQueryClient;

/** Uncomment and populate these variables in your code */
// $projectId  = 'The Google project ID';

$bigQuery = new BigQueryClient([
    'projectId' => $projectId,
]);
$datasets = $bigQuery->datasets();
foreach ($datasets as $dataset) {
    print($dataset->id() . PHP_EOL);
}

Python

Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Python décrite 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

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

datasets = list(client.list_datasets())  # Make an API request.
project = client.project

if datasets:
    print("Datasets in project {}:".format(project))
    for dataset in datasets:
        print("\t{}".format(dataset.dataset_id))
else:
    print("{} project does not contain any datasets.".format(project))

Ruby

Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Ruby décrite 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 en langage Ruby.

require "google/cloud/bigquery"

def list_datasets project_id = "your-project-id"
  bigquery = Google::Cloud::Bigquery.new project: project_id

  puts "Datasets in project #{project_id}:"
  bigquery.datasets.each do |dataset|
    puts "\t#{dataset.dataset_id}"
  end
end

Sécurité des ensembles de données

Pour savoir comment contrôler l'accès aux ensembles de données dans BigQuery, consultez la page Contrôler l'accès aux ensembles de données. Pour en savoir plus sur le chiffrement des données, consultez la page Chiffrement au repos.

Étapes suivantes