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.
Important
Cette fonctionnalité est expérimentale.
Cet article explique comment utiliser la matérialisation pour les vues de métriques afin d’accélérer les performances des requêtes.
La matérialisation des vues métriques accélère les requêtes en utilisant des vues matérialisées. Lakeflow Spark Declarative Pipelines orchestre les vues matérialisées définies par l’utilisateur pour une vue de métrique donnée. Au moment de l'interrogation, l'optimisation des requêtes achemine intelligemment les requêtes utilisateur sur la vue des métriques vers la meilleure vue matérialisée grâce à la correspondance automatique des requêtes avec prise en compte des agrégats, également appelée réécriture des requêtes.
Cette approche offre les avantages du pré-calcul et des mises à jour incrémentielles automatiques. Vous n’avez donc pas besoin de déterminer la table d’agrégation ou la vue matérialisée pour rechercher différents objectifs de performances et élimine la nécessité de gérer des pipelines de production distincts.
Aperçu
Le diagramme suivant illustre la façon dont les vues de métriques gèrent la définition et l’exécution des requêtes :
Phase de définition
Lorsque vous définissez une vue de métrique avec matérialisation, CREATE METRIC VIEW ou ALTER METRIC VIEW spécifie vos dimensions, mesures et programmation d’actualisation. Databricks crée un pipeline géré qui maintient les vues matérialisées.
Exécution de la requête
Lorsque vous exécutez SELECT ... FROM <metric_view>, l’optimiseur de requête utilise la réécriture des requêtes prenant en compte l’agrégation pour optimiser les performances :
- Chemin rapide : lit à partir de vues matérialisées précalculées le cas échéant.
- Chemin de secours : lit directement les données sources lorsque la matérialisation n'est pas disponible.
L’optimiseur de requête équilibre automatiquement les performances et l’actualisation en choisissant entre les données matérialisées et sources. Vous recevez les résultats de manière transparente quel que soit le chemin d’accès utilisé.
Spécifications
Pour utiliser la matérialisation pour les vues métriques :
- Votre espace de travail doit avoir le calcul serverless activé. Cela est nécessaire pour exécuter des pipelines déclaratifs Spark Lakeflow.
- Databricks Runtime 17.2 ou version ultérieure.
Référence de configuration
Toutes les informations relatives à la matérialisation sont définies dans un champ de niveau supérieur nommé materialization dans la définition YAML de la vue métrique.
Note
À mesure que cette fonctionnalité est déployée, les vues de métriques de la version 1.1 avec matérialisation peuvent générer l’erreur suivante dans le pipeline sous-jacent :
[METRIC_VIEW_INVALID_VIEW_DEFINITION] The metric view definition is invalid. Reason: Invalid YAML version: 1.1.
Si cela se produit, utilisez plutôt la version 0.1. Notez que la version 0.1 ne prend pas en charge certaines fonctionnalités disponibles dans la version 1.1. La matérialisation des vues métrique sera disponible dans tous les espaces de travail au cours des prochaines semaines.
Le materialization champ contient les champs obligatoires suivants :
- schedule : prend en charge la même syntaxe que la clause schedule sur les vues matérialisées.
-
mode : doit être défini sur
relaxed. -
materialized_views : liste de vues matérialisées à matérialiser.
- nom : nom de la matérialisation.
- dimensions : liste de dimensions à matérialiser. Seules les références directes aux noms de dimension sont autorisées ; les expressions ne sont pas prises en charge.
- mesures : liste de mesures à matérialiser. Seules les références directes aux noms de mesures sont autorisées ; les expressions ne sont pas prises en charge.
-
type : spécifie si la vue matérialisée est agrégée ou non. Accepte deux valeurs possibles :
aggregatedetunaggregated.- Si
typeestaggregated, il doit y avoir au moins une dimension ou une mesure. - Si
typeestunaggregatedle cas, pas de dimension ou de mesure ne doit être définie.
- Si
Note
La TRIGGER ON UPDATE clause n’est pas prise en charge pour la matérialisation des vues de métriques.
Exemple de définition
version: 0.1
source: prod.operations.orders_enriched_view
filter: revenue > 0
dimensions:
- name: category
expr: substring(category, 5)
- name: color
expr: color
measures:
- name: total_revenue
expr: SUM(revenue)
- name: number_of_suppliers
expr: COUNT(DISTINCT supplier_id)
materialization:
schedule: every 6 hours
mode: relaxed
materialized_views:
- name: baseline
type: unaggregated
- name: revenue_breakdown
type: aggregated
dimensions:
- category
- color
measures:
- total_revenue
- name: suppliers_by_category
type: aggregated
dimensions:
- category
measures:
- number_of_suppliers
Mode
En relaxed mode, la réécriture automatique des requêtes vérifie uniquement si les vues matérialisées candidates ont les dimensions et les mesures nécessaires pour traiter la requête.
Cela signifie que plusieurs vérifications sont ignorées :
- Il n'y a pas de contrôles pour vérifier si la vue matérialisée est à jour.
- Vous ne vérifiez pas si vous avez des paramètres SQL correspondants (par exemple,
ANSI_MODEouTIMEZONE). - Il n’y a pas de vérifications sur le fait que la vue matérialisée retourne des résultats déterministes.
Si la requête inclut l’une des conditions suivantes, la réécriture de la requête ne se produit pas et la requête revient aux tables sources :
- Sécurité au niveau des lignes (RLS) ou masquage au niveau des colonnes (CLM) dans les vues matérialisées.
- Fonctions non déterministes comme
current_timestamp()dans les vues matérialisées. Celles-ci peuvent apparaître dans la définition de vue de métrique ou dans une table source utilisée par la vue métrique.
Note
Pendant la période de publication expérimentale, relaxed est le seul mode pris en charge. Si ces vérifications échouent, la requête revient aux données sources.
Types de matérialisation pour les vues de métriques
Les sections suivantes expliquent les types de vues matérialisées disponibles pour les vues métriques.
Type agrégé
Ce type pré-calcule les agrégations pour les combinaisons de mesures et de dimensions spécifiées pour la couverture ciblée.
Cela est utile pour cibler des modèles de requête d’agrégation courants spécifiques ou des widgets. Databricks recommande d’inclure des colonnes de filtre potentielles en tant que dimensions dans la configuration de la vue matérialisée. Les colonnes de filtre potentielles sont des colonnes utilisées au moment de la requête dans la WHERE clause.
Type non agrégé
Ce type matérialise l’ensemble du modèle de données non agrégé (par exemple, les champs source, join et filter) qui offre une couverture plus large avec moins de gain de performance comparé au type agrégé.
Utilisez ce type lorsque les valeurs suivantes sont remplies :
- La source est une vue coûteuse ou une requête SQL.
- Les jointures définies dans votre vue de métrique sont coûteuses.
Note
Si votre source est une référence de table directe sans filtre sélectif appliqué, une vue matérialisée non agrégée peut ne pas fournir d’avantages.
Cycle de vie de matérialisation
Cette section explique comment les matérialisations sont créées, gérées et actualisées tout au long de leur cycle de vie.
Créer et modifier
La création ou la modification d'une vue de métrique (à l'aide de CREATE, ALTER ou de l'Explorateur de catalogues) se produit de manière synchrone. Les vues matérialisées spécifiées se matérialisent de manière asynchrone à l'aide des pipelines déclaratifs de Lakeflow Spark.
Lorsque vous créez une vue de métrique, Databricks crée un pipeline Pipelines déclaratifs Spark Lakeflow et planifie une mise à jour initiale immédiatement si des vues matérialisées sont spécifiées. La vue des métriques reste interrogeable sans matérialisation en revenant à l’interrogation à partir des données sources.
Lorsque vous modifiez une vue de métrique, aucune nouvelle mise à jour n’est planifiée, sauf si vous activez la matérialisation pour la première fois. Les vues matérialisées ne sont pas utilisées pour la réécriture automatique des requêtes tant que la prochaine mise à jour planifiée n’est pas terminée.
La modification de la planification de matérialisation ne déclenche pas d’actualisation.
Consultez l’actualisation manuelle pour contrôler plus finement le comportement d’actualisation.
Inspecter le pipeline sous-jacent
La matérialisation des vues de métriques est implémentée à l'aide des pipelines déclaratifs Lakeflow de Spark. Un lien vers le pipeline est présent dans l’onglet Vue d’ensemble de l’Explorateur de catalogues. Pour savoir comment accéder à l’Explorateur de catalogues, consultez Qu’est-ce que l’Explorateur de catalogues ?.
Vous pouvez également accéder à ce pipeline en exécutant DESCRIBE EXTENDED sur l’affichage des métriques. La section Informations d’actualisation contient un lien vers le pipeline.
DESCRIBE EXTENDED my_metric_view;
Exemple de sortie :
-- Returns additional metadata such as parent schema, owner, access time etc.
> DESCRIBE TABLE EXTENDED customer;
col_name data_type comment
------------------------------- ------------------------------ ----------
... ... ...
# Detailed Table Information
... ...
Language YAML
Table properties ...
# Refresh information
Latest Refresh status Succeeded
Latest Refresh https://...
Refresh Schedule EVERY 3 HOURS
Actualisation manuelle
À partir du lien vers la page Pipelines déclaratifs Spark Lakeflow, vous pouvez démarrer manuellement un processus de mise à jour du pipeline pour actualiser les matérialisations. Vous pouvez également orchestrer cela à l’aide d’un appel d’API basé sur l’ID de pipeline.
Par exemple, le script Python suivant démarre une actualisation du pipeline :
from databricks.sdk import WorkspaceClient
client = WorkspaceClient()
pipeline_id = "01484540-0a06-414a-b10f-e1b0e8097f15"
client.pipelines.start_update(pipeline_id)
Pour exécuter une actualisation manuelle dans le cadre d’un travail Lakeflow, créez un script Python avec la logique ci-dessus et ajoutez-le en tant que tâche de type script Python. Vous pouvez également créer un bloc-notes avec la même logique et ajouter une tâche de type Notebook.
Actualisation incrémentielle
Les vues matérialisées utilisent l’actualisation incrémentielle chaque fois que possible et présentent les mêmes limitations concernant les sources de données et la structure de plan.
Pour en savoir plus sur les prérequis et les restrictions, consultez la mise à jour incrémentielle des vues matérialisées .
Réécriture automatique des requêtes
Les requêtes adressées à une vue de métrique avec des tentatives de matérialisation essaient d'utiliser ses matérialisations autant que possible. Il existe deux stratégies de réécriture de requête : correspondance exacte et correspondance non agrégée.
Lorsque vous interrogez une vue de métrique, l’optimiseur analyse la requête et les matérialisations définies par l’utilisateur disponibles. La requête s’exécute automatiquement sur la meilleure matérialisation au lieu des tables de base à l’aide de cet algorithme :
- La première tentative vise une correspondance exacte.
- Si une matérialisation non agrégée existe, tente de trouver une correspondance non agrégée.
- Si la réécriture de requête échoue, la requête lit directement à partir des tables sources.
Note
Les matérialisations doivent terminer la matérialisation avant que la réécriture de requête puisse prendre effet.
Vérifier que la requête utilise des vues matérialisées
Pour vérifier si une requête utilise une vue matérialisée, exécutez-la EXPLAIN EXTENDED sur votre requête pour afficher le plan de requête. Si la requête utilise des vues matérialisées, le nœud feuille inclut __materialization_mat___metric_view et le nom de la matérialisation provenant du fichier YAML.
Le profil de requête affiche également les mêmes informations.
Concordance exacte
Pour être éligible à la stratégie de correspondance exacte, les expressions de regroupement de la requête doivent correspondre précisément aux dimensions de matérialisation. Les expressions d’agrégation de la requête doivent être un sous-ensemble des mesures de matérialisation.
Jumelage non agrégé
Si une matérialisation non agrégée est disponible, cette stratégie est toujours éligible.
Facturation
L’actualisation des vues matérialisées entraîne des frais d’utilisation des pipelines déclaratifs Lakeflow Spark.
Restrictions connues
Les restrictions suivantes s’appliquent à la matérialisation des vues de métriques :
- Une vue de métrique avec matérialisation qui se réfère à une autre vue de métrique comme source ne peut pas avoir de matérialisation non agrégée.