Blog ENI : Toute la veille numérique !
🎁 Jusqu'au 31/12, recevez notre
offre d'abonnement à la Bibliothèque Numérique. Cliquez ici
🎁 Jusqu'au 31/12, recevez notre
offre d'abonnement à la Bibliothèque Numérique. Cliquez ici

Ingérer des données dans Fabric

Introduction

Dans le chapitre précédent, nous avons évoqué la façon dont nous pouvons intégrer et transformer des données dans Fabric.

Dans ce chapitre, nous allons développer ces capacités d’ingestion de données en détaillant pas à pas différentes méthodes d’ingestion de données en mode batch. Nous aborderons également l’ingestion en mode temps réel avec des flux de données en streaming, qui sera développée dans un chapitre dédié. Enfin, nous fournirons des éléments pour choisir la méthode d’ingestion la plus adaptée au type de données à intégrer dans Fabric.

Les différents types d’ingestion de données

  • L’ingestion par lot (batch ingestion) : cette méthode consiste à ingérer des données volumineuses et structurées à une fréquence régulière, par exemple une fois par jour ou par semaine. Les données sont généralement stockées dans un Data Lake ou un Datawarehouse, où elles peuvent être ensuite traitées par des outils d’analyses ou de transformations. Cette méthode convient aux données qui n’ont pas besoin d’être analysées en temps réel, et qui ont un schéma fixe et connu à l’avance. Parfois, les outils permettant de faire de l’ingestion par lot offrent également des capacités d’orchestration.

  • L’ingestion en continu (stream ingestion) : cette méthode consiste à ingérer des données qui arrivent en flux constant et à haute vitesse, par exemple des données issues de capteurs, de clics, de transactions ou de réseaux sociaux. Les données sont généralement envoyées vers un service de traitement de flux, où elles peuvent être analysées en temps réel et/ou stockées dans des stockages de données qui peuvent être par exemple un Data Lake ou bien une base de données...

Ingestion en mode ETL vs ELT

Les modes d’ingestion de données ETL (Extract, Transform, Load) et ELT (Extract, Load, Transform) sont deux approches différentes pour le traitement et le stockage des données (https://go.fabricbook.fr/ch5-4).

Ces trois phases permettent de garantir que les données sont précises, cohérentes et prêtes à être utilisées pour des prises de décision éclairées.

  • La phase d’extraction consiste à collecter les données brutes provenant de diverses sources, telles que des bases de données, des fichiers plats, des API ou des systèmes externes. L’objectif est de rassembler toutes les données nécessaires pour les étapes suivantes.

  • La phase de transformation va permettre, une fois les données extraites, de les faire passer par une série de transformations pour les nettoyer, les normaliser et les structurer. Cela peut inclure des opérations telles que le filtrage des données, la conversion de formats, l’agrégation, et l’application de règles métier pour s’assurer que les données sont cohérentes et prêtes à être analysées.

  • Enfin, la phase de chargement consiste à charger les données transformées dans un entrepôt de données ou une base de données cibles. Cette...

Les méthodes d’ingestion de données dans Fabric

Comme nous l’avons vu précédemment, les interfaces de Fabric sont organisées par expérience. L’expérience qui permettra de travailler sur l’ingestion de données est l’expérience Data Factory.

images/05ri01.png

Le nom Data Factory n’est pas apparu avec Fabric. En effet, Data Factory représentait déjà depuis plusieurs années un service spécifique au sein d’Azure dédié à l’intégration et la transformation de données ainsi qu’à l’orchestration des mouvements de ces données dans le Cloud.

Azure Data Factory a été adopté par de nombreuses sociétés pour analyser et exploiter les données massives au travers de ce service capable de coordonner et d’exécuter des processus qui transforment les données brutes issues de sources de données applicatives, d’immenses entrepôts de données ou autres types de sources de données en informations utiles pour le métier.

C’est donc dans cette philosophie qu’ont été repris les concepts d’Azure Data Factory pour créer l’expérience Data Factory dans Fabric conçue pour ces projets complexes de manipulation et d’intégration des données...

Ingérer de la donnée manuellement dans OneLake

Comme nous l’avons vu précédemment (cf. chapitre Du Lakehouse à la première analyse - sous-section OneLake), le Data Lake OneLake s’accompagne de l’outil OneLake file explorer qui s’installe sur le poste de travail et va permettre le chargement manuel de données au sein de Fabric.

Une fois installé, le OneLake file explorer permettra de visualiser et naviguer dans l’ensemble de l’arborescence des environnements Lakehouse d’un tenant Fabric.

La démarche d’import de données est donc plutôt simple puisqu’il suffit de déplacer un fichier dans le dossier de l’espace de travail correspondant à la destination pour pouvoir visualiser ce fichier directement dans le Lakehouse Fabric. Celui-ci sera ensuite synchronisé automatiquement.

À noter qu’il est également possible, pour de très petites tables, de copier directement les fichiers d’une table Delta Parquet depuis le dossier Tables d’un Lakehouse pour les insérer manuellement dans le dossier Tables d’un autre Lakehouse depuis le OneLake file explorer. Cependant, cette méthode n’est pas performante pour des tables conséquentes et ne permet pas de traçabilité de la création de la table comme le permettent les flux d’ingestion....

Les passerelles (data gateway)

Fabric étant un service cloud, pour des raisons de sécurité, il ne pourra pas lui-même accéder directement à des données qui sont hébergées en local ou bien au sein d’un réseau privé.

Pour ce faire, il sera nécessaire d’installer un composant intermédiaire permettant de recevoir les requêtes provenant du service Fabric et de faire la passerelle avec les environnements sécurisés.

 Sélectionnez l’icône permettant d’accéder aux paramètres de Fabric, puis sélectionnez Gérer des connexions et des passerelles :

images/05ri110.png

 Sur la page des paramètres des connexions et passerelles, sélectionnez le bouton + Nouveau :

images/05ri111.png

 Vous pouvez alors paramétrer une nouvelle connexion basée sur une passerelle :

images/05ri03.png

Ce composant intermédiaire est appelé Data Gateway et se présentera sous trois formes :

  • La Cloud data gateway : la passerelle par défaut hébergée et gérée nativement dans Fabric permettant de se connecter aux sources de données cloud ;

  • L’On-premises data gateway : pour accéder à des environnements en local ;

  • La Virtual Network (VNet) data gateway : pour accéder à des environnements hébergés dans...

Ingérer des données avec les flux de données Gen2 - Dataflows Gen2

Les flux de données Gen2 se basent sur la fonctionnalité d’intégration de données nommée Power Query qui a été largement adoptée par de nombreux utilisateurs d’Excel, de Power BI, de la Power Platform, ou encore de Dynamics 365 Insights. C’est pourquoi il était évident de proposer cette expérience au travers de Fabric.

En effet, Power Query est un outil puissant d’ETL en mode low-code no-code qui permet aux utilisateurs de se connecter à une large gamme de sources de données, de nettoyer et de transformer ces données avant de les charger dans dans un environnement d’analyse et visualisation. Grâce à une interface simple d’utilisation, Power Query facilite l’ingestion des données au travers de connecteurs prêts à l’emploi pour adresser de nombreuses sources de données, la préparation des données en permettant de réaliser des opérations telles que le filtrage, l’agrégation et la conversion de formats, puis, une fois les données transformées, leur chargement grâce à d’autres connecteurs vers des destinations de stockage de données. Power Query s’est fait principalement connaître au travers de son utilisation dans Power BI car il offre une meilleure efficacité dans la gestion des données, rendant le processus de préparation des données plus accessible et moins technique.

1. Utilisation des flux de données Gen2 (Dataflow Gen2) pour l’import de données dans Fabric

Dans le cadre des prochaines étapes, nous allons intégrer des données du jeu de données d’exemple Microsoft nommé Wide World Importers.

Nous allons profiter ici des capacités des Flux de données Gen2 pour récupérer un fichier source au format CSV concernant une liste de clients qui est présent sur le compte de stockage.

Nous effectuerons quelques modifications comme la suppression de lignes vides, l’ajout des en-têtes de colonnes ou la suppression de lignes parasites, ce qui nous permettra ainsi d’avoir une première table avec les données clients.

Nous récupérerons...

Ingérer des données avec des Pipelines de données (Data Pipelines)

Les Pipelines de données dans Fabric permettent de gérer de manière fiable et efficace des flux de données de bout en bout et notamment de gérer l’ingestion, la transformation et le chargement des données au travers de l’enchaînement d’étapes qui peuvent appeler différents moteurs de traitement de données. Ils permettent de centraliser et d’orchestrer des mouvements de données provenant de diverses sources, grâce à des fonctionnalités avancées de connectivité, et avec une grande scalabilité. Grâce à des outils de monitoring intégrés, ils permettent de suivre en temps réel l’état des flux de données et détecter rapidement les anomalies ou les erreurs.

À présent, nous allons chercher à intégrer les données concernant les employés au travers d’un Pipeline de données. Pour cela, nous allons nous laisser guider par un assistant de copie qui va nous accompagner via des interfaces graphiques pour récupérer un fichier CSV contenant des informations sur les employés puis importer ces données directement dans l’entrepôt de données pour enfin créer une dimension employés

1. Utilisation des Pipelines pour intégrer des données dans Fabric

Nous allons à présent voir comment réaliser le même scénario d’intégration de nos fichiers CSV mais cette fois-ci au travers des Pipelines dans l’expérience Data Factory de Fabric.

 Sur la page d’accueil de Fabric, sélectionnez l’expérience Data Factory :

images/05ri57.png

 Sélectionnez cette fois Pipeline de données :

images/05ri58.png

 Entrez un nom pour...

Intégrer des données en direct vers un Warehouse Fabric

Fabric met à disposition une instruction T-SQL permettant de réaliser une copie directe de données depuis un Azure Data Lake Storage Gen2 vers un Warehouse Fabric. 

L’instruction T-SQL COPY INTO va effectuer une ingestion de données à haut débit et représente la méthode la plus performante pour ingérer des données dans un Warehouse à partir d’un compte de stockage.

Au travers d’une requête en T-SQL, nous allons à présent créer dans l’entrepôt de données une nouvelle table de dimension des stocks, puis nous allons y importer les données à partir d’un fichier CSV contenant des données de stocks.

 Dans les expériences Fabric, sélectionnez l’expérience Data Warehouse.

images/05ri75.png

 Sélectionnez ensuite le Warehouse précédemment créé :

images/05ri76.png

 Sélectionnez Nouvelle requête SQL puis à nouveau Nouvelle requête SQL :

images/05ri77.png

Nous allons à présent créer une nouvelle table qui accueillera nos données de stock présentes dans un fichier CSV de notre Blob Storage.

 Entrez le code T-SQL suivant qui va créer une table StockItems à partir de la définition de 20 colonnes, puis sélectionnez...

Ingérer des données via des Notebooks Spark

L’ingestion de données via des Notebooks Spark va permettre d’utiliser des librairies Spark ou Pandas afin d’ingérer des données dans le Lakehouse Fabric.

Nous allons maintenant, au travers d’un Notebook Spark, nous connecter sur notre compte de stockage, puis charger dans un dataframe les données concernant les villes. Nous chargerons dans un premier temps ces données au format Parquet dans le Lakehouse, puis nous effectuerons quelques modifications sur les données comme la création d’une nouvelle colonne, pour enfin charger ces données de manière optimisée dans une table de dimension villes dans le Lakehouse.

La création d’un Notebook est accessible au travers de l’expérience Data Engineering :

images/05ri84.png

 Parmi les différentes options, sélectionnez Bloc-notes :

images/05ri85.png

L’interface de Notebook Fabric s’affiche. Vous pourrez alors renommer le Notebook par exemple Import_dim_city.

 Sélectionnez ensuite le bouton Ajouter permettant d’attacher un Lakehouse à ce Notebook :

images/05ri86.png

 Sélectionnez le Lakehouse créé précédemment dans lequel vous allez copier vos données :

images/05ri87.png

Nous allons commencer par créer une première cellule dans laquelle nous allons insérer le code en PySpark (Python pour Spark) suivant.

Dans ce code, nous allons commencer par définir les informations nécessaires à la définition de la source de données.

 Dans votre Notebook, entrez le code suivant qui va permettre de nous connecter au compte de stockage public utilisé précédemment où nous allons récupérer le fichier CSV correspondant à la dimension City de notre jeu de données source.

 Remplacez la valeur sas_token par le jeton SAS de votre compte de stockage et modifiez les noms du compte de stockage, du container et du dossier puis...

Ingérer des données temps réel

Au-delà de l’ingestion en mode batch, Fabric offre la possibilité d’intégrer des flux de données en streaming.

L’ingestion de flux en streaming est gérée au travers de l’expérience Data Science.

images/05ri93.png

L’expérience Data Science va permettre d’importer dans Fabric des flux en streaming de deux façons différentes :

  • En se connectant directement à des sources externes

    Les sources de données externes à Fabric vont permettre de connecter à des sources de données en streaming au sein d’Azure comme Azure Event Hub ou Azure IoT Hub, tout comme des sources de données proposées par d’autres fournisseurs de sources de données en streaming comme Amazon Kinesis Data Streams, Google Cloud Pub/Sub ou encore Confluent Cloud Kafka. Vous pouvez accéder aux différents connecteurs supportés par Fabric en sélectionnant l’icône du Hub en temps réel à gauche de l’interface Fabric :

images/05ri94.png
  • En créant un custom endpoint

    Les custom endpoints vont permettre de créer des points de terminaison déployés, hébergés et managés directement au sein de Fabric.

    Il sera ainsi possible de créer un point de terminaison de type Event hub, AMQP ou Kafka et d’avoir accès...

Utilisation de Copilot pour ingérer et transformer des données

Dans le cadre des activités d’intégration de données, nous avons la possibilité de nous appuyer sur deux fonctionnalités Copilot dans Fabric :

  • Copilot pour Data Factory ;

  • Copilot pour la science des données et l’ingénierie des données, que nous nommerons ici Copilot pour les Notebooks.

Copilot dans Data Factory est une avancée technologique majeure qui va changer la manière dont les utilisateurs interagissent avec les données et les flux d’intégration.

Grâce à l’intelligence artificielle, Copilot permet de générer automatiquement du code M (le langage utilisé par Power Query pour exécuter les actions de transformation de données générées de manière graphique par l’utilisateur), ou bien du code Python dans les Notebooks pour transformer les données à partir de la demande de l’utilisateur en langage naturel. De ce fait, même des utilisateurs qui n’auraient pas spécialement de compétences techniques avancées peuvent créer des solutions d’intégration de données complexes en décrivant simplement leurs besoins en langage courant. De plus, Copilot fournit des explications détaillées du code généré, ce qui permet d’aider les utilisateurs à comprendre les requêtes et les tâches complexes.

Copilot va donc permettre d’améliorer grandement...

Ingestion de données avec Apache Airflow

1. Qu’est-ce que Apache AirFlow ?

Le workload Data Factory propose une intégration de la technologie Apache Airflow.

Apache Airflow est un outil open source de gestion de flux de données qui permet de programmer, organiser et surveiller des tâches de traitement de données développées en python.

Il a été créé par un ingénieur de la société AirBnB qui, au moment de sa forte croissance, avait besoin d’un outil permettant à ses Data Scientists, Data Analysts et Data Engineers d’orchestrer les Pipelines de traitement de données (https://go.fabricbook.fr/ch5-3).

Comme nous le verrons dans un prochain chapitre (cf. chapitre Transformation avancée des données), Airflow permet aux développeurs de définir des orchestrations de tâches de traitements de données en développant ces flux en Python grâce à l’utilisation de classes et des bibliothèques dédiées.

Airflow est particulièrement apprécié pour sa capacité à gérer des flux complexes. Il est notamment excellent pour orchestrer des tâches ayant des dépendances compliquées sur plusieurs systèmes externes. Parfois, certaines étapes d’un workflow ne doivent être exécutées...

Quelle fonctionnalité choisir pour ingérer mes données ?

Parmi ce lot de capacités d’intégration de données, on peut à juste titre se demander quelle méthode utiliser pour intégrer ses premières données dans Fabric.

Microsoft fournit quelques indications dans le choix de la méthode à utiliser en fonction des données à importer :

  • Si le fichier est petit et qu’il est stocké sur une machine locale, la recommandation est d’utiliser l’import manuel depuis OneLake File Explorer.

  • Si le volume de données est faible ou qu’il est nécessaire d’utiliser un connecteur spécifique, la recommandation est d’utiliser un Dataflow Gen2 qui propose des interfaces graphiques intuitives avec de nombreux connecteurs vers des sources de données de tout type.

  • Si le volume de données est assez important, il est recommandé dans ce cas de passer par la fonction Copy des data Pipelines.

  • S’il est nécessaire d’effectuer des opérations complexes sur les données au moment de l’intégration, il sera alors recommandé d’utiliser du code au travers de Notebook Spark.

Dans le cas d’un fichier de taille moyenne, sur une source de données relativement commune, on peut alors encore hésiter entre créer un flux de données...

Ingérer des données dans Fabric depuis un outil externe

Si vous utilisez un outil d’intégration de données du marché, il est possible qu’il vous permette déjà d’intégrer des données au sein de Fabric.

En effet, OneLake reposant le format de données open sources Delta, de nombreuses solutions vont rapidement permettre une intégration native de données Delta au sein de OneLake.  

Mais avant tout, Fabric se veut une plateforme ouverte qui va permettre aux éditeurs de logiciels indépendants (ISV) de s’intégrer de manière transparente à Fabric de différentes façons :

  • Le premier niveau est une interopérabilité avec OneLake au travers des connecteurs disponibles dans les workloads Data Factory ou Real-Time Intelligence, ainsi que les fonctionnalités shortcuts, data sharing, mirroring ou encore les REST API de OneLake. Par exemple, OneLake prend en charge les API et les SDK Azure Data Lake Storage Gen2 existants, ce qui permet aux éditeurs de lire, d’écrire et de gérer des données dans OneLake de manière native s’ils avaient déjà développé les capacités d’interactions avec ADLS Gen2.

  • Le second niveau permet aux éditeurs de profiter de OneLake, mais également de développer des applications...