Gérer les vues

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

Copier une vue

Actuellement, aucune méthode ne permet de copier une vue d'un ensemble de données à un autre. 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 de l'ancienne vue. Pour copier la requête SQL qui définit une vue :

Console

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

  2. Cliquez sur Details (Détails) sous Query editor (Éditeur de requête).

    Afficher les détails

  3. Copiez le texte dans la zone de Query (Requête) de l'onglet Details (Détails).

    Afficher la requête

UI classique

  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.

Ligne de commande

Exécutez la commande bq show. Vous pouvez contrôler la sortie à l'aide de l'indicateur --format. Si vous obtenez 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] correspond à l'ID de votre 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

Renommer une vue

Actuellement, vous ne pouvez pas modifier le nom d'une vue existante. Si vous devez changer le nom de la vue, recréez-la 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 d'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 des vues au moment de leur création.

Autorisations requises

Pour supprimer une vue, vous devez disposer des mêmes autorisations que pour supprimer une table. Vous devez bénéficier d'un accès OWNER au niveau de l'ensemble de données, ou vous devez détenir un rôle IAM (au niveau du projet) qui comprend les autorisations bigquery.tables.delete. Les rôles IAM ci-dessous, prédéfinis au niveau du projet, incluent les autorisations bigquery.tables.delete :

Les utilisateurs auxquels est attribué un rôle prédéfini au niveau du projet peuvent supprimer des vues dans n'importe quel ensemble de données du projet. Ceux disposant d'autorisations OWNER au niveau de l'ensemble de données ne peuvent supprimer des vues que dans cet ensemble de données.

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

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

Supprimer une vue

Pour supprimer une vue :

UI classique

  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.

Ligne de commande

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 de votre 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, pas 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# 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 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');

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";

  // Create a client
  const bigqueryClient = new BigQuery();

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

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

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 cet exemple, suivez la procédure de configuration de Python dans le guide de démarrage rapide de BigQuery à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de 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.