DeepDiff est une bibliothèque Python reconnue pour sa capacité à comparer et manipuler des structures de données complexes. Depuis sa version 5.2.0, DeepDiff offre une interface en ligne de commande (CLI), permettant d'accéder à ses fonctionnalités clés sans nécessiter d'écriture de code Python. Cet article détaillera les capacités et l'utilisation de cet outil CLI.
Présentation de l'Interface en Ligne de Commande
L'outil CLI de DeepDiff met à disposition quatre commandes principales :
deep diff: Compare le contenu de deux fichires.deep grep: Recherche des motifs spécifiques au sein d'un fichier.deep extract: Extrait des données à partir d'un chemin donné dans un fichier.deep patch: Applique des modifications à un fichier cible à partir d'un fichier de différences.
Ces commandes supportent divers formats de fichiers, notamment CSV, TSV, JSON, YAML et TOML.
Comparaison de Fichiers : la commande deep diff
La commande deep diff constitue la fonction centrale de DeepDiff pour identifier les divergences entre deux fichiers.
Utilisation Fondamentale
deep diff fichier_source.csv fichier_cible.csv
Paramètres Courants
--ignore-order: Ignore les variations d'ordre des éléments dans les collections.--group-by: Regroupe les comparaisons selon un champ spécifié.--ignore-case: Ignore la casse lors de la comparaison de chaînes de caractères.--significant-digits: Définit le nombre de chiffres significatifs pour les comparaisons numériques.--create-patch: Génère un fichier de différences utilisable par la commandedeep patch.
Exemples Pratiques
Considérons deux fichiers CSV, clients_v1.csv et clients_v2.csv :
Contenu de clients_v1.csv :
prenom,nom,code_postal
Jean,Dupont,75001
Marie,Durand,69002
Pierre,Martin,13003
Contenu de clients_v2.csv :
prenom,nom,code_postal
Jean,Dupont,75001
Marie,Durand,69002
Pierre,Martin,13004
1. Comparaison Simple :
deep diff clients_v1.csv clients_v2.csv --ignore-order
La sortie indiquera la modification du champ code_postal pour l'entrée correspondant à 'Pierre Martin'.
2. Comparaison Groupée par Nom :
deep diff clients_v1.csv clients_v2.csv --ignore-order --group-by nom
Cette approche rendra les chemins dans la sortie plus lisibles, par exemple root['Martin']['code_postal'].
Recherche de Données : la commande deep grep
La commande deep grep permet de localiser des informations spécifiques au sein d'un fichier structuré.
Utilisation Basique
deep grep "terme_recherche" chemin_fichier
Paramètres Utiles
-iou--ignore-case: Effectue une recherche insensible à la casse.--exact-match: Exige une correspondance exacte du terme recherché.
Exemple
deep grep --ignore-case marie clients_v1.csv
La console affichera les chemins vers les occurrences du terme 'marie' (ou 'Marie') dans le fichier.
Extraction de Données : la commande deep extract
La commande deep extract est utilisée pour récupérer des éléments de données situés à des chemins spécifiques dans un fichier.
Syntaxe Générale
deep extract "chemin_donnees" chemin_fichier
Exemple
deep extract "root[2]['prenom']" clients_v1.csv
Cette commande retournera la valeur 'Pierre'.
Application de Correctifs : la commande deep patch
Similaire à l'utilitaire patch des systèmes Unix, deep patch est conçu pour les données structurées.
Processus d'Utilisation
1. Créez un fichier de différences en utilisant deep diff :
deep diff clients_v1.csv clients_v2.csv --ignore-order --report-repetition --create-patch > corrections.patch
2. Appliquez ensuite ce correctif au fichier cible :
deep patch --backup fichier_a_corriger.csv corrections.patch
Points Importants
- Les fichiers de correctifs sont en format binaire et ne sont pas lisibles directement.
- Le format du fichier original peut être modifié après l'application du correctif.
- L'argument
--backupest fortement recommandé pour créer une copie de sauvegarde du fichier avant modification.
Suggestions d'Applications Réelles
- Validation de Données : Intégrez
deep diffdans vos pipelines ETL pour vérifier l'intégrité et la cohérence des données avant et après transformation. - Gestion de Configurations : Comparez aisément différentes versions de fichiers de configuration pour identifier les changements.
- Correction de Données : Mettez en œuvre des mécanismes de correctifs pour résoudre en masse des problèmes de données.
- Exploration de Données : Utilisez les commandes
grepetextractpour une exploration rapide et ciblée de vos jeux de données.
Considérations de Performance
Pour l'analyse de fichiers volumineux, les paramètres suivants peuvent optimiser la performance :
--cache-size: Configure la taille du cache.--max-passes: Limite le nombre maximal de passes de comparaison.--log-frequency-in-sec: Ajuste la fréquence d'affichage des journaux.