Mettre à jour les propriétés d'une vue

Ce document explique comment mettre à jour les propriétés d'une vue dans BigQuery. Une fois que vous avez créé une vue, vous pouvez mettre à jour les propriétés suivantes :

Autorisations requises

Pour mettre à jour une vue, vous devez disposer des mêmes autorisations que pour mettre à jour une table. Vous devez bénéficier d'un accès WRITER au niveau de l'ensemble de données ou détenir au niveau du projet un rôle IAM qui comprend les autorisations bigquery.tables.update requises. Voici les rôles IAM prédéfinis au niveau du projet qui incluent les autorisations bigquery.tables.update :

En outre, comme le rôle bigquery.user dispose des autorisations bigquery.datasets.create, un utilisateur ayant le rôle bigquery.user peut mettre à jour toute vue qu'il crée dans l'ensemble de données. 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 autorisations et les rôles IAM dans BigQuery, consultez la page Contrôle des accès.

Mettre à jour la requête SQL d'une vue

Vous pouvez mettre à jour la requête SQL utilisée pour définir une vue selon les méthodes suivantes :

  • Utilisation de la console GCP ou de l'UI Web classique de BigQuery
  • En exécutant la commande bq update de l'outil de ligne de commande
  • En appelant la méthode API tables.patch

Vous pouvez faire passer le dialecte SQL de l'ancien SQL au SQL standard dans la CLI ou l'API. Cette opération n'est pas possible dans la console GCP ou dans l'UI Web classique de BigQuery.

Pour mettre à jour la requête SQL d'une vue, procédez comme suit :

Console

  1. Sélectionnez la vue dans le volet de navigation Ressources.

  2. Cliquez sur l'onglet Details (Détails).

    Afficher les détails

  3. Au-dessus de la zone Requête, cliquez sur le bouton Modifier la requête. Cliquez sur Ouvrir dans la boîte de dialogue qui apparaît.

    Modifier la requête

  4. Modifiez la requête SQL dans la zone Éditeur de requête, puis cliquez sur Save view (Enregistrer la vue).

    Enregistrer l'affichage

  5. Vérifiez que tous les champs sont corrects dans la boîte de dialogue Enregistrer la vue avant de cliquer sur Enregistrer.

Interface utilisateur classique

  1. Sélectionnez la vue.

  2. Dans le panneau View Details (Détails de la vue), cliquez sur Details (Détails).

  3. Sous la zone Query (Requête), cliquez sur Edit Query (Modifier la requête).

  4. Modifiez la requête SQL dans la zone Query (Requête), puis cliquez sur Save View (Enregistrer la vue).

    Mettre à jour la vue

Ligne de commande

Exécutez la commande bq update avec l'indicateur --view. Pour utiliser le SQL standard, ou pour faire passer le dialecte des requêtes de l'ancien SQL au SQL standard, incluez l'indicateur --use_legacy_sql et définissez-le sur false.

Si votre requête fait référence à des ressources externes de fonction définie par l'utilisateur, stockées dans Google Cloud Storage ou dans des fichiers locaux, spécifiez ces ressources à l'aide de l'indicateur --view_udf_resource. L'indicateur --view_udf_resource n'est pas présenté ici. Pour en savoir plus sur l'utilisation des fonctions définies par l'utilisateur, consultez la page Fonctions définies par l'utilisateur en SQL standard.

Si vous mettez à jour une vue 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].

bq update --use_legacy_sql=false --view_udf_resource=[PATH_TO_FILE] --view='[QUERY]' [PROJECT_ID]:[DATASET].[VIEW]

Où :

  • [PATH_TO_FILE] est le chemin de l'URI ou du système de fichiers local permettant d'accéder à un fichier de code, qui doit être chargé et évalué immédiatement en tant que ressource de fonction définie par l'utilisateur utilisée par la vue. Répétez l'indicateur pour spécifier plusieurs fichiers.
  • [QUERY] est une requête SQL standard valide.
  • [PROJECT_ID] correspond à l'ID de votre projet.
  • [DATASET] est un ensemble de données contenant la vue.
  • [VIEW] est le nom de la vue que vous souhaitez mettre à jour.

Exemples :

