Gérer les vues

Ce document explique comment gérer les vues dans BigQuery. La gestion des vues BigQuery repose sur les actions suivantes :

Copier des vues

Actuellement, la copie de vues n'est accessible qu'à l'aide de la console GCP.

L'interface utilisateur Web classique, la CLI, l'API REST et les bibliothèques clientes ne permettent pas de copier une vue. À la place, vous devez recréer la vue dans l'ensemble de données cible. Pour vous aider à recréer la vue, vous pouvez copier la requête SQL correspondante à l'aide de la CLI ou de l'interface utilisateur Web classique.

Autorisations requises

Pour copier une vue dans la console GCP, vous devez au minimum disposer des autorisations ci-dessous.

Sur l'ensemble de données source :

  • bigquery.tables.get pour copier les métadonnées d'une vue
  • bigquery.tables.getData pour copier la requête SQL d'une vue

Des autorisations supplémentaires, par exemple bigquery.tables.getData, peuvent être nécessaires pour accéder aux tables référencées par la requête SQL d'une vue.

Sur l'ensemble de données de destination :

  • bigquery.tables.create pour créer la copie de la vue dans l'ensemble de données de destination

Les rôles Cloud IAM prédéfinis suivants incluent des autorisations bigquery.tables.create, bigquery.tables.get et bigquery.tables.getData :

  • bigquery.dataEditor
  • bigquery.dataOwner
  • bigquery.admin

En outre, si un utilisateur possède des autorisations bigquery.datasets.create, lorsqu'il crée un ensemble de données, il obtient également le rôle bigquery.dataOwner qui lui permet d'y accéder. L'accès bigquery.dataOwner donne à l'utilisateur la possibilité de copier des vues à partir de l'ensemble de données source, mais l'accès à l'ensemble de données de destination est toujours requis, sauf si celui-ci a également été créé par l'utilisateur.

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

Copier une vue

Pour copier une vue, procédez comme suit :

Console

  1. Dans le volet de navigation, sélectionnez la vue.

  2. À droite de la fenêtre, cliquez sur Copy View (Copier la vue).

  3. Dans la boîte de dialogue Copy view (Copier la vue) :

    • Dans la section Source, vérifiez que les champs Project name (Nom du projet), Dataset name (Nom de l'ensemble de données) et Table name (Nom de la table) sont corrects.
    • Dans la section Destination :

      • Dans Project name (Nom du projet), choisissez le projet dans lequel vous souhaitez copier la vue.
      • Dans Dataset name (Nom de l'ensemble de données), choisissez l'ensemble de données qui contiendra la vue copiée.
      • Dans Table name (Nom de la table), saisissez le nom de la vue. Vous pouvez renommer la vue en saisissant un nouveau nom dans le champ de saisie. Si vous décidez d'entrer un nouveau nom, celui-ci doit respecter les règles de dénomination des vues.

      Boîte de dialogue Copier la vue

    • Cliquez sur Copy (Copier).

UI classique

L'interface utilisateur Web classique ne permet pas de copier une vue. À la place, vous devez recréer la vue dans l'ensemble de données cible. Pour vous aider à recréer la vue, vous pouvez copier la requête SQL utilisée pour la définir.

Pour copier la requête SQL qui définit une vue, procédez comme suit :

  1. Dans le volet de navigation de l'interface utilisateur, sélectionnez la vue.

  2. Dans le panneau Détails de la vue, cliquez sur Détails.

  3. Copiez le texte dans la zone Requête.

CLI

L'outil de ligne de commande bq ne permet pas de copier une vue. À la place, vous devez recréer la vue dans l'ensemble de données cible. Pour vous aider à recréer la vue, vous pouvez copier la requête SQL utilisée pour la définir.

Pour copier la requête SQL qui définit une vue, exécutez la commande bq show. L'indicateur --format peut être utilisé pour contrôler le résultat. Si vous souhaitez obtenir des informations sur une vue d'un projet autre que celui par défaut, ajoutez l'ID du projet à l'ensemble de données, en respectant le format suivant : project_id:dataset. Pour écrire les propriétés de la vue dans un fichier, ajoutez > path_to_file à la commande.

bq show \
--format=prettyjson \
project_id:dataset.view > path_to_file

Où :

  • project_id est l'ID du projet.
  • dataset est le nom de l'ensemble de données.
  • view est le nom de la vue.
  • path_to_file est le chemin d'accès au fichier de sortie sur votre machine locale.

Exemples :

Saisissez la commande suivante pour afficher des informations sur myview dans mydataset. mydataset se trouve dans le projet par défaut.

bq show --format=prettyjson mydataset.myview

Saisissez la commande suivante pour afficher des informations sur myview dans mydataset. mydataset se trouve dans myotherproject, pas dans le projet par défaut. Les propriétés de la vue sont écrites dans un fichier local : /tmp/myview.json.

bq show \
--format=prettyjson \
myotherproject:mydataset.myview > /tmp/myview.json

API

L'API REST ne permet pas de copier une vue. À la place, vous devez recréer la vue dans l'ensemble de données cible. Pour en savoir plus sur la création d'une vue à l'aide de l'API REST, consultez la section Créer une vue.

Renommer une vue

Actuellement, vous ne pouvez renommer une vue que si vous la copiez à l'aide de la console GCP. Pour découvrir comment renommer une vue au moment de la copie, reportez-vous à la section Copier une vue.

L'interface utilisateur Web classique, la CLI, l'API et les bibliothèques clientes ne permettent pas de renommer une vue. À la place, vous devez recréer la vue avec le nouveau nom.

Supprimer des vues

Vous pouvez supprimer une vue à l'aide des méthodes suivantes :

  • Utilisation de la console GCP ou de l'UI Web classique de BigQuery
  • Utilisation de la commande bq rm de l'outil de ligne de commande
  • Appel de la méthode API tables.delete

Actuellement, quelle que soit la méthode utilisée, vous ne pouvez supprimer qu'une vue à la fois.

Pour supprimer automatiquement des vues après une période donnée, définissez le délai d'expiration par défaut au niveau de l'ensemble de données ou spécifiez le délai d'expiration au moment où vous créez les vues.

Autorisations requises

Pour supprimer une vue, vous devez au minimum disposer des autorisations bigquery.tables.delete et bigquery.tables.get. Les rôles Cloud IAM prédéfinis suivants incluent des autorisations bigquery.tables.delete et bigquery.tables.get :

  • bigquery.dataOwner
  • bigquery.dataEditor
  • bigquery.admin

En outre, si un utilisateur possède des autorisations bigquery.datasets.create, lorsqu'il crée un ensemble de données, il obtient également le rôle bigquery.dataOwner qui lui permet d'y accéder. L'accès bigquery.dataOwner donne à l'utilisateur la possibilité de supprimer des vues de l'ensemble de données.

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

Supprimer une vue

Pour supprimer une vue :

Console

  1. Sélectionnez votre vue dans le panneau Ressources. Cliquez sur Supprimer la vue dans la partie droite de la fenêtre.

  2. Saisissez le nom de la vue dans la boîte de dialogue, puis cliquez sur Supprimer pour confirmer.

UI classique

  1. Cliquez sur la flèche vers le bas flèche vers le bas située à côté du nom de la vue dans la barre de navigation, puis cliquez sur Supprimer la vue.

  2. Lorsque vous y êtes invité, cliquez sur OK pour confirmer.

CLI

Pour supprimer une vue, exécutez la commande bq rm avec l'indicateur --table (ou le raccourci -t). Lorsque vous supprimez une vue à l'aide de la CLI, vous devez confirmer l'action. L'indicateur --force (ou le raccourci -f) vous permet d'ignorer cette étape.

Si la vue se trouve dans un ensemble de données d'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.

bq rm \
-f \
-t \
project_id:dataset.view

Où :

  • project_id est l'ID du projet.
  • dataset est le nom de l'ensemble de données contenant la table.
  • view est le nom de la vue que vous supprimez.

Exemples :

Saisissez la commande suivante pour supprimer myview de mydataset. mydataset se trouve dans le projet par défaut.

bq rm -t mydataset.myview

Saisissez la commande suivante pour supprimer myview de mydataset. mydataset se trouve dans myotherproject, et non dans le projet par défaut.

bq rm -t myotherproject:mydataset.myview

Saisissez la commande suivante pour supprimer myview de mydataset. mydataset se trouve dans le projet par défaut. La commande se sert du raccourci -f pour contourner la confirmation.

bq rm -f -t mydataset.myview

API

Appelez la méthode API tables.delete, puis spécifiez la vue à supprimer à l'aide du paramètre tableId.

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;

public class BigQueryDeleteTable
{
    public void DeleteTable(
        string projectId = "your-project-id",
        string datasetId = "your_dataset_id",
        string tableId = "your_table_id"
    )
    {
        BigQueryClient client = BigQueryClient.Create(projectId);
        client.DeleteTable(datasetId, tableId);
        Console.WriteLine($"Table {tableId} deleted.");
    }
}

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 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")
table := client.Dataset(datasetID).Table(tableID)
if err := table.Delete(ctx); err != nil {
	return err
}

Java

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

TableId tableId = TableId.of(projectId, datasetName, tableName);
boolean deleted = bigquery.delete(tableId);
if (deleted) {
  // the table was deleted
} else {
  // the table was not found
}

Node.js

Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Node.js 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 deleteTable() {
  // Deletes "my_table" from "my_dataset".

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

  // Delete the table
  await bigquery
    .dataset(datasetId)
    .table(tableId)
    .delete();

  console.log(`Table ${tableId} deleted.`);
}

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';
// $datasetId = 'The BigQuery dataset ID';
// $tableId = 'The BigQuery table ID';

$bigQuery = new BigQueryClient([
    'projectId' => $projectId,
]);
$dataset = $bigQuery->dataset($datasetId);
$table = $dataset->table($tableId);
$table->delete();
printf('Deleted table %s.%s' . PHP_EOL, $datasetId, $tableId);

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

from google.cloud import bigquery

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

# TODO(developer): Set table_id to the ID of the table to fetch.
# table_id = 'your-project.your_dataset.your_table'

# If the table does not exist, delete_table raises
# google.api_core.exceptions.NotFound unless not_found_ok is True
client.delete_table(table_id, not_found_ok=True)
print("Deleted table '{}'.".format(table_id))

Ruby

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

require "google/cloud/bigquery"

def delete_table dataset_id = "my_dataset_id", table_id = "my_table_id"
  bigquery = Google::Cloud::Bigquery.new
  dataset  = bigquery.dataset dataset_id
  table    = dataset.table table_id

  table.delete

  puts "Table #{table_id} deleted."
end

Étapes suivantes

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

Envoyer des commentaires concernant…

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