Partager via


Matérialisation pour les vues métriques

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 :

Définition de matérialisation des vues de métriques et 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 : aggregated et unaggregated.
      • Si type est aggregated, il doit y avoir au moins une dimension ou une mesure.
      • Si type est unaggregated le cas, pas de dimension ou de mesure ne doit être définie.

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_MODE ou TIMEZONE).
  • 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 :

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.

Réécriture des requêtes prenant en compte l’agrégation

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 :

  1. La première tentative vise une correspondance exacte.
  2. Si une matérialisation non agrégée existe, tente de trouver une correspondance non agrégée.
  3. 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.