Présentation des vues matérialisées

Ce document fournit une présentation de 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 de la table 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 de la table de base. Les vues matérialisées peuvent améliorer considérablement les performances des charges de travail ayant la caractéristique des requêtes courantes et répétées.

Pourquoi utiliser des vues matérialisées ?

Les vues matérialisées BigQuery peuvent être utiles des manières suivantes :

  • Réduction du temps d'exécution et du coût des requêtes associées à des fonctions d'agrégation. Le bénéfice est particulièrement important lorsque le coût de calcul d'une requête est élevé et que l'ensemble des données résultant est petit. Vous devriez utiliser les vues matérialisées si vous disposez d'une table brute, que vous effectuez une agrégation avec un style de traitement analytique en ligne (OLAP) exigeant un traitement important, et que vos requêtes sont prévisibles et répétées, telles que dans un processus d'extraction, de transformation et de chargement (ETL, Extract, Transform, Load) ou des pipelines d'informatique décisionnelle (BI, Business Intelligence).

  • Optimisation automatique et transparente des requêtes BigQuery. Si une vue matérialisée est disponible, l'optimiseur BigQuery l'utilise pour améliorer le plan d'exécution des requêtes. Cette optimisation ne nécessite aucune modification des requêtes.

  • Agrégation des données en temps réel. Si vous souhaitez accéder aux données pour prendre des décisions en temps réel, vous pouvez utiliser les vues matérialisées BigQuery avec la diffusion BigQuery pour effectuer des agrégations en temps réel, en fournissant des informations actualisées.

Autorisations requises

Pour en savoir plus sur les autorisations requises pour effectuer des opérations sur des vues matérialisées, consultez la section Autorisations requises pour utiliser des vues matérialisées.

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 Non Non Oui
Requête compatible Toutes Toutes Toutes Agrégation – Filtrage et regroupement
Partitionnement et filtrage par cluster Non Oui ND Oui
Actualisation incrémentielle Non Non Non Oui
Stockage supplémentaire Non Oui Non Oui
Réécriture de requêtes Non Non Non Oui
Frais de maintenance Non Oui ND Oui
Obsolescence des données Jamais Oui Jamais Jamais
Limité à une seule table Non Non Non Oui

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 de la table 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 la table de base, etc.).

  • Calcul des coûts : pour la facturation à la demande, si une requête est réécrite à l'aide d'une ou de plusieurs vues matérialisées et qu'elle analyse moins d'octets que lors de l'analyse de l'intégralité de la table de base, la requête est moins onéreuse.

  • 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, la table 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 fournit une estimation des coûts. Vous pouvez utiliser cette fonctionnalité pour vérifier si une requête spécifique utilise des vues matérialisées.

Limites

  • Vous ne pouvez pas manipuler ni lire directement le contenu brut d'une vue matérialisée. Cela signifie que les actions suivantes ne sont pas acceptées :

    • 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 la table 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.

  • Une vue matérialisée ne peut référencer qu'une seule table et ne peut pas utiliser de jointures.

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

  • Vous ne pouvez utiliser que le dialecte SQL standard pour les vues matérialisées.

  • Les instructions LDD SHOW ne sont pas compatibles avec les vues matérialisées.

  • Les instructions LDD ALTER, autres que ALTER avec SET OPTIONS, ne sont pas compatibles avec les vues matérialisées.

  • Si vous supprimez la table de base sans d'abord supprimer la vue matérialisée, les requêtes sur la vue matérialisée échouent, 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.

  • Une fois la vue matérialisée créée sur une table de base partitionnée, le délai d'expiration de la partition de la table ne peut plus être modifié. Pour modifier la date d'expiration de la partition de la table de base, vous devez d'abord supprimer toutes les vues matérialisées basées sur la table partitionnée.

  • Il existe certaines limitations concernant l'utilisation des instructions ARRAY_AGG et JOIN dans les vues matérialisées. Pour en savoir plus, consultez les sections Considérations concernant ARRAY_AGG et Considérations concernant JOIN.

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
  • 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 au cours de l'actualisation. Les emplacements sont consommés pendant l'actualisation.
Stockage Octets stockés dans des vues matérialisées. Octets stockés dans des vues matérialisées.

1 Si la table de base est de type "append-only", seule la valeur delta depuis la dernière actualisation de la vue matérialisée est traitée à partir de la table de base. 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 les besoins du calcul de la taille des données, la colonne est traitée en tant que BYTES.

Étapes suivantes