Saisissez la commande suivante pour mettre à jour la requête SQL d'une vue nommée myview dans mydataset. mydataset se trouve dans le projet par défaut. L'exemple de requête utilisé pour mettre à jour la vue interroge les données de l'ensemble de données public Données sur les noms aux États-Unis.

bq update --use_legacy_sql=false --view 'SELECT name,number FROM `bigquery-public-data.usa_names.usa_1910_current` WHERE gender = "M" ORDER BY number DESC' mydataset.myview

Saisissez la commande suivante pour mettre à jour la requête SQL d'une vue nommée myview dans mydataset. mydataset se trouve dans myotherproject, pas dans le projet par défaut. L'exemple de requête utilisé pour mettre à jour la vue interroge les données de l'ensemble de données public Données sur les noms aux États-Unis.

bq update --use_legacy_sql=false --view 'SELECT name,number FROM `bigquery-public-data.usa_names.usa_1910_current` WHERE gender = "M" ORDER BY number DESC' myotherproject:mydataset.myview

API

Pour mettre à jour une vue, appelez la méthode tables.patch avec une ressource de table contenant une propriété view mise à jour. Étant donné que la méthode tables.update remplace l'intégralité de la ressource de table, il est préférable d'utiliser la méthode tables.patch.

Go

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

// 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")
view := client.Dataset(datasetID).Table(viewID)
meta, err := view.Metadata(ctx)
if err != nil {
	return err
}

newMeta := bigquery.TableMetadataToUpdate{
	// This example updates a view into the shakespeare dataset to exclude works named after kings.
	ViewQuery: "SELECT word, word_count, corpus, corpus_date FROM `bigquery-public-data.samples.shakespeare` WHERE corpus NOT LIKE '%king%'",
}

if _, err := view.Update(ctx, newMeta, meta.ETag); err != nil {
	return err
}

Python

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

# from google.cloud import bigquery
# client = bigquery.Client()
# project = 'my-project'
# source_dataset_id = 'my_source_dataset'
# source_table_id = 'us_states'
# shared_dataset_ref = client.dataset('my_shared_dataset')

# This example shows how to update a shared view of a source table of
# US States. The view's query will be updated to contain only states with
# names starting with 'M'.
view_ref = shared_dataset_ref.table("my_shared_view")
view = bigquery.Table(view_ref)
sql_template = 'SELECT name, post_abbr FROM `{}.{}.{}` WHERE name LIKE "M%"'
view.view_query = sql_template.format(project, source_dataset_id, source_table_id)
view = client.update_table(view, ["view_query"])  # API request

Mettre à jour le délai d'expiration d'une vue

Vous pouvez définir un délai d'expiration par défaut des tables au niveau de l'ensemble de données (qui affecte à la fois les tables et les vues). Vous pouvez également définir le délai d'expiration d'une vue au moment de la création de celle-ci, auquel cas le délai d'expiration par défaut des tables de l'ensemble de données est ignoré. Si vous ne définissez de délai d'expiration dans aucun de ces deux cas, la vue n'expire jamais et vous devez la supprimer manuellement.

À tout moment après la création de la vue, vous pouvez mettre à jour son délai d'expiration selon les méthodes suivantes :

  • Utilisation de l'UI Web classique de BigQuery
    • Actuellement, il est impossible de modifier le délai d'expiration d'une vue dans la console GCP.
  • Utilisation de la commande bq update de la CLI
  • En appelant la méthode API tables.patch

Lorsque vous mettez à jour le délai d'expiration d'une vue, vous devez calculer l'expiration en fonction de ses date et heure de création. Par exemple, si la vue a été créée le 3 janvier 2018 et que nous sommes aujourd'hui le 5 janvier, si vous définissez le délai d'expiration sur 1 jour à l'aide de l'interface utilisateur Web de BigQuery, le délai d'expiration est considéré comme "dans le passé" et la vue est immédiatement supprimée.

Pour mettre à jour le délai d'expiration d'une vue, procédez comme suit :

Console

Vous ne pouvez pas ajouter ni mettre à jour le délai d'expiration d'une vue lorsque vous utilisez l'interface utilisateur Web de la console.

Interface utilisateur classique

Option 1 : Modifier le délai d'expiration manuellement

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

  2. Sur la page Détails de la vue, cliquez sur Détails.

  3. Pour Date/Heure d'expiration, cliquez sur Modifier.

  4. Dans la boîte de dialogue Mettre à jour le délai d'expiration, cliquez sur Dans et saisissez un délai d'expiration en jours.

  5. Cliquez sur OK. Le délai d'expiration mis à jour apparaît sur la page Details (Détails).

    Expiration de la vue

Option 2 : Utiliser une instruction LDD

Les instructions LDD (langage de définition de données) vous permettent de créer et de modifier des tables et des vues à l'aide de la syntaxe de requête en SQL standard.

En savoir plus sur l'utilisation des instructions de langage de définition de données

  1. Cliquez sur Saisir une requête.

  2. Saisissez votre instruction DDL dans la zone de texte Nouvelle requête.

     #standardSQL
     ALTER VIEW mydataset.myview
     SET OPTIONS (
       -- Sets view expiration to timestamp 2025-02-03 12:34:56
       expiration_timestamp=TIMESTAMP "2025-02-03 12:34:56"
     );
     

Ligne de commande

Exécutez la commande bq update avec l'indicateur --expiration. Si vous mettez à jour une vue 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].

bq update --expiration [INTEGER] [PROJECT_ID]:[DATASET].[VIEW]

Où :

  • [INTEGER] est la durée de vie par défaut (en secondes) de la table. La valeur minimale est de 3 600 secondes (une heure). Le délai d'expiration correspond à l'heure actuelle plus la valeur entière.
  • [PROJECT_ID] est l'ID de votre projet.
  • [DATASET] est le nom de l'ensemble de données contenant la vue que vous mettez à jour.
  • [VIEW] est le nom de la vue que vous mettez à jour.

Exemples :

Saisissez la commande suivante pour faire passer le délai d'expiration de myview dans mydataset à cinq jours (432 000 secondes). mydataset se trouve dans le projet par défaut.

bq update --expiration 432000 mydataset.myview

Saisissez la commande suivante pour faire passer le délai d'expiration de myview dans mydataset à cinq jours (432 000 secondes). mydataset se trouve dans myotherproject, pas dans le projet par défaut.

bq update --expiration 432000 myotherproject:mydataset.myview

API

Appelez la méthode tables.patch, puis servez-vous de la propriété expirationTime pour mettre à jour le délai d'expiration de la vue en millisecondes. Étant donné que la méthode tables.update remplace l'intégralité de la ressource de table, il est préférable d'utiliser la méthode tables.patch.

Go

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

// 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")
tableRef := client.Dataset(datasetID).Table(tableID)
meta, err := tableRef.Metadata(ctx)
if err != nil {
	return err
}
update := bigquery.TableMetadataToUpdate{
	ExpirationTime: time.Now().Add(time.Duration(5*24) * time.Hour), // table expiration in 5 days.
}
if _, err = tableRef.Update(ctx, update, meta.ETag); err != nil {
	return err
}

Python

Pour mettre à jour le délai d'expiration d'une vue, vous devez suivre la même procédure que pour mettre à jour celui d'une table.

Avant d'essayer cet exemple, suivez les instructions de configuration de Python décrites 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 sur l'API BigQuery Python.

import datetime
import pytz

# from google.cloud import bigquery
# client = bigquery.Client()
# table_ref = client.dataset('my_dataset').table('my_table')
# table = client.get_table(table_ref)  # API request

assert table.expires is None

# set table to expire 5 days from now
expiration = datetime.datetime.now(pytz.utc) + datetime.timedelta(days=5)
table.expires = expiration
table = client.update_table(table, ["expires"])  # API request

# expiration is stored in milliseconds
margin = datetime.timedelta(microseconds=1000)
assert expiration - margin <= table.expires <= expiration + margin

Mettre à jour la description d'une vue

Vous pouvez mettre à jour la description d'une vue selon les méthodes suivantes :

  • Utilisation de la console GCP ou de l'UI Web classique de BigQuery
  • Utilisation de la commande CLI bq update
  • Appel de la méthode API tables.patch

Pour mettre à jour la description d'une vue, procédez comme suit :

Console

Vous ne pouvez pas ajouter de description lorsque vous créez une vue à l'aide de l'interface utilisateur Web de BigQuery. Une fois la vue créée, vous pouvez ajouter une description sur la page Détails.

  1. Dans la liste Ressources, sélectionnez la vue.

  2. Cliquez sur l'onglet Details (Détails).

Afficher les détails

  1. Cliquez sur l'icône en forme de crayon à côté de Description.

Modifier la description de la vue

  1. Saisissez une description dans la boîte de dialogue. Cliquez sur Mettre à jour pour enregistrer la nouvelle description.

Interface utilisateur classique

Option 1 : Modifier la description manuellement

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

  2. Sur la page Détails de la vue, cliquez sur Détails.

  3. Dans la section Description, cliquez sur Décrire cette vue pour ouvrir la zone de description.

  4. Saisissez une description dans la zone. Cliquez en dehors de la zone pour enregistrer le texte.

    Description de la table

Option 2 : Utiliser une instruction LDD

Les instructions DDL (langage de définition de données) vous permettent de créer et de modifier des tables et des vues à l'aide de la syntaxe de requête SQL standard.

En savoir plus sur l'utilisation des instructions de langage de définition de données

  1. Cliquez sur Saisir une requête.

  2. Saisissez votre instruction DDL dans la zone de texte Nouvelle requête.

     #standardSQL
     ALTER VIEW mydataset.myview
     SET OPTIONS (
       description="Description of myview"
     );
     

Ligne de commande

Exécutez la commande bq update avec l'indicateur --description. Si vous mettez à jour une vue 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].

bq update --description "[DESCRIPTION]" [PROJECT_ID]:[DATASET].[VIEW]

Où :

  • [DESCRIPTION] est le texte décrivant la vue, entre guillemets.
  • [PROJECT_ID] est l'ID de votre projet.
  • [DATASET] est le nom de l'ensemble de données contenant la vue que vous mettez à jour.
  • [VIEW] est le nom de la vue que vous mettez à jour.

Exemples :

Saisissez la commande suivante pour remplacer la description de myview dans mydataset par "Description of myview". mydataset se trouve dans le projet par défaut.

bq update --description "Description of myview" mydataset.myview

Saisissez la commande suivante pour remplacer la description de myview dans mydataset par "Description of myview". mydataset se trouve dans myotherproject, pas dans le projet par défaut.

bq update --description "Description of myview" myotherproject:mydataset.myview

API

Appelez la méthode tables.patch, puis servez-vous de la propriété description pour mettre à jour la description de la vue dans la ressource de table. Étant donné que la méthode tables.update remplace l'intégralité de la ressource de table, la méthode tables.patch est préférable.

Go

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

// 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")
tableRef := client.Dataset(datasetID).Table(tableID)
meta, err := tableRef.Metadata(ctx)
if err != nil {
	return err
}
update := bigquery.TableMetadataToUpdate{
	Description: "Updated description.",
}
if _, err = tableRef.Update(ctx, update, meta.ETag); err != nil {
	return err
}

Java

Pour mettre à jour la description d'une vue, vous devez suivre la même procédure que pour mettre à jour celle d'une table.

Avant d'essayer cet exemple, suivez les instructions de configuration de Java décrites 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 Java.

// String datasetName = "my_dataset_name";
// String tableName = "my_table_name";
// String newDescription = "new_description";

Table beforeTable = bigquery.getTable(datasetName, tableName);
TableInfo tableInfo = beforeTable.toBuilder()
    .setDescription(newDescription)
    .build();
Table afterTable = bigquery.update(tableInfo);

Python

Pour mettre à jour la description d'une vue, vous devez suivre la même procédure que pour mettre à jour celle d'une table.

Avant d'essayer cet exemple, suivez les instructions de configuration de Python décrites 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 sur l'API BigQuery Python.

# from google.cloud import bigquery
# client = bigquery.Client()
# table_ref = client.dataset('my_dataset').table('my_table')
# table = client.get_table(table_ref)  # API request

assert table.description == "Original description."
table.description = "Updated description."

table = client.update_table(table, ["description"])  # API request

assert table.description == "Updated description."

Étapes suivantes

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

Envoyer des commentaires concernant…

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