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, vous ne pouvez copier des vues qu'avec Cloud Console.

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

Au minimum, pour copier une vue dans Cloud Console, vous devez disposer des autorisations suivantes.

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 de la vue

Des autorisations supplémentaires, telles que bigquery.tables.getData, peuvent être nécessaires pour accéder aux tables référencées par la requête SQL de la 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 les autorisations bigquery.tables.create, bigquery.tables.get et bigquery.tables.getData :

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

En outre, si un utilisateur possède les autorisations bigquery.datasets.create, il obtient également un accès bigquery.dataOwner à l'ensemble de données qu'il crée. 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 de saisir un nouveau nom, celui-ci doit respecter les règles de dénomination des vues.

      Boîte de dialogue Copy view (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.

bq

L'outil de ligne de commande bq n'est pas compatible avec la copie d'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 la sortie. Si vous souhaitez obtenir des informations sur une vue se trouvant 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 é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 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 ordinateur local.

Exemples :

Saisissez la commande suivante pour afficher des informations sur myview dans mydataset. mydataset se trouve dans votre 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, et non dans votre 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 Cloud Console. 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 :

  • En utilisant Cloud Console ou l'UI Web classique de BigQuery
  • En utilisant la commande bq rm de l'outil de ligne de commande
  • En appelant 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 les autorisations bigquery.tables.delete et bigquery.tables.get :

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

En outre, si un utilisateur possède les autorisations bigquery.datasets.create, il obtient également un accès bigquery.dataOwner à l'ensemble de données qu'il crée. L'accès bigquery.dataOwner permet à l'utilisateur de supprimer des vues dans 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 l'action.

bq

Exécutez la commande bq rm avec l'option --table (ou le raccourci -t) pour supprimer une table. Lorsque vous supprimez une vue à l'aide de la CLI, vous devez confirmer l'action. Vous pouvez utiliser l'indicateur --force (ou le raccourci -f) pour ignorer la confirmation.

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 votre 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 votre projet par défaut.

bq rm -t myotherproject:mydataset.myview

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

bq rm -f -t mydataset.myview

API

Appelez la méthode API tables.delete et 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 sur l'API BigQuery Go.

import (
	"context"
	"fmt"

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

// deleteTable demonstrates deletion of a BigQuery table.
func deleteTable(projectID, datasetID, tableID string) error {
	// projectID := "my-project-id"
	// datasetID := "mydataset"
	// tableID := "mytable"
	ctx := context.Background()
	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	table := client.Dataset(datasetID).Table(tableID)
	if err := table.Delete(ctx); err != nil {
		return err
	}
	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 sur l'API BigQuery en langage 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 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 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 : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery en langage Python.


from google.cloud import bigquery

# 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)  # Make an API request.
print("Deleted table '{}'.".format(table_id))

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