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.
S’applique à :✅ point d'accès d’analyse SQL dans Microsoft Fabric
Dans ce tutoriel, vous allez apprendre à créer un pipeline Microsoft Fabric pour effectuer une maintenance intelligente des tables.
Cette solution appelle la sys.sp_get_table_health_metrics procédure stockée T-SQL sur le point de terminaison d’analytique SQL Lakehouse, évalue le résultat et s’exécute OPTIMIZE uniquement lorsque la table a réellement besoin de maintenance. Cette approche « vérifier puis agir » évite des coûts de calcul inutiles sur les tables en bon état, tout en garantissant que les tables dégradées sont maintenues automatiquement.
Pourquoi la maintenance est nécessaire
Les tables Lakehouse peuvent accumuler trop de petits fichiers Parquet au fil du temps, ce qui nuit aux performances des requêtes sur le point de terminaison d’analyse SQL.
Au lieu de s’exécuter OPTIMIZE selon une planification fixe, quel que soit l’état de la table, ce pipeline prend une décision éclairée : il vérifie d’abord l’intégrité de la table et déclenche uniquement l’optimisation lorsqu’une anomalie est détectée.
Prerequisites
Avant de commencer, assurez-vous d’avoir :
- Un espace de travail Microsoft Fabric avec des autorisations de contributeur ou supérieures.
- Un Lakehouse dans cet espace de travail contenant au moins une table Delta que vous souhaitez surveiller. Ce tutoriel utilise un lakehouse nommé
SalesDataLakehouse. - Connaissance des pipelines de données Fabric.
- Connaissance des blocs-notes Fabric.
Structure de la solution
Le pipeline terminé a cette structure :
-
Activité de script : s’exécute
sp_get_table_health_metricssur la table cible et retourne les métriques d’intégrité des tables en tant que sortie structurée. -
Activité de condition If : lit
PotentialAnomalyTypedirectement dans la sortie du script et vérifie s’il est supérieur à zéro. Pour plus d’informations sur lePotentialAnomalyType, consultez Codes de type d’anomalie potentiels. -
Activité de notebook (dans la branche True) : exécute
OPTIMIZEsur la table à partir d’un notebook Spark.
À la fin de ce tutoriel, vous disposez d’un notebook qui prend des paramètres à partir du pipeline et optimise une table lorsqu’elle est déclenchée.
Étape 1 : Créer le notebook d’optimisation
Le notebook accepte le nom cible Lakehouse, le schéma et la table comme paramètres du pipeline, puis s’exécute OPTIMIZE à l’aide de Spark SQL.
- Dans votre espace de travail Fabric, sélectionnez + Nouvel élément>Bloc-notes.
- Nommez le notebook Optimize-Table.
- Sous Emplacement, sélectionnez le Lakehouse dans lequel sont stockées les tables que vous vérifiez. Cet exercice utilise un Lakehouse nommé
SalesDataLakehouse. - Cliquez sur Créer.
Ajouter la cellule de paramètre
La première cellule définit les variables remplacées par le pipeline au moment de l’exécution.
Dans la première cellule, entrez les paramètres suivants. Les valeurs ne sont pas importantes et le pipeline les remplace au moment de l’exécution.
# Parameters lakehouse_name = "<LakehouseName>" schema_name = "<SchemaName>" table_name = "<TableName>"Important
Fonctionnement du paramétrage dans Fabric notebooks : au moment de l’exécution, Fabric injecte une nouvelle cellule immédiatement après la cellule de paramètre qui réaffecte ces variables avec les valeurs passées par le pipeline. Les valeurs que vous définissez ici initialisent uniquement les variables et améliorent la lisibilité.
Sélectionnez le menu de cellule (...) >Basculez la cellule de paramètre pour marquer cette cellule comme cellule de paramètre.
Ajouter la cellule OPTIMIZE
La OPTIMIZE commande est une commande Spark SQL, et non une commande T-SQL. Vous devez l’exécuter dans des environnements Spark tels que des notebooks, des définitions de travaux Spark ou l’interface de maintenance Lakehouse. Le point de terminaison d’analytique SQL et l’éditeur de requête SQL Warehouse ne prennent pas en charge cette commande directement.
Dans la deuxième cellule, entrez :
full_name = f"{lakehouse_name}.{schema_name}.{table_name}" print(f"Optimizing {full_name} ...") result = spark.sql(f"OPTIMIZE {full_name}") result.show(truncate=False)Ajoutez des cellules Markdown selon les besoins pour documenter correctement le bloc-notes pour d’autres utilisateurs. Votre bloc-notes finalisé doit ressembler à ce qui suit :
Note
Cet exemple considère un Lakehouse avec des schémas activés. Ajustez en conséquence le nom en trois parties sur full_name si vous n’utilisez pas de schémas de Lakehouse.
Étape 2 : Créer le pipeline
Dans votre espace de travail Fabric, sélectionnez + Nouvel élément>Pipeline.
Nommez le pipeline Check-and-Optimize-Table.
Sélectionnez l’arrière-plan du canevas du pipeline, puis ouvrez l’onglet Paramètres . Ajoutez trois paramètres :
Name Type Valeur par défaut lakehouse_nameChaîne SalesDataLakehouseschema_nameChaîne dbotable_nameChaîne FactSales
Étape 3 : Ajouter l’activité de script
L’activité Script exécute sys.sp_get_table_health_metrics sur le point de terminaison d’analyse SQL et récupère le résultat.
Important
Utilisez l’activité Script, et non l’activité Procédure stockée. Seule l’activité de script expose le jeu de résultats sous forme de sortie JSON structurée que les activités en aval peuvent analyser.
- Sous l’onglet Activités , sélectionnez Script pour l’ajouter au canevas.
- Nommez-le Vérifier l’état de la table.
- Sous l’onglet Paramètres :
Connexion : sélectionnez le point de terminaison d’analytique SQL pour votre Lakehouse. S’il n’est pas répertorié, sélectionnez Parcourir tout en bas de la liste déroulante, puis recherchez le point de terminaison d’analytique SQL de Lakehouse.
Type de script : sélectionnez Requête.
Script : sélectionnez Ajouter du contenu dynamique et entrez l’expression suivante :
@concat('EXEC sys.sp_get_table_health_metrics ''', pipeline().parameters.schema_name, '.', pipeline().parameters.table_name, '''')
Cette expression produit la commande SQL qui exécute la procédure stockée sur votre table cible, par exemple : EXEC sys.sp_get_table_health_metrics 'dbo.FactSales'.
Vérifier la sortie du script
Exécutez le pipeline une fois et examinez la sortie de l’activité de script. Vous voyez un objet JSON similaire à :
{
"resultSetCount": 1,
"resultSets": [
{
"rowCount": 1,
"rows": [
{
"PotentialAnomalyType": 3,
"PotentialAnomalyDescription": "Too many small files...",
"FileCount": 2688,
"...": "..."
}
]
}
]
}
Important
Votre résultat réel peut varier en fonction de l’état de votre table. La clé est qu’elle retourne les colonnes exposées par sys.sp_get_table_health_metrics.
Étape 4 : Ajouter l’activité If Condition
L’activité If Condition lit PotentialAnomalyType directement à partir de la sortie de l’activité de script et prend une décision en fonction de son résultat. Utiliser les étapes suivantes :
Sous l’onglet Activités , sélectionnez If Condition pour ajouter une activité dans le canevas.
Nommez-le Vérifier l’anomalie.
Dessinez une flèche Succès (verte) de Check Table Health à Vérifier l’anomalie.
Sous l’onglet Activités de l’activité Condition If , définissez l’expression sur :
@greater(int(activity('Check Table Health').output.resultSets[0].rows[0]['PotentialAnomalyType']), 0)
Cette expression lit la première ligne renvoyée par sys.sp_get_table_health_metrics, convertit PotentialAnomalyType en entier et prend la valeur true lorsque la valeur est supérieure à zéro, ce qui indique une anomalie détectée dans la table cible.
Étape 5 : Ajouter l’activité Notebook (branche True)
Lorsque l’activité If Condition est sélectionnée, sélectionnez Modifier (icône de crayon) en regard de True. Le canevas passe à un sous-canevas associé à la branche True.
Faites glisser une activité Notebook sur le sous-canevas True.
Nommez-le Run OPTIMIZE.
Sous l’onglet Paramètres :
Bloc-notes : sélectionnez le bloc-notes Optimize-Table que vous avez créé à l’étape 1.
Développez les paramètres de base, puis ajoutez trois lignes :
Name Type Value lakehouse_nameChaîne @pipeline().parameters.lakehouse_nameschema_nameChaîne @pipeline().parameters.schema_nametable_nameChaîne @pipeline().parameters.table_name
Les trois valeurs de colonne de nom doivent correspondre exactement aux noms des variables dans la cellule de paramètre du bloc-notes.
Note
Vous pouvez laisser les activités « False » vides. L’activité If Condition traite une branche False vide comme n’effectuant aucune opération et signale que le pipeline a réussi.
Votre pipeline terminé devrait ressembler à ceci :
Étape 6 : Valider et exécuter
Sélectionnez Valider dans la barre d’outils du pipeline pour rechercher les erreurs de configuration.
Sélectionnez Exécuter pour exécuter le pipeline manuellement.
Surveillez l’exécution et confirmez :
-
Vérifiez l’intégrité de la table : inspectez la sortie de cette activité lorsqu’elle s’exécute. Vous devez voir la sortie de la
sys.sp_get_table_health_metricsprocédure stockée au format JSON. -
Vérifier l’anomalie : évalue correctement en lisant
PotentialAnomalyTypedirectement à partir de la sortie du script. -
Exécutez OPTIMIZE (uniquement si
PotentialAnomalyType > 0: si l’activité Vérifier l’anomalie a la valeur True, passez en revue l’entrée de l’activité Run OPTIMIZE pour vérifier qu’elle utilise les paramètres corrects (nom lakehouse, schéma et nom de table) et vérifiez la sortie pour passer en revue les messages de l’opérationOPTIMIZE.
-
Vérifiez l’intégrité de la table : inspectez la sortie de cette activité lorsqu’elle s’exécute. Vous devez voir la sortie de la
Nettoyer les ressources
Si vous avez créé des ressources uniquement pour ce didacticiel et que vous n’en avez plus besoin, supprimez les éléments suivants de votre espace de travail :
- Le pipeline Check-and-Optimize-Table.
- Le notebook Optimize-Table.
Contenu connexe
- sp_get_table_health_metrics (Transact-SQL)
- Directives de performance dans Fabric Data Warehouse