Gérer les vues matérialisées
Ce document explique comment gérer les vues matérialisées dans BigQuery.
La gestion BigQuery des vues matérialisées comprend les opérations suivantes :
- Modifier les vues matérialisées
- Répertorier les vues matérialisées
- Obtenir des informations sur les vues matérialisées
- Supprimer les vues matérialisées
- Actualiser les vues matérialisées
Pour en savoir plus sur les vues matérialisées, consultez les pages suivantes :
- Présentation des vues matérialisées
- Créer des vues matérialisées
- Utiliser les vues matérialisées
- Surveiller les vues matérialisées
Avant de commencer
Attribuez aux utilisateurs des rôles IAM (Identity and Access Management) incluant les autorisations nécessaires pour effectuer l'ensemble des tâches du présent document. Les autorisations requises pour effectuer une tâche (le cas échéant) sont répertoriées dans la section "Autorisations requises" de la tâche.
Modifier les vues matérialisées
Vous pouvez modifier une vue matérialisée via la console Google Cloud ou l'outil de ligne de commande bq, à l'aide du langage de définition de données (LDD) avec ALTER MATERIALIZED
VIEW
et SET OPTIONS
. Pour obtenir la liste des options des vues matérialisées, consultez materialized_view_set_options_list
.
Voici un exemple où enable_refresh
est défini sur true
. Adaptez-le à votre cas d'utilisation, le cas échéant.
Autorisations requises
Pour modifier les vues matérialisées, vous avez besoin des autorisations IAM bigquery.tables.get
et bigquery.tables.update
.
Chacun des rôles IAM prédéfinis suivants inclut les autorisations dont vous avez besoin pour modifier une vue matérialisée :
bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
Pour en savoir plus sur BigQuery Identity and Access Management (IAM), consultez la page Rôles et autorisations prédéfinis.
SQL
Pour modifier une vue matérialisée, utilisez l'instruction LDD ALTER MATERIALIZED VIEW SET OPTIONS
:
Dans la console Google Cloud, accédez à la page BigQuery.
Dans l'éditeur de requête, saisissez l'instruction suivante :
ALTER MATERIALIZED VIEW PROJECT.DATASET.MATERIALIZED_VIEW SET OPTIONS (enable_refresh = true);
Remplacez les éléments suivants :
PROJECT
: nom du projet contenant la vue matérialiséeDATASET
: nom de l'ensemble de données contenant la vue matérialiséeMATERIALIZED_VIEW
: nom de la vue matérialisée que vous souhaitez modifier
Cliquez sur
Exécuter.
Pour en savoir plus sur l'exécution des requêtes, consultez Exécuter une requête interactive.
bq
Exécutez la commande bq update
:
bq update \ --enable_refresh=true \ --refresh_interval_ms= \ PROJECT.DATASET.MATERIALIZED_VIEW
Java
Avant d'essayer cet exemple, suivez les instructions de configuration pour Java du 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 pour Java.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Répertorier les vues matérialisées
Vous pouvez répertorier des vues matérialisées via la console Google Cloud, l'outil de ligne de commande bq ou l'API BigQuery.
Autorisations requises
Pour répertorier les vues matérialisées d'un ensemble de données, vous devez disposer de l'autorisation IAM bigquery.tables.list
.
Chacun des rôles IAM prédéfinis suivants inclut les autorisations dont vous avez besoin pour répertorier les vues matérialisées d'un ensemble de données :
roles/bigquery.user
roles/bigquery.metadataViewer
roles/bigquery.dataViewer
roles/bigquery.dataOwner
roles/bigquery.dataEditor
roles/bigquery.admin
Pour en savoir plus sur les rôles et les autorisations IAM dans IAM, consultez la page Rôles prédéfinis et autorisations.
Le processus permettant de répertorier les vues matérialisées est identique à celui utilisé pour répertorier les tables. Pour répertorier les vues matérialisées dans un ensemble de données :
Console
Dans le panneau Explorateur, développez votre projet et sélectionnez un ensemble de données.
Faites défiler la liste pour voir les tables de l'ensemble de données. Les tables, les vues et les vues matérialisées sont identifiées par des icônes différentes.
bq
Exécutez la commande bq ls
. L'option --format
peut être utilisée pour contrôler le résultat. Si vous répertoriez des vues matérialisées dans un projet autre que votre projet par défaut, ajoutez l'ID du projet à l'ensemble de données, en respectant le format suivant : project_id:dataset
.
bq ls --format=pretty project_id:dataset
Où :
- project_id est l'ID de votre projet.
- dataset est le nom de l'ensemble de données.
Lorsque vous exécutez la commande, le champ Type
affiche le type de table.
Exemple :
+-------------------------+--------------------+----------------------+-------------------+ | tableId | Type | Labels | Time Partitioning | +-------------------------+--------------------+----------------------+-------------------+ | mytable | TABLE | department:shipping | | | mymatview | MATERIALIZED_VIEW | | | +-------------------------+--------------------+----------------------+-------------------+
Exemples :
Saisissez la commande suivante pour répertorier les vues matérialisées de l'ensemble de données mydataset
dans votre projet par défaut.
bq ls --format=pretty mydataset
Saisissez la commande suivante pour répertorier les vues matérialisées de l'ensemble de données mydataset
dans myotherproject
.
bq ls --format=pretty myotherproject:mydataset
API
Pour répertorier les vues matérialisées à l'aide de l'API, appelez la méthode tables.list
.
Go
Avant d'essayer cet exemple, suivez les instructions de configuration pour Go du 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 pour Go.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Python
Avant d'essayer cet exemple, suivez les instructions de configuration pour Python du 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 pour Python.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Obtenir des informations sur les vues matérialisées
Vous pouvez obtenir des informations sur une vue matérialisée à l'aide de SQL, de l'outil de ligne de commande bq ou de l'API BigQuery.
Autorisations requises
Pour interroger des informations sur une vue matérialisée, vous devez disposer des autorisations IAM (Identity and Access Management) suivantes :
bigquery.tables.get
bigquery.tables.list
bigquery.routines.get
bigquery.routines.list
Chacun des rôles IAM prédéfinis suivants inclut les autorisations ci-dessus :
roles/bigquery.metadataViewer
roles/bigquery.dataViewer
roles/bigquery.admin
Pour plus d'informations sur les autorisations BigQuery, consultez la page Contrôle des accès avec IAM.
Pour obtenir des informations sur une vue matérialisée, y compris les éventuelles instances dupliquées de vues matérialisées dépendantes, procédez comme suit :
SQL
Pour obtenir des informations sur les vues matérialisées, interrogez la vue INFORMATION_SCHEMA.TABLES
:
Dans la console Google Cloud, accédez à la page BigQuery.
Dans l'éditeur de requête, saisissez l'instruction suivante :
SELECT * FROM PROJECT_ID.DATASET_ID.INFORMATION_SCHEMA.TABLES WHERE table_type = 'MATERIALIZED VIEW';
Remplacez les éléments suivants :
PROJECT_ID
: nom du projet contenant les vues matérialiséesDATASET_ID
: nom de l'ensemble de données contenant les vues matérialisées
Cliquez sur
Exécuter.
Pour en savoir plus sur l'exécution des requêtes, consultez Exécuter une requête interactive.
bq
Exécutez la commande bq show
:
bq show --project=project_id --format=prettyjson dataset.materialized_view
Remplacez les éléments suivants :
- project_id : ID du projet. Il vous suffit d'inclure cette option pour obtenir des informations sur une vue matérialisée dans un projet différent du projet par défaut.
- dataset : nom de l'ensemble de données contenant la vue matérialisée.
- materialized_view : nom de la vue matérialisée pour laquelle vous souhaitez obtenir des informations.
Exemple :
Saisissez la commande suivante pour afficher des informations sur la vue matérialisée my_mv
dans l'ensemble de données report_views
du projet myproject
.
bq show --project=myproject --format=prettyjson report_views.my_mv
API
Pour obtenir des informations sur les vues matérialisées à l'aide de l'API, appelez la méthode tables.get
.
Supprimer les vues matérialisées
Vous pouvez supprimer une vue matérialisée à l'aide de la console Google Cloud, de l'outil de ligne de commande bq ou de l'API.
La suppression d'une vue matérialisée supprime également toutes les autorisations associées à cette vue matérialisée. Lorsque vous recréez une vue matérialisée supprimée, vous devez également reconfigurer manuellement les autorisations d'accès qui lui sont associées.
Autorisations requises
Pour créer des vues matérialisées, vous devez disposer de l'autorisation IAM bigquery.tables.delete
.
Chacun des rôles IAM prédéfinis suivants inclut les autorisations dont vous avez besoin pour supprimer une vue matérialisée :
bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
Pour en savoir plus sur BigQuery Identity and Access Management (IAM), consultez la page Rôles et autorisations prédéfinis.
SQL
Pour supprimer une vue matérialisée, utilisez l'instruction LDD DROP MATERIALIZED VIEW
:
Dans la console Google Cloud, accédez à la page BigQuery.
Dans l'éditeur de requête, saisissez l'instruction suivante :
DROP MATERIALIZED VIEW PROJECT.DATASET.MATERIALIZED_VIEW;
Remplacez les éléments suivants :
PROJECT
: nom du projet contenant la vue matérialiséeDATASET
: nom de l'ensemble de données contenant la vue matérialiséeMATERIALIZED_VIEW
: nom de la vue matérialisée que vous souhaitez supprimer
Cliquez sur
Exécuter.
Pour en savoir plus sur l'exécution des requêtes, consultez Exécuter une requête interactive.
bq
Utilisez la commande bq rm
pour supprimer la vue matérialisée.
API
Appelez la méthode tables.delete
et spécifiez les valeurs des paramètres projectId
, datasetId
et tableId
:
- Attribuez le paramètre
projectId
à l'ID de votre projet. - Attribuez le paramètre
datasetId
à l'ID de votre ensemble de données. - Attribuez le paramètre
tableId
à l'ID de la table de la vue matérialisée que vous supprimez.
Java
Avant d'essayer cet exemple, suivez les instructions de configuration pour Java du 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 pour Java.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Actualiser les vues matérialisées
L'actualisation d'une vue matérialisée met à jour les données mises en cache pour refléter l'état actuel de ses tables de base.
Lorsque vous interrogez une vue matérialisée, BigQuery renvoie les résultats à la fois des données de la vue matérialisée mise en cache et des données récupérées à partir de la table de base. Dans la mesure du possible, BigQuery ne lit que les modifications depuis la dernière actualisation de la vue. Bien que les données récemment diffusées puissent ne pas être incluses lors d'une actualisation de la vue matérialisée, les requêtes lisent toujours les données diffusées, qu'une vue matérialisée soit utilisée ou non.
Le renvoi des résultats de requête directement à partir de la table de base entraîne des coûts de calcul plus élevés que le renvoi des résultats à partir des données de vue matérialisée mises en cache. Actualiser régulièrement les données mises en cache de la vue matérialisée réduit la quantité de données renvoyées directement à partir de la table de base, ce qui réduit les coûts de calcul.
Cette page explique comment effectuer les opérations suivantes :
Actualisation automatique
Vous pouvez activer ou désactiver l'actualisation automatique à tout moment. La tâche d'actualisation automatique est effectuée par le compte de service bigquery-adminbot@system.gserviceaccount.com
et apparaît dans l'historique des tâches du projet de vue matérialisée.
Par défaut, les données mises en cache dans une vue matérialisée sont automatiquement actualisées à partir de la table de base dans un délai de cinq à 30 minutes après une modification apportée à la table de base, par exemple, l'insertion ou la suppression de lignes.
Vous pouvez définir la limite de fréquence d'actualisation pour gérer la fréquence des actualisations automatiques des données mises en cache, et ainsi gérer les coûts et les performances des requêtes des vues matérialisées.
Activer et désactiver l'actualisation automatique
Pour désactiver l'actualisation automatique lorsque vous créez une vue matérialisée, définissez enable_refresh
sur false
.
CREATE MATERIALIZED VIEW PROJECT.DATASET.MATERIALIZED_VIEW PARTITION BY RANGE_BUCKET(column_name, buckets) OPTIONS (enable_refresh = false) AS SELECT ...
Pour une vue matérialisée existante, vous pouvez modifier la valeur enable_refresh
à l'aide de ALTER MATERIALIZED VIEW
.
ALTER MATERIALIZED VIEW PROJECT.DATASET.MATERIALIZED_VIEW SET OPTIONS (enable_refresh = true);
Définir la limite de fréquence
Vous pouvez configurer une limite de fréquence pour l'actualisation automatique. Par défaut, les vues matérialisées ne sont pas actualisées plus d'une fois toutes les 30 minutes.
La limite de fréquence d'actualisation peut être modifiée à tout moment.
Pour définir une limite de fréquence d'actualisation lorsque vous créez une vue matérialisée, définissez refresh_interval_minutes
dans l'instruction LDD (ou refresh_interval_ms
dans l'API et l'outil de ligne de commande bq) sur la valeur que vous souhaitez.
CREATE MATERIALIZED VIEW PROJECT.DATASET.MATERIALIZED_VIEW OPTIONS (enable_refresh = true, refresh_interval_minutes = 60) AS SELECT ...
De même, vous pouvez définir la limite de fréquence lorsque vous modifiez une vue matérialisée. Dans cet exemple, nous partons du principe que vous avez déjà activé l'actualisation automatique et que vous souhaitez juste modifier la limitation de fréquence:
ALTER MATERIALIZED VIEW PROJECT.DATASET.MATERIALIZED_VIEW SET OPTIONS (refresh_interval_minutes = 60);
La limite minimale de fréquence d'actualisation est d'une minute. La limite maximale de fréquence d'actualisation est de sept jours.
La limite de fréquence ne s'applique pas à l'actualisation manuelle. Vous pouvez donc actualiser manuellement une vue matérialisée à tout moment.
Optimisation limitée
L'actualisation automatique est effectuée de la manière la plus optimale possible. BigQuery tente de lancer une actualisation dans les cinq minutes suivant une modification de la table de base (si l'actualisation précédente a été effectuée il y a plus de 30 minutes), mais ne garantit pas que l'actualisation démarrera à ce moment-là, ni le moment précis de l'exécution de l'opération
L'actualisation automatique est traitée de la même manière qu'une requête avec par lot en priorité. Si le projet de la vue matérialisée n'a pas la capacité pour l'instant, l'actualisation est retardée. Si le projet contient de nombreuses vues dont l'actualisation est coûteuse, chaque vue peut être considérablement retardée par rapport à ses tables de base.
Actualisation manuelle
Vous pouvez actualiser manuellement une vue matérialisée à tout moment.
Autorisations requises
Pour actualiser manuellement les vues matérialisées, vous devez disposer des autorisations IAM bigquery.tables.getData
, bigquery.tables.update
et bigquery.tables.updateData
.
Chacun des rôles IAM prédéfinis suivants inclut les autorisations dont vous avez besoin pour actualiser manuellement une vue matérialisée :
bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
Pour en savoir plus sur BigQuery Identity and Access Management (IAM), consultez la page Rôles et autorisations prédéfinis.
Pour mettre à jour les données dans la vue matérialisée, appelez la procédure système BQ.REFRESH_MATERIALIZED_VIEW
. Lorsque cette procédure est appelée, BigQuery identifie les modifications apportées aux tables de base et les applique à la vue matérialisée. La requête à exécuter BQ.REFRESH_MATERIALIZED_VIEW
se termine une fois l'actualisation terminée.
CALL BQ.REFRESH_MATERIALIZED_VIEW('PROJECT.DATASET.MATERIALIZED_VIEW');
Surveiller les vues matérialisées
Vous pouvez obtenir des informations sur les vues matérialisées et les tâches d'actualisation de vues matérialisées à l'aide de l'API BigQuery. Pour en savoir plus, consultez la section Surveiller les vues matérialisées.