Présentation des vues matérialisées

Ce document présente la compatibilité de BigQuery avec les vues matérialisées. Avant de lire ce document, familiarisez-vous avec BigQuery et les vues standards de BigQuery.

Présentation

Dans BigQuery, les vues matérialisées sont des vues précalculées qui mettent régulièrement en cache les résultats d'une requête pour améliorer les performances et l'efficacité. BigQuery exploite les résultats précalculés des vues matérialisées et, dans la mesure du possible, ne lit que les modifications delta des tables de base pour calculer les résultats à jour. Les vues matérialisées peuvent être interrogées directement ou peuvent être utilisées par l'optimiseur BigQuery pour traiter les requêtes sur les tables de base.

Les requêtes qui utilisent des vues matérialisées sont généralement plus rapides et consomment moins de ressources que les requêtes qui extraient les mêmes données uniquement à partir des tables de base. Les vues matérialisées peuvent améliorer considérablement les performances des charges de travail caractérisées par des requêtes courantes et répétées.

Voici les principales caractéristiques des vues matérialisées BigQuery :

  • Aucune maintenance nécessaire Les vues matérialisées sont recalculées en arrière-plan lorsque les tables de base changent. Toutes les modifications incrémentielles apportées aux données depuis les tables de base sont automatiquement ajoutées aux vues matérialisées, sans aucune action de l'utilisateur.
  • Données actualisées Les vues matérialisées renvoient des données actualisées. Si les modifications apportées aux tables de base peuvent invalider la vue matérialisée, les données sont lues directement à partir des tables de base. Si les modifications apportées aux tables de base n'invalident pas la vue matérialisée, les autres données sont lues à partir de la vue matérialisée, et seules les modifications sont lues à partir des tables de base.
  • Réglage intelligent Si une partie d'une requête sur la table source peut être résolue en interrogeant la vue matérialisée, BigQuery redirige la requête pour utiliser la vue matérialisée afin d'améliorer les performances et l'efficacité.

Cas d'utilisation

Les vues matérialisées BigQuery peuvent optimiser les requêtes avec des coûts de calcul élevés et des résultats de petite taille. Les processus bénéficiant de vues matérialisées incluent les opérations de traitement analytique en ligne (OLAP) qui nécessitent un traitement important à l'aide de requêtes prévisibles et répétées, telles que celles provenant de processus d'extraction, de transformation et de chargement (ETL), ou de l'informatique décisionnelle.

Les cas d'utilisation suivants mettent en évidence la valeur des vues matérialisées. Les vues matérialisées peuvent améliorer les performances des requêtes si vous avez fréquemment besoin des éléments suivants :

  • Pré-agréger des données Agrégation de données en flux continu.
  • Préfiltrer les données Exécution des requêtes qui ne lisent qu'un sous-ensemble particulier de la table.
  • Pré-joindre des données Jointures de requêtes, en particulier entre les grandes et les petites tables.
  • Regrouper les données Exécution des requêtes pouvant tirer parti d'un schéma de clustering différent des tables de base.

Comparaison avec d'autres techniques BigQuery

Le tableau suivant récapitule les similitudes et les différences entre la mise en cache, les requêtes programmées, les vues standards et les vues matérialisées de BigQuery.

Composant Cache Requêtes programmées Vues standards Vues matérialisées
Performances Oui No No Oui
Requête compatible Toutes Toutes All Limitée
Partitionnement et filtrage par cluster Non Oui ND Oui
Actualisation incrémentielle Non Non No Oui
Stockage supplémentaire Non Oui Non Oui
Réécriture de requêtes Non Non No Oui
Frais de maintenance Non Oui ND Oui
Obsolescence des données Jamais Oui Jamais Never

Interaction avec d'autres fonctionnalités BigQuery

Les fonctionnalités BigQuery suivantes fonctionnent de manière transparente avec les vues matérialisées BigQuery :

  • Explication du plan de requête : le plan de requête indique les vues matérialisées analysées (le cas échéant) et le nombre d'octets lus à partir de la vue matérialisée et des tables de base.

  • Mise en cache de requêtes : les résultats d'une requête que BigQuery réécrit à l'aide d'une vue matérialisée peuvent être mis en cache sous réserve des limites habituelles (utilisation de fonctions déterministes, aucun flux dans les tables de base, etc.).

  • Restriction de coût : si la requête lit un nombre d'octets qui dépasse la limite que vous avez définie, elle échoue sans engendrer de frais, qu'elle ait utilisé les vues matérialisées, les tables de base ou les deux.

  • Estimation des coûts par simulation : une simulation répète la logique de réécriture des requêtes à l'aide des vues matérialisées disponibles et doit fournir une estimation précise des coûts. Vous pouvez vous en servir pour vérifier si une requête spécifique utilise des vues matérialisées.

