Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Azure Data Factory
  3. Concepts ADF
Extrait - Azure Data Factory Intégrez vos données avec le service serverless d'Azure
Extraits du livre
Azure Data Factory Intégrez vos données avec le service serverless d'Azure Revenir à la page d'achat du livre

Concepts ADF

Présentation générale

Azure Data Factory est organisé de façon simple, reprenant un vocabulaire connu et une organisation des composants similaire à de nombreux ETL.

Structure d'Azure Data Factory

Le service est déployé au sein d’Azure, le Cloud de Microsoft, et peut donc être provisionné et géré via plusieurs méthodes qui seront détaillées plus loin dans ce chapitre. Pour l’heure, il n’est pas possible de développer graphiquement un flux de données ADF ailleurs que depuis le portail dédié sur https://adf.azure.com ; les exemples qui suivent sont d’ailleurs réalisés depuis ce portail.

Ce chapitre détaille les différents éléments présents dans Azure Data Factory. L’ordre choisi afin de présenter ces éléments est important, en effet, l’objectif est de respecter l’ordre imposé par l’outil lors de la réalisation d’un flux de données classique. Ainsi, les services liés (Linked Services) sont présentés en premier, car sans eux impossible d’accéder aux ressources externes à Azure Data Factory, suivis des Integration Runtimes, véritables moteurs du service. Puis des jeux de données (Datasets) chargés de référencer et de décrire la donnée et qui pourront...

Correspondance SSIS - ADF

Le vocabulaire d’Azure Data Factory peut être déstabilisant, il existe beaucoup de nouveaux objets à appréhender. Vous trouverez ci-dessous un tableau permettant de faire une équivalence SSIS vers ADF.

Les deux outils sont basés sur des paradigmes différents, cette comparaison ne fait donc pas forcément sens et doit être perçue comme une piste de réflexion plutôt que comme une équivalence stricte.

Concept SSIS

Concept ADF

Instance SSIS

Service Azure Data Factory

Package

Pipeline

Tâche de flux de contrôle

Activité

Flux de données

Datas Flow (Mapping ou Wrangling)

Gestionnaire de connexion

Service lié

-

Jeu de données

-

Déclencheur

Gestionnaire d’évènement

-

Moteur d’exécution SSIS

Integration Runtimes

Outils de développement

Le développement de pipelines Azure Data Factory peut être réalisé via plusieurs outils : le portail adf.azure.com, le SDK .NET (C#), Azure PowerShell, les modèles ARM, l’API REST, Python. Cette multiplicité d’outils est une force majeure d’Azure Data Factory, elle permet une grande flexibilité d’usages et un apprentissage facilité par toute une communauté existante de développeurs.

SQL Server Integration Services a beaucoup souffert de la rigidité imposée par un format de fichier (.dtsx) fermé et non facilement modifiable hors de Business Intelligence Development Studio (BIDS)/SQL Server Data Tools (SSDT). Même si certains partenaires avaient développé le Business Intelligence Markup Language (BIML), cela restait difficile à utiliser et à mettre en place en entreprise. Microsoft a entendu le problème et Azure Data Factory n’en souffre pas grâce à ses différents outils permettant de créer des objets Azure Data Factory.

Cet ouvrage présente principalement le portail adf.azure.com, car celui-ci est le plus simple à prendre en main. De plus, il s’agit de la seule façon de réaliser graphiquement des flux dans une approche ETL proche de SSIS. Toutefois, la majorité des exemples est réalisée à partir des modèles JSON, car ceux-ci permettent une lecture simple et exhaustive des propriétés disponibles en s’abstrayant de la lourdeur d’une interface graphique qui parfois n’expose pas certaines propriétés. En outre, le portail ADF permet la modification du JSON depuis son interface graphique.

1. Portail Azure Data Factory

Disponible depuis https://adf.azure.com, le portail en ligne est l’outil le plus simple d’utilisation, celui-ci permettant de réaliser toutes les opérations graphiquement.

 Lors de l’accès au portail, il vous est demandé de sélectionner un Azure Active Directory, une souscription Azure ainsi que le nom de l’Azure Data Factory sur lequel vous souhaitez développer.

Portail Azure Data Factory

Cette sélection faite, l’interface de développement et de monitoring d’Azure Data Factory est alors affichée. Trois choix sont offerts à travers...

Azure Data Factory

Le service Azure Data Factory (Fabrique de données v2) est à provisionner au sein d’un groupe de ressources afin de pouvoir par la suite réaliser et exécuter des pipelines et activités. Le service ne permet que peu de configuration, en effet celui-ci a davantage un rôle de centralisation des objets enfants et de monitoring qu’un véritable rôle de moteur d’exécution.

1. Création du service

création d’un nouveau service Azure Data Factory

Lors de la création d’un nouveau service Azure Data Factory, les informations nécessaires sont :

  • Name : le nom du service, celui-ci est unique au sein d’Azure.

  • Subscription : il s’agit de l’abonnement auquel est attachée la ressource, la facturation aura lieu sur celui-ci.

  • Resource Group : le groupe de ressources sur lequel le service sera déployé.

  • Version : les valeurs possibles sont V1, V2 ou V2 with Data Flow (preview). La version actuelle est la V2. La version actuellement en preview concerne Data Flow, celle-ci est disponible uniquement si l’abonnement est autorisé par Microsoft.

  • Location : région sur laquelle sera déployé le service.

Aucune autre information n’est nécessaire, le service Azure Data Factory n’étant pas directement responsable du traitement de la donnée, celui-ci ne nécessite pas de configuration de taille...

Services liés

Les services liés (linked services) permettent de déclarer le lien entre Azure Data Factory et une ressource externe. Il peut s’agir d’une ressource de type stockage de données (Data Store) ou traitement (Compute). Chaque service lié doit utiliser un connecteur supporté par Azure Data Factory qui, en fonction du connecteur (Linked Service Type), nécessitera une configuration personnalisée telle qu’une chaîne de connexion (connection string), ainsi que les informations d’identification associés.

De nombreux connecteurs sont supportés, Microsoft les a séparés en sept catégories principales :

  • Azure : les sources de données Azure telles que le stockage Azure Blob ou Azure Data Lake.

  • Base de données : les bases de données telles que MySQL, Oracle ou SQL Server.

  • NoSQL : les systèmes Not only SQL tels que MongoDB ou Cassandra. À noter que pour pouvoir utiliser des données NoSQL, ADF va nécessiter une mise à plat des données et donc il faudra les structurer fortement.

  • Fichier : les systèmes de fichiers tels que FTP ou HDFS

  • Protocole générique : des protocoles de base tels que le HTTP ou le OData.

  • Services et applications : certains connecteurs ont été développés spécifiquement pour Azure Data Factory...

Integration Runtimes

Concept clé d’Azure Data Factory, l’Integration Runtimes est le moteur de traitement d’ADF, c’est lui qui est en charge de se connecter aux sources de données et de déplacer celles-ci, de réaliser les conversions de types de données, cela afin de réaliser le transfert des données de la source vers la destination.

Dans la section Azure Data Factory, il est indiqué que le service Azure Data Factory n’est pas un moteur d’exécution, en effet le rôle de moteur d’exécution est délégué aux Integration Runtimes.

Il existe trois types d’Integration Runtimes : Azure, Auto-Hébergé et Azure-SSIS. Le schéma ci-dessous explique certaines des différences entre les Integration Runtimes.

Integration Runtimes

1. Azure Integration Runtimes

Par défaut, lors de la création d’un service Azure Data Factory, un Azure Integration Runtimes est provisionné. Celui-ci est nommé AutoResolveIntegrationRuntimes et n’est pas configurable.

Azure Integration Runtimes

Celui-ci est nécessaire afin de pouvoir réaliser des traitements au sein d’ADF, il est en charge de la copie de données, des transformations… c’est la "machine" sur laquelle la logique est exécutée. Puisqu’il s’agit d’un Integration Runtimes Azure, celui-ci ne peut accéder qu’aux ressources disponibles depuis le Cloud public (Internet) et ne peut donc pas se connecter aux ressources des intranets d’entreprises, sauf si celles-ci sont accessibles depuis Internet.

Il est possible de créer des Azure Integration Runtimes supplémentaires afin de pouvoir spécifier la région où provisionner le moteur d’exécution. Dans le cas où celle-ci est "Auto Resolve", la région sera choisie en fonction des opérations à exécuter.

Il est important de s’assurer que la région de l’Integration Runtimes est au plus proche des sources, destinations, ou activités de traitement à réaliser.

La création d’un Azure Integration Runtimes est réalisable via le portail Azure Data Factory :

création d’un Azure Integration Runtimes

La seule attention à porter lors de la création est relative au nom qui ne peut contenir que des lettres, des chiffres...

Jeu de données

Un jeu de données (Dataset) permet de décrire et référencer la donnée. Il peut s’agir d’une table de base de données, d’un fichier JSON ou de n’importe quel type de donnée qui servira d’entrée ou de sortie dans une activité.

La définition JSON d’un jeu de données est la suivante :

{ 
   "name": "<nom du jeu de données>", 
   "properties": { 
       "type": "<type du jeu de données>", 
       "linkedServiceName": { 
               "referenceName": "<nom d'un service lié>", 
                "type": "LinkedServiceReference", 
       }, 
       "structure": [ 
           { 
               "name": "<nom d'une colonne>", 
               "type": "<type de la colonne>" 
           } 
       ], 
   ...

Activité

L’activité est l’élément Azure Data Factory en charge d’implémenter les actions à réaliser sur les données. Les activités sont classées dans le portail de la manière suivante : Batch Service, Databricks, Move & Transform, Data Lake Analytics, General, HDInsight, Iteration & Conditionals, Machine Learning.

images/2-6-1-EP-1.PNG

Le code JSON d’une activité est le suivant :

{ 
   "name": "Nom de l'activité", 
   "description": "description", 
   "type": "<Type de l'activité>", 
   "typeProperties": 
   { 
   }, 
   "linkedServiceName": "<Nom du service lié>", 
   "policy": 
   { 
   }, 
   "dependsOn": 
   { 
   } 
} 
  • name : paramètre obligatoire, le nom doit représenter l’action réalisée par l’activité, il est limité à 55 caractères et les caractères suivants ne sont pas autorisés : . ; + ; ? ; / ; < ; > ; * ; % ; & ; : ; \

  • description : paramètre facultatif, il est toutefois conseillé...

Pipeline

Un pipeline Azure Data Factory est un ensemble d’activités. En permettant de réunir plusieurs activités au sein d’un même objet, cela rend possible la mise en place de contraintes d’antécédence, la planification et le monitoring d’un ensemble métier de tâches, ce qui facilite grandement la maintenance. De plus, les pipelines peuvent être paramétrés afin d’augmenter la réutilisabilité de ceux-ci.

La définition JSON d’un pipeline est la suivante :

{ 
   "name": "Nom du pipeline", 
   "properties": 
   { 
       "description": "Description du pipeline", 
       "activities": 
       [ 
       ], 
       "parameters": { 
        } 
   } 
} 
  • name : paramètre obligatoire, le nom du pipeline est limité à 140 caractères et les caractères suivants ne sont pas autorisés : . ; + ; ? ; / ; < ; > ; * ; % ; & ; : ; \

  • description : paramètre facultatif, la description n’en est pas moins indispensable ; les API d’Azure Data Factory permettant de récupérer ces informations, cela permet de générer...

Déclencheur

Les déclencheurs (Triggers) permettent l’exécution d’un pipeline basé sur plusieurs types d’évènements : sur planification, sur intervalle, sur évènement.

Les déclencheurs (Triggers) sous Azure Data Factory

1. Déclencheur sur planification

Basé sur une horloge, ce déclencheur permet l’exécution des pipelines à heure fixe. Ce déclencheur permet une configuration avancée assez complexe, celle-ci est détaillée ci-dessous en se basant sur le modèle JSON suivant :

{ 
 "properties": { 
   "name": "<Nom du déclencheur>", 
   "type": "ScheduleTrigger", 
   "typeProperties": { 
     "recurrence": { 
       "frequency": <<Minute, Hour, Day, Week, Year>>, 
       "interval": <<int>>,  
       "startTime": <<datetime>>, 
       "endTime": <<datetime>>, 
       "timeZone": "UTC", 
       "schedule": {  
         "hours": [<<0-24>>], 
         "weekDays": [<<Monday-Sunday>>], 
         "minutes": [<<0-60>>], 
         "monthDays": [<<1-31>>], 
         "monthlyOccurrences": [ 
           { 
             "day": <<Monday-Sunday>>, 
             "occurrence": <<1-5>> 
           } 
         ] 
       } 
     } 
   }, 
 "pipelines": [ 
   { 
     "pipelineReference": { 
       "type": "PipelineReference", 
       "referenceName":...

Support des connecteurs

Les différents connecteurs n’offrent pas le même support en ce qui concerne leur utilisation en tant que source ou destination. De plus, certains peuvent être supportés sur l’Integration Runtimes Azure et d’autres sur un Integration Runtimes auto-hebergé. Les matrices ci-dessous récapitulent le support par connecteur ainsi que le type de service lié à indiquer lors de la création de celui-ci. La liste à jour est disponible sur le site de Microsoft https://docs.microsoft.com/fr-FR/azure/data-factory/concepts-datasets-linked-services.

Tous les connecteurs disponibles actuellement sont supportés par l’Integration Runtimes Auto Hébergé (Self Hosted IR).

1. Connecteurs Azure

Connecteur

Linked Service Type

Source

Destination

Azure IR

Azure Blob Storage

AzureBlob- Storage

X

X

X

Azure Cosmos DB (SQL API)

CosmosDb

X

X

X

Azure Data Lake Storage Gen1

AzureDataLakeStore

X

X

X

Azure Data Lake Storage Gen2 (Preview)

AzureBlobFS

X

X

X

Azure Database for MySQL

AzureMySql

X

X

Azure Database for PostgreSQL

AzurePostgreSql

X

X

Azure File Storage

FileServer

X

X

X

Azure SQL Database

AzureSql-Database

X

X

X

Azure SQL Database Managed Instance

SqlServer

X

X

Azure SQL Data Warehouse

AzureSqlDW

X

X

X

Azure Search Index

AzureSearch

X

X

Azure Table Storage

AzureTable-Storage

X

X

X

2. Connecteurs Base de données

Connecteur

Linked Service Type

Source

Destination

Azur IR

Amazon Redshift

Amazon Redshift

X

X

DB2

Db2

X

X

Drill (Preview)

Drill

X

X

Google BigQuery

GoogleBigQuery

X

X

Greenplum

Greenplum

X

X

HBase

HBase

X

X

Hive

Hive

X

X

Apache Impala (Preview)

Impala

X

X

Informix

Odbc

X

MariaDB

MariaDB

X

X

Microsoft Access

Odbc

X

MySQL

MySql

X

X

Netezza

Netezza

X

X

Oracle

Oracle

X

X

X

Phoenix

Phoenix

X

X

PostgreSQL

PostgreSql

X

X

Presto (Preview)

Presto

X

X

SAP Business Warehouse

SapBw

X

SAP HANA

SapHana

X

X

Spark

Spark

X

X

SQL Server

SqlServer

X

X

X

Sybase

Sybase

X

Teradata

Teradata

X

Vertica

Vertica

X

X

3. Connecteurs NoSQL

Connecteur

Linked Service Type

Source

Destination

Azure IR

Cassandra

Cassandra

X

X

Couchbase (Preview)

Couchbase

X

X

MongoDB

MongoDb

X

X

4. Connecteurs Fichiers

Connecteur

Linked Service Type

Source

Destination

Azure IR

Amazon S3

AmazonS3

X

X

File System

FileServer

X

X

X

FTP

FtpServer

X

X

HDFS

Hdfs

X

X

SFTP

Sftp

X

X

5. Connecteurs génériques

Connecteur

Linked Service Type

Source

Destination

Azure IR

Generic HTTP

HttpServer...