Présentation des vues matérialisées

Les vues matérialisées sont des vues précalculées qui stockent régulièrement les résultats d'une requête SQL. Dans certains cas d'utilisation, les vues matérialisées réduisent le temps de traitement total et les frais associés en diminuant la quantité de données à analyser pour chaque requête. Vous pouvez interroger les vues matérialisées comme vous le feriez pour d'autres ressources de données.

Les cas d'utilisation suivants mettent en évidence la valeur des vues matérialisées :

  • Prétraiter les données Améliorez les performances des requêtes en préparant les agrégats, les filtres, les jointures et les clusters.
  • Accélération des tableaux de bord : Donnez aux outils de BI, comme Looker, la possibilité d'interroger fréquemment les mêmes métriques agrégées (par exemple, les utilisateurs actifs quotidiens).
  • Analyses en temps réel sur les flux volumineux Peut fournir des réponses plus rapides sur les tables qui reçoivent des données de streaming à grande vitesse.
  • Gestion des coûts : Réduisez le coût des requêtes coûteuses et répétitives sur de grands ensembles de données.

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

  • Aucune maintenance nécessaire Les vues matérialisées sont précalculé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 une table de base 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é. Pour savoir comment et quand le réglage intelligent peut améliorer les requêtes, consultez Utiliser des vues matérialisées.

Vues matérialisées incrémentielles et non incrémentielles

Il existe deux types de vues matérialisées de base :

  • Les vues matérialisées incrémentielles sont compatibles avec un ensemble limité de fonctionnalités. Pour en savoir plus sur la syntaxe SQL acceptée pour les vues matérialisées, consultez Créer des vues matérialisées. Seules les vues matérialisées incrémentielles peuvent bénéficier du réglage intelligent.
  • Les fonctions non incrémentielles sont compatibles avec la plupart des syntaxes que les vues matérialisées incrémentielles ne prennent pas en charge.

Lorsque vous créez des vues matérialisées, BigQuery ne vous permet par défaut de créer des vues que sur la base de requêtes incrémentielles. Pour créer une vue non incrémentielle, vous pouvez spécifier allow_non_incremental_definition = true dans la définition de la vue matérialisée.

Le type de vue matérialisée le plus adapté dépend de votre situation. Le tableau suivant compare les fonctionnalités des vues matérialisées incrémentielles et non incrémentielles :

Catégorie Incrémental Non incrémentiel
Requête compatible Limitée La plupart des requêtes
Coût de la maintenance Peut réduire le coût des requêtes fréquemment utilisées. Pour savoir comment les vues matérialisées sont mises à jour, consultez la section Mises à jour incrémentielles. Chaque actualisation exécute la requête complète.
Assistance pour le réglage intelligent Compatible avec la plupart des requêtes de vues. Non
Des résultats toujours actualisés Compatible Les vues incrémentielles renvoient des résultats de requête actualisés, même lorsque les tables de base ont été modifiées depuis la dernière actualisation. Non

Vues matérialisées autorisées

Vous pouvez créer une vue matérialisée autorisée pour partager un sous-ensemble de données d'un ensemble de données source vers une vue dans un ensemble de données secondaire. Vous pouvez ensuite partager cette vue avec des utilisateurs et des groupes (comptes principaux) spécifiques qui pourront consulter les données que vous partagez. Les principaux peuvent interroger les données que vous fournissez dans une vue, mais ils ne peuvent pas accéder directement à l'ensemble de données source.

Les vues autorisées et les vues matérialisées autorisées sont autorisées de la même manière. Pour en savoir plus, consultez Vues autorisées.

Interaction avec d'autres fonctionnalités BigQuery

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

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

Tables compatibles avec le cache de métadonnées BigLake

Les vues matérialisées sur les tables compatibles avec le cache de métadonnées BigLake peuvent référencer des données structurées stockées dans Cloud Storage et Amazon Simple Storage Service (Amazon S3). Ces vues matérialisées fonctionnent comme les vues matérialisées sur des tables de stockage gérées par BigQuery, ce qui inclut les avantages de l'actualisation automatique et du réglage intelligent. Les autres avantages incluent la pré-agrégation, le préfiltrage et la préjointure des données stockées en dehors de BigQuery. Les vues matérialisées sur des tables BigLake sont stockées dans et présentent toutes les caractéristiques du stockage géré BigQuery.

Lorsque vous créez une vue matérialisée sur une table BigLake Amazon S3, les données de la vue matérialisée ne sont pas disponibles pour les jointures avec les données BigQuery. Pour rendre les données Amazon S3 d'une vue matérialisée disponibles pour les jointures, créez une instance répliquée de la vue matérialisée. Vous ne pouvez créer des instances répliquées de vues matérialisées que pour les vues matérialisées autorisées.

Limites

  • Des limites concernant les références de tables de base et d'autres restrictions peuvent s'appliquer. Pour en savoir plus sur les limites s'appliquant aux vues matérialisées, consultez la section Quotas et limites.
  • Les données d'une vue matérialisée ne peuvent pas être mises à jour ou manipulées directement à l'aide d'opérations telles que COPY, EXPORT, LOAD, WRITE ou des instructions de langage de manipulation de données (LMD).
  • Vous ne pouvez pas remplacer une vue matérialisée existante par une vue matérialisée du même nom.
  • La vue matérialisée SQL ne peut pas être mise à jour après la création de la 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.
  • 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 ou génériques, les vues logiques1 ni les instantanés.
  • Seul le dialecte GoogleSQL est compatible avec les vues matérialisées.
  • Vous pouvez définir des descriptions pour les vues matérialisées, mais vous ne pouvez pas définir de descriptions pour les colonnes individuelles de la vue matérialisée.
  • Si vous supprimez la table de base sans d'abord supprimer la vue matérialisée, les requêtes et les actualisations de la vue matérialisée échouent. Si vous recréez la table de base, vous devez également recréer la vue matérialisée.
  • Si une vue matérialisée possède une table de base activée pour la capture des données modifiées, cette table ne peut pas être référencée dans la même requête que la vue matérialisée.
  • Seules les vues matérialisées non incrémentielles peuvent avoir des tables de base d'ensemble de données externes Spanner. Si la dernière actualisation d'une vue matérialisée non incrémentielle s'est produite en dehors de l'intervalle max_staleness, la requête lit les tables de l'ensemble de données externe Spanner de base. Pour en savoir plus sur les tables d'ensembles de données externes Spanner, consultez Créer des vues matérialisées sur des ensembles de données externes Spanner.

1La compatibilité de référence concernant les vues logiques est disponible en preview. Pour en savoir plus, consultez la page Référencer les vues logiques.

Limites des vues matérialisées sur des tables BigLake

  • Le partitionnement de la vue matérialisée n'est pas possile. Les tables de base peuvent utiliser le partitionnement Hive, mais le stockage de vues matérialisées ne peut pas être partitionné dans des tables BigLake. Cela signifie que toute suppression dans une table de base entraîne une actualisation complète de la vue matérialisée. Pour en savoir plus, consultez la section Mises à jour incrémentielles.
  • La valeur de l'option --max_staleness de la vue matérialisée doit être supérieure à celle de la table de base BigLake.
  • Les jointures entre les tables gérées BigQuery et les tables BigLake ne sont pas compatibles avec une définition de vue matérialisée unique.
  • BigQuery BI Engine n'est pas compatible avec l'accélération des vues matérialisées sur les tables BigLake.

Tarification des vues matérialisées

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

  • 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 en fonction de la capacité
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