Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Comme les vues standard, les vues matérialisées sont les résultats d’une requête et vous y accédez de la même façon qu’une table. Contrairement aux vues standard, qui recompilent les résultats sur chaque requête, les vues matérialisées mettent en cache les résultats et les actualisent à des intervalles spécifiés. Étant donné qu’un affichage matérialisé est précalculé, les requêtes sur celui-ci peuvent s’exécuter beaucoup plus rapidement que sur les affichages réguliers.
Une vue matérialisée est un objet de pipeline déclaratif. Il inclut une requête qui la définit, un flux de mise à jour et les résultats mis en cache pour un accès rapide. Vue matérialisée :
- Suit les modifications apportées aux données en amont.
- Lors de l'activation du déclencheur, traite de manière incrémentielle les données modifiées et applique les transformations nécessaires.
- Gère la table de sortie, synchronisée avec les données sources, en fonction d’un intervalle d’actualisation spécifié.
Les vues matérialisées sont un bon choix pour de nombreuses transformations :
- Vous appliquez un raisonnement sur les résultats mis en cache au lieu de lignes. En fait, vous écrivez simplement une requête.
- Ils sont toujours corrects. Toutes les données requises sont traitées, même si elles arrivent en retard ou hors commande.
- Ils sont souvent incrémentiels. Databricks essaiera de choisir la stratégie appropriée qui réduit le coût de la mise à jour d’une vue matérialisée.
Fonctionnement des vues matérialisées
Le diagramme suivant illustre le fonctionnement des vues matérialisées.
Les vues matérialisées sont définies et mises à jour par un seul pipeline. Vous pouvez définir explicitement des vues matérialisées dans le code source du pipeline. Les tables définies par un pipeline ne peuvent pas être modifiées ou mises à jour par un autre pipeline.
Note
Lorsque vous créez une vue matérialisée en dehors d’un pipeline, à l’aide de Databricks SQL, Azure Databricks crée un pipeline utilisé pour mettre à jour la vue. Vous pouvez voir le pipeline en sélectionnant Tâches & Pipelines dans le volet de navigation à gauche de votre espace de travail. Vous pouvez ajouter la colonne de type pipeline à votre affichage. Les vues matérialisées définies dans un pipeline ont un type de ETL. Les vues matérialisées créées dans Databricks SQL ont un type de MV/ST.
Databricks utilise Le catalogue Unity pour stocker les métadonnées relatives à la vue, notamment la requête et les vues système supplémentaires utilisées pour les mises à jour incrémentielles. Les données mises en cache sont matérialisées dans le stockage cloud.
L’exemple suivant joint deux tables ensemble et conserve le résultat à jour à l’aide d’une vue matérialisée.
Python
from pyspark import pipelines as dp
@dp.materialized_view
def regional_sales():
partners_df = spark.read.table("partners")
sales_df = spark.read.table("sales")
return (
partners_df.join(sales_df, on="partner_id", how="inner")
)
SQL
CREATE OR REPLACE MATERIALIZED VIEW regional_sales
AS SELECT *
FROM partners
INNER JOIN sales ON
partners.partner_id = sales.partner_id;
Mises à jour incrémentielles automatiques
Lorsque le pipeline définissant une vue matérialisée est déclenché, l’affichage est automatiquement tenu à jour, souvent de façon incrémentielle. Databricks tente de traiter uniquement les données qui doivent être traitées pour maintenir la vue matérialisée à jour. Une vue matérialisée affiche toujours le résultat correct, même s’il nécessite une recomputation complète du résultat de la requête à partir de zéro, mais souvent Databricks effectue uniquement des mises à jour incrémentielles vers une vue matérialisée, ce qui peut être beaucoup moins coûteux qu’une recomputation complète.
Le diagramme ci-dessous montre une vue matérialisée appelée sales_report, qui est le résultat de la jonction de deux tables en amont appelées clean_customers et clean_transactions, et du regroupement par pays. Un processus en amont insère 200 lignes clean_customers dans trois pays (États-Unis, Pays-Bas, Royaume-Uni) et met à jour 5 000 lignes correspondant clean_transactions à ces nouveaux clients. La sales_report vue matérialisée est mise à jour de manière incrémentielle uniquement pour les pays qui ont de nouveaux clients ou des transactions correspondantes. Dans cet exemple, nous voyons trois lignes mises à jour au lieu de l’intégralité du rapport des ventes.
Pour plus d’informations sur le fonctionnement de l’actualisation incrémentielle dans les vues matérialisées, consultez Actualisation incrémentielle pour les vues matérialisées.
Limitations des vues matérialisées
Les vues matérialisées présentent les limitations suivantes :
- Étant donné que les mises à jour créent des requêtes correctes, certaines modifications apportées aux entrées nécessitent une recomputation complète d’une vue matérialisée, ce qui peut être coûteux.
- Ils ne sont pas conçus pour les cas d’usage à faible latence. La latence de la mise à jour d’une vue matérialisée est en secondes ou en minutes, et non en millisecondes.
- Tous les calculs ne peuvent pas être calculés de manière incrémentielle.