Obtenir des informations sur les ensembles de données

Ce document explique comment obtenir des informations ou des métadonnées sur des ensembles de données dans BigQuery.

Vous pouvez obtenir des informations sur les ensembles de données selon l'une des méthodes suivantes :

  • En utilisant Cloud Console ou l'UI Web classique de BigQuery
  • En utilisant la commande CLI bq show
  • En appelant la méthode API datasets.get
  • En interrogeant les vues INFORMATION_SCHEMA (version bêta)
  • En utilisant les bibliothèques clientes

Autorisations requises

Pour obtenir des informations ou des métadonnées sur un ensemble de données, vous devez au minimum disposer des autorisations bigquery.datasets.get. Les rôles Cloud IAM prédéfinis suivants incluent les autorisations bigquery.datasets.get :

  • bigquery.user
  • bigquery.metadataViewer
  • bigquery.dataViewer
  • bigquery.dataOwner
  • bigquery.dataEditor
  • bigquery.admin

Pour en savoir plus sur les rôles et les autorisations IAM dans BigQuery, consultez la page Contrôle des accès.

Obtenir des informations sur les ensembles de données

Pour obtenir des informations sur les ensembles de données d'un projet, procédez comme suit :

Console

Cliquez sur le nom de l'ensemble de données dans le panneau Resources (Ressources). Sous l'Éditeur de requête, la description et les détails de l'ensemble de données devraient s'afficher. Les tables d'un ensemble de données sont imbriquées dans le panneau Resources (Ressources).

Afficher l'ensemble de données

Par défaut, les ensembles de données anonymes sont masqués dans l'UI Web de BigQuery. Pour afficher des informations sur les ensembles de données anonymes, utilisez la CLI ou l'API.

UI classique

Cliquez sur le nom de l'ensemble de données. La page Dataset Details (Détails de l'ensemble de données) affiche la description, les détails et les tables de l'ensemble de données.

Afficher l'ensemble de données

Par défaut, les ensembles de données anonymes sont masqués dans l'UI Web de BigQuery. Pour afficher des informations sur les ensembles de données anonymes, utilisez la CLI ou l'API.

CLI

Exécutez la commande bq show. L'option --format peut être utilisée pour contrôler le résultat. Si vous souhaitez obtenir des informations sur un ensemble de données dans un projet autre que celui par défaut, ajoutez l'ID du projet au nom de l'ensemble de données, en respectant le format suivant : project_id:dataset.

Pour afficher des informations sur un ensemble de données anonyme, exécutez la commande bq ls --all pour répertorier tous les ensembles de données, puis utilisez le nom de l'ensemble de données anonyme dans la commande bq show.

bq show --format=prettyjson project_id:dataset

Où :

  • project_id est le nom de votre projet.
  • dataset est le nom de l'ensemble de données.

Exemples :

Saisissez la commande suivante pour afficher des informations sur mydataset dans votre projet par défaut :

bq show --format=prettyjson mydataset

Saisissez la commande suivante pour afficher des informations sur mydataset dans myotherproject.

bq show --format=prettyjson myotherproject:mydataset

Saisissez la commande suivante pour afficher des informations sur un ensemble de données anonyme _1234abcd56efgh78ijkl1234 dans votre projet par défaut :

bq show --format=prettyjson _1234abcd56efgh78ijkl1234

API

Appelez la méthode datasets.get et définissez tous les paramètres pertinents.

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 sur l'utilisation des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API BigQuery Go.

import (
	"context"
	"fmt"
	"io"

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

// printDatasetInfo demonstrates fetching dataset metadata and printing some of it to an io.Writer.
func printDatasetInfo(w io.Writer, projectID, datasetID string) error {
	// projectID := "my-project-id"
	// datasetID := "mydataset"
	ctx := context.Background()
	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}

	meta, err := client.Dataset(datasetID).Metadata(ctx)
	if err != nil {
		return err
	}

	fmt.Fprintf(w, "Dataset ID: %s\n", datasetID)
	fmt.Fprintf(w, "Description: %s\n", meta.Description)
	fmt.Fprintln(w, "Labels:")
	for k, v := range meta.Labels {
		fmt.Fprintf(w, "\t%s: %s", k, v)
	}
	fmt.Fprintln(w, "Tables:")
	it := client.Dataset(datasetID).Tables(ctx)

	cnt := 0
	for {
		t, err := it.Next()
		if err == iterator.Done {
			break
		}
		cnt++
		fmt.Fprintf(w, "\t%s\n", t.TableID)
	}
	if cnt == 0 {
		fmt.Fprintln(w, "\tThis dataset does not contain any tables.")
	}
	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 sur l'utilisation des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery Java.

DatasetId datasetId = DatasetId.of(projectId, datasetName);
Dataset dataset = bigquery.getDataset(datasetId);

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 sur l'utilisation des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API BigQuery Node.js.

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

async function getDataset() {
  // Retrieves dataset named "my_dataset".

  /**
   * TODO(developer): Uncomment the following lines before running the sample
   */
  // const datasetId = "my_dataset";

  // Retrieve dataset reference
  const [dataset] = await bigquery.dataset(datasetId).get();

  console.log('Dataset:');
  console.log(dataset.metadata.datasetReference);
}
getDataset();

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 sur l'utilisation des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery en langage Python.

# TODO(developer): Import the client library.
# from google.cloud import bigquery

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

# TODO(developer): Set dataset_id to the ID of the dataset to fetch.
# dataset_id = 'your-project.your_dataset'

dataset = client.get_dataset(dataset_id)  # Make an API request.

full_dataset_id = "{}.{}".format(dataset.project, dataset.dataset_id)
friendly_name = dataset.friendly_name
print(
    "Got dataset '{}' with friendly_name '{}'.".format(
        full_dataset_id, friendly_name
    )
)

# View dataset properties.
print("Description: {}".format(dataset.description))
print("Labels:")
labels = dataset.labels
if labels:
    for label, value in labels.items():
        print("\t{}: {}".format(label, value))
else:
    print("\tDataset has no labels defined.")

# View tables in dataset.
print("Tables:")
tables = list(client.list_tables(dataset))  # Make an API request(s).
if tables:
    for table in tables:
        print("\t{}".format(table.table_id))
else:
    print("\tThis dataset does not contain any tables.")

INFORMATION_SCHEMA (version bêta)

INFORMATION_SCHEMA est une série de vues offrant un accès aux métadonnées sur les ensembles de données, les routines, les tables et les vues.

Vue SCHEMATA

Lorsque vous interrogez la vue INFORMATION_SCHEMA.SCHEMATA, les résultats de la requête contiennent une ligne pour chaque ensemble de données d'un projet auquel l'utilisateur actuel a accès.

La vue INFORMATION_SCHEMA.SCHEMATA présente le schéma suivant :

Nom de la colonne Type de données Valeur
CATALOG_NAME STRING Nom du projet qui contient l'ensemble de données
SCHEMA_NAME STRING Nom de l'ensemble de données (également appelé datasetId)
SCHEMA_OWNER STRING La valeur est toujours NULL
CREATION_TIME TIMESTAMP Date/Heure de création de l'ensemble de données
LAST_MODIFIED_TIME TIMESTAMP Date/Heure de la dernière modification de l'ensemble de données
LOCATION STRING Emplacement géographique de l'ensemble de données

Exemples

L'exemple suivant récupère toutes les colonnes de la vue INFORMATION_SCHEMA.SCHEMATA, à l'exception de schema_owner qui est réservée en vue d'une utilisation ultérieure. Les métadonnées renvoyées concernent tous les ensembles de données du projet par défaut (myproject).

Pour exécuter la requête sur un projet autre que celui par défaut, ajoutez l'ID du projet au nom de l'ensemble de données, en respectant le format suivant : `project_id`.INFORMATION_SCHEMA.view Par exemple : `myproject`.INFORMATION_SCHEMA.SCHEMATA.

Pour exécuter la requête :

Console

  1. Ouvrez l'UI Web de BigQuery dans Cloud Console.

    Accéder à Cloud Console

  2. Saisissez la requête SQL standard suivante dans la zone Éditeur de requête. INFORMATION_SCHEMA requiert la syntaxe SQL standard. Le langage SQL standard est la syntaxe par défaut dans Cloud Console.

    SELECT
     * EXCEPT(schema_owner)
    FROM
     INFORMATION_SCHEMA.SCHEMATA
    
  3. Cliquez sur Exécuter.

Ligne de commande

Exécutez la commande query, puis spécifiez la syntaxe SQL standard à l'aide de l'option --nouse_legacy_sql ou --use_legacy_sql=false. La syntaxe SQL standard est requise pour les requêtes INFORMATION_SCHEMA.

Pour exécuter la requête, saisissez :

bq query --nouse_legacy_sql \
'SELECT
   * EXCEPT(schema_owner)
 FROM
   INFORMATION_SCHEMA.SCHEMATA'

Les résultats doivent se présenter sous la forme suivante :

  +----------------+---------------+---------------------+---------------------+-----------------+
  |  catalog_name  |  schema_name  |    creation_time    | last_modified_time  |    location     |
  +----------------+---------------+---------------------+---------------------+-----------------+
  | myproject      | mydataset1    | 2018-11-07 19:50:24 | 2018-11-07 19:50:24 | US              |
  | myproject      | mydataset2    | 2018-07-16 04:24:22 | 2018-07-16 04:24:22 | US              |
  | myproject      | mydataset3    | 2018-02-07 21:08:45 | 2018-05-01 23:32:53 | asia-northeast1 |
  +----------------+---------------+---------------------+---------------------+-----------------+
  

Vue SCHEMATA_OPTIONS

Lorsque vous interrogez la vue INFORMATION_SCHEMA.SCHEMATA_OPTIONS, les résultats de la requête contiennent une ligne pour chaque ensemble de données d'un projet auquel l'utilisateur actuel a accès.

La vue INFORMATION_SCHEMA.SCHEMATA_OPTIONS présente le schéma suivant :

Nom de la colonne Type de données Valeur
CATALOG_NAME STRING Nom du projet qui contient l'ensemble de données
SCHEMA_NAME STRING Nom de l'ensemble de données (également appelé datasetId)
OPTION_NAME STRING Une des valeurs de nom figurant dans la table d'options
OPTION_TYPE STRING Une des valeurs de type de données figurant dans la table d'options
OPTION_VALUE STRING Une des options de valeur figurant dans la table d'options

Table d'options
OPTION_NAME OPTION_TYPE OPTION_VALUE
default_table_expiration_days FLOAT64 Durée de vie par défaut, en jours, de toutes les tables de l'ensemble de données
friendly_name STRING Nom descriptif de l'ensemble de données
description STRING Description de l'ensemble de données
labels ARRAY<STRUCT<STRING, STRING>> Tableau de valeurs STRUCT représentant les libellés de l'ensemble de données

Exemples

Exemple 1 :

L'exemple suivant récupère les délais d'expiration de table par défaut pour tous les ensembles de données de votre projet par défaut (myproject) en interrogeant la vue INFORMATION_SCHEMATA.SCHEMATA_OPTIONS.

Pour exécuter la requête sur un projet autre que celui par défaut, ajoutez l'ID du projet au nom de l'ensemble de données, en respectant le format suivant : `project_id`.INFORMATION_SCHEMA.view Par exemple : `myproject`.INFORMATION_SCHEMA.SCHEMATA_OPTIONS.

Pour exécuter la requête :

Console

  1. Ouvrez l'UI Web de BigQuery dans Cloud Console.

    Accéder à Cloud Console

  2. Saisissez la requête SQL standard suivante dans la zone Éditeur de requête. INFORMATION_SCHEMA requiert la syntaxe SQL standard. Le langage SQL standard est la syntaxe par défaut dans Cloud Console.

    SELECT
     *
    FROM
     INFORMATION_SCHEMA.SCHEMATA_OPTIONS
    WHERE
     option_name="default_table_expiration_days"
    
  3. Cliquez sur Exécuter.

Ligne de commande

Exécutez la commande query, puis spécifiez la syntaxe SQL standard à l'aide de l'option --nouse_legacy_sql ou --use_legacy_sql=false. La syntaxe SQL standard est requise pour les requêtes INFORMATION_SCHEMA.

Pour exécuter la requête, saisissez :

bq query --nouse_legacy_sql \
'SELECT
   *
 FROM
   INFORMATION_SCHEMA.SCHEMATA_OPTIONS
 WHERE
   option_name="default_table_expiration_days"'

Les résultats doivent se présenter sous la forme suivante :

  +----------------+---------------+-------------------------------+-------------+---------------------+
  |  catalog_name  |  schema_name  |          option_name          | option_type |    option_value     |
  +----------------+---------------+-------------------------------+-------------+---------------------+
  | myproject      | mydataset3    | default_table_expiration_days | FLOAT64     | 0.08333333333333333 |
  | myproject      | mydataset2    | default_table_expiration_days | FLOAT64     | 90.0                |
  | myproject      | mydataset1    | default_table_expiration_days | FLOAT64     | 30.0                |
  +----------------+---------------+-------------------------------+-------------+---------------------+
  

Exemple 2 :

L'exemple suivant récupère les libellés de tous les ensembles de données de votre projet par défaut (myproject) en interrogeant la vue INFORMATION_SCHEMATA.SCHEMATA_OPTIONS.

Pour exécuter la requête sur un projet autre que celui par défaut, ajoutez l'ID du projet au nom de l'ensemble de données, en respectant le format suivant : `project_id`.INFORMATION_SCHEMA.view. Par exemple : `myproject`.INFORMATION_SCHEMA.SCHEMATA_OPTIONS.

Pour exécuter la requête :

Console

  1. Ouvrez l'UI Web de BigQuery dans Cloud Console.

    Accéder à Cloud Console

  2. Saisissez la requête SQL standard suivante dans la zone Éditeur de requête. INFORMATION_SCHEMA requiert la syntaxe SQL standard. Le langage SQL standard est la syntaxe par défaut dans Cloud Console.

    SELECT
     *
    FROM
     INFORMATION_SCHEMA.SCHEMATA_OPTIONS
    WHERE
     option_name="labels"
    
  3. Cliquez sur Exécuter.

Ligne de commande

Exécutez la commande query, puis spécifiez la syntaxe SQL standard à l'aide de l'option --nouse_legacy_sql ou --use_legacy_sql=false. La syntaxe SQL standard est requise pour les requêtes INFORMATION_SCHEMA.

Pour exécuter la requête, saisissez :

bq query --nouse_legacy_sql \
'SELECT
   *
 FROM
   INFORMATION_SCHEMA.SCHEMATA_OPTIONS
 WHERE
   option_name="labels"'

Les résultats doivent se présenter sous la forme suivante :

  +----------------+---------------+-------------+---------------------------------+------------------------+
  |  catalog_name  |  schema_name  | option_name |          option_type            |      option_value      |
  +----------------+---------------+-------------+---------------------------------+------------------------+
  | myproject      | mydataset1    | labels      | ARRAY<STRUCT<STRING, STRING>>   | [STRUCT("org", "dev")] |
  | myproject      | mydataset2    | labels      | ARRAY<STRUCT<STRING, STRING>>   | [STRUCT("org", "dev")] |
  +----------------+---------------+-------------+---------------------------------+------------------------+
  

Étapes suivantes