Limites

  • La manipulation directe des données d'une vue matérialisée n'est pas possible. Cela inclut les actions suivantes :

    • Copier une vue matérialisée, comme source ou destination d'une tâche de copie
    • Exporter une vue matérialisée
    • Charger des données dans une vue matérialisée
    • Écrire un résultat de requête dans une vue matérialisée
    • Exécuter des instructions LMD sur une vue matérialisée
  • Une vue matérialisée doit résider dans la même organisation que les tables de base ou dans le même projet si celui-ci n'appartient pas à une organisation.

  • Chaque table de base peut être référencée par un maximum de 20 vues matérialisées depuis le même ensemble de données, 100 vues matérialisées depuis le même projet et 500 vues matérialisées depuis l'ensemble de l'organisation.

  • Seules les vues matérialisées du même ensemble de données sont prises en compte pour la réécriture automatique des requêtes (ou le réglage intelligent).

  • Les vues matérialisées utilisent une syntaxe SQL limitée et un ensemble limité de fonctions d'agrégation. Pour en savoir plus, consultez la page Vues matérialisées compatibles.

  • Les vues matérialisées ne peuvent pas être imbriquées dans d'autres vues matérialisées.

  • Les vues matérialisées ne peuvent pas interroger les tables externes.

  • Seul le dialecte SQL standard est compatible avec les vues matérialisées.

  • Si vous supprimez les tables de base sans d'abord supprimer la vue matérialisée, les requêtes sur la vue matérialisée échoueront, tout comme les actualisations. Si vous décidez de recréer la table de base, vous devez également recréer la vue matérialisée.

Tarification des vues matérialisées

Les coûts sont associés aux aspects suivants des vues matérialisées BigQuery :

  • Interrogation des vues matérialisées
  • Gestion des vues matérialisées, par exemple lorsqu'elles sont actualisées Le coût de l'actualisation automatique est facturé dans le projet où se trouve la vue. Le coût de l'actualisation manuelle est facturé dans le projet dans lequel la tâche d'actualisation manuelle est exécutée. Pour en savoir plus sur le contrôle des coûts de maintenance, consultez la section Maintenance des tâches d'actualisation.
  • Stockage des tables de vues matérialisées
Composant Tarifs à la demande Tarifs forfaitaires
Requête Octets traités par les vues matérialisées et toutes les parties nécessaires des tables de base.1 Les emplacements sont consommés lors de la requête.
Maintenance Octets traités pendant l'actualisation. Les emplacements sont consommés pendant l'actualisation.
Stockage Octets stockés dans les vues matérialisées. Octets stockés dans les vues matérialisées.

1 Dans la mesure du possible, BigQuery ne lit que les modifications depuis la dernière actualisation de la vue. Pour en savoir plus, consultez la section Mises à jour incrémentielles.

Détails des coûts de stockage

Pour les valeurs cumulées AVG, ARRAY_AGG et APPROX_COUNT_DISTINCT dans une vue matérialisée, la valeur finale n'est pas directement stockée. Au lieu de cela, BigQuery stocke une vue matérialisée en interne sous forme d'esquisse intermédiaire, qui est utilisée pour générer la valeur finale.

Prenons l'exemple d'une vue matérialisée créée à l'aide de la commande suivante :

CREATE MATERIALIZED VIEW project-id.my_dataset.my_mv_table AS
SELECT date, AVG(net_paid) AS avg_paid
FROM project-id.my_dataset.my_base_table
GROUP BY date

La colonne avg_paid est affichée en tant que NUMERIC ou FLOAT64 pour l'utilisateur, mais en interne elle est stockée en tant que BYTES, son contenu étant une esquisse intermédiaire au format propriétaire. Pour le calcul de la taille des données, la colonne est traitée comme des octets (BYTES).

Étapes suivantes