Contexte
Nous sommes souvent amenés à travailler avec beaucoup de sources de données semi structurées. XML et Json font partie des formats les plus utilisés surtout dans le services bancaires, magasins de vente au détail en ligne et intégration de systèmes industriels
Dans notre contexte nous recevons un fichier quotidien XML qui contient des données sur les clients, un Json qui contient la dimension pays et nous essaierons de les transformer en tables delta pour pouvoir l’exploiter via SQL et mettre le résultat final dans un datamart final
Structure du fichier XML

Structure du fichier Json

Installer la bibliothèque XML
Aucune bibliothèque XML native n'est disponible avec Databricks lorsque nous créons un espace de travail. Nous devons en installer une. Voici les instructions à suivre pour installer la bibliothèque com.databricks:spark-xml

Access Azure Data Lake Storage Gen2
Vous pouvez accéder en toute sécurité aux données d'un compte de stockage Azure à l'aide d'OAuth 2.0 avec un principal de service d'application Azure Active Directory (Azure AD) pour l'authentification ; consultez Configurer l'accès au stockage Azure avec un principal de service Azure Active Directory.

• 1 <client-id> with the Application (client) ID for the Azure Active • 2 <scope> with the Databricks secret scope name. • 3 <key> with the name of the key containing the client secret. • 4 <storage-account> with the name of the Azure storage account
Lecture des fichiers XML et Json
En exploitant les fichiers avec le format Texte, ça nous renvoie le contenu des fichiers avec le format non structuré
XML

JSON

Création de la table delta contacts à partir d’un XML

Notre première table est la table contact, elle est alimentée par notre fichier XML ,avant de créer le Data-frame qui va alimenter la table finale, on commence par définir la structure s de notre output, ensuite on crée le df qui nous permet via les paramètres mentionnés dans le code de « flatten » le dataset
S = structure du jeu de donnée de sortie
rooTag = c’est l’élément parent de tous les élément du fichier XML rowTag = c’est l’élément équivalent d’une ligne dans ta table finale
En Scala
Une des spécificités de Databricks est sa capacité de supporter plusieurs langages comme Scala aussi, on vous met à dispo la même manipulation de la création d’un data-frame à partir d’un xml en sacala

Rajout de colonnes
Dans notre use case, on aimerait bien créer un champ prénom et un champ nom à partir de la colonne name On va utiliser la fonction split Pour l’utiliser il faut importer pyspark.sql.functions

Création de la table Country à partir d’un JSON

Création de la table finale en SQL

Conclusion
Le but de cet article c’est de démontrer la capacité et la simplicité de Databricks a traiter des données semi structurées, L’approche ELT que la plateforme propose pour faire de la data transformation permet de centraliser les différentes étapes (formatage, Conversion , jointure et rajout de donnée) dans un seul notebook et un seul dataflow ,la plateforme supporte plusieurs langages aussi comme python,Scal et SQL ce qui fait qu’elle est considérée comme la plateforme la plus collaborative du marché
Ce datflow réalisé mettra à dispo pour nos data analysts un datamart pour leur permettre de créer des Dashboards pour les équipes marketing sur la répartition des clients en France. Grâce à la disponibilité du connecteur databricks dans tous les outils de reporting et de dataviz du marché comme Powerbi et Tableau, ils peuvent se connecter facilement au dataset réalisé
Finalement Databricks nous a permis de passer d’un état ou la donnée était obsolète à un état très business orienté
