Table of Contents
Introduction aux flux de données Azure Data Factory
Azure Data Factory (ADF) est un service d'intégration de données entièrement géré et basé sur le cloud qui permet aux organisations d'orchestrer et d'automatiser le mouvement et la transformation des données. A l'origine, ADF fournit un environnement visuel sans code pour construire des pipelines ETL et ELT. Parmi ses capacités les plus puissantes, il y a la fonction Data Flow, qui permet aux ingénieurs de données de concevoir des transformations complexes de données à l'aide d'une toile graphique plutôt que d'écrire un code traditionnel.
Les flux de données sont construits sur des grappes Apache Spark gérées par Azure, fournissant une exécution élastique et performante. Ils vous permettent d'effectuer un large éventail d'opérations – y compris le filtrage, l'agrégation, l'assemblage, le pivotement et l'application d'expressions personnalisées – sans avoir à écrire de code Spark. Cette abstraction réduit le temps de développement, réduit la barrière pour les utilisateurs moins techniques et garantit que les transformations restent durables et vérifiables.
Comprendre l'architecture des flux de données ADF
Pour tirer parti efficacement des flux de données, il est essentiel de saisir leur architecture sous-jacente. Chaque flux de données fonctionne sur un cluster temporaire Spark qui est lancé au moment de l'exécution et terminé après l'achèvement. Cette conception assure un bon rapport coût-efficacité – vous ne payez que pour les ressources de calcul consommées pendant la transformation.
Modes d'exécution
Les flux de données ADF supportent deux modes d'exécution primaires:
- Mode de débogage – Utilisé pour les tests interactifs et le développement. Il fonctionne sur un petit cluster Spark (8 cœurs) et vous permet de prévisualiser les données à chaque étape de transformation. Le mode de débogage est essentiel pour valider la logique avant le déploiement de la production.
- Mode de course de la puce – Utilisé pour les exécutions de production programmées ou déclenchées. Vous pouvez spécifier les paramètres de cluster tels que le type de calcul (Général But, Mémorial Optimisé), le nombre de cœurs et le temps de vie (TTL) pour optimiser le coût et les performances.
La compréhension de cette distinction est essentielle pour estimer les coûts et les performances. Dans la production, toujours tester les transformations en mode Debug localement avant de les déployer dans des pipelines.
Flux de données vs activité de copie
Les flux de données, inversement, sont destinés aux transformations schématiques. Bien que Copy Activity puisse effectuer des mappages et des conversions de type simples à l'aide de l'onglet Mapping, Data Flows offre des dizaines de types de transformation et la capacité de gérer une logique d'affaires complexe.
Composantes clés d'un flux de données
Chaque flux de données se compose de trois grandes catégories de composants : Sources, Transformations et Sinks. De plus, vous pouvez utiliser Paramètres et Variables[ pour rendre vos flux dynamiques et réutilisables.
1. Source
Azure Data Factory prend en charge un large éventail de types de sources, y compris Azure Blob Storage, Azure Data Lake Storage Gen2, Azure SQL Database, Synapse Analytics, Amazon S3, Google Cloud Storage et les bases de données sur site via des runtimes d'intégration auto-installés. Chaque source peut être configurée avec des détails de connexion, un format de fichier (Parquet, CSV, JSON, Avro, ORC) et une définition de schéma.
Une pratique exemplaire consiste à utiliser Parquet ou Delta Lake des formats source et évier en raison de leur efficacité de stockage et de compression colonnelar. Ces formats accélèrent considérablement les opérations de lecture/écriture et réduisent les coûts.
2. Transformations
Les flux de données ADF offrent une riche bibliothèque d'activités de transformation, qui peuvent être classées en :
- Modificateurs de la bande:[ Filtre, tri et ligne alter (pour les opérations d'insertion/mise à jour/supprimer).
- Modificateurs de colonne:[ Sélectionner, colonne dérivée, agrégat, fenêtre, pivot, unpivot et classement.
- Inputs/extrants multiples: Rejoignez, Lookup, Existe, Union et Split Conditionnel.
- Modificateurs de schéma:[ Nouvelle succursale, Assert (règles de qualité des données), et clé de substitution.
La transformation Colonne dérivée est particulièrement puissante : vous pouvez construire des expressions en utilisant un constructeur d'expression intégré qui comprend des fonctions de manipulation de chaînes, d'arithmétique date/heure, d'opérations mathématiques et de correspondance de motifs (similaire à SQL). Par exemple, vous pouvez créer une nouvelle colonne `FullName` en concatérant `FirstName` et `LastName` avec un espace.
3. Évier
Comme les sources, les puits peuvent être n'importe quel magasin de données supporté. Les paramètres critiques comprennent le format de fichier, la stratégie de partition (Hash, Dynamic, Round Robin ou Nom de fichier), et le mode de sortie (Append vs. Overwrite). Pour les puits de Delta Lake, vous pouvez activer Merge, Mise à jour ou Upsert, permettant aux flux de données d'agir comme un mini chargeur d'entrepôt de données.
Mise en oeuvre de transformations complexes : un scénario détaillé
Let-S marche à travers un exemple réel : Customer 360 Enrichment. Imaginez que vous avez trois sources de données brutes :
- Profils des clients (CSV de Blob Storage)
- Historique des transactions (Parquet de ADLS Gen2)
- Catalogue de produits (base de données Azure SQL)
L'objectif est de créer un ensemble de données enrichi unique qui contient pour chaque client : leur démographie, les dépenses totales, les préférences de la catégorie de produits et une étiquette de niveau de fidélité.
Étape 1: Charger et nettoyer les sources
Pour les profils clients, utilisez une colonne dérivée pour normaliser le format `DateOfBirth` et supprimer les lignes avec des adresses e-mail nulles. Pour les transactions, filtrez les transactions remboursées (où `Montant < 0`). Pour le catalogue de produits, joignez le nom de catégorie avec l'ID de catégorie.
Étape 2: Rejoignez les transactions avec les clients
Ajouter une transformation pour combiner les profils clients nettoyés et l'historique des transactions sur `DonaldID`. Utilisez une jointure interne pour exclure les clients sans transaction. Ensuite, utilisez une ] transformation de sélectionner pour déposer des colonnes dupliquées (par exemple, renommer `DonaldID` à partir de la deuxième entrée).
Étape 3: Total par client
Connecter la sortie jointe à une transformation Agrégat. Groupe par `PersonnerID` et `PersonnerName`, et calculer Sum(Montant) en tant que dépenses totales, Component(TransactionID)[ en tant que transactionCount, et Max(TransactionDate) en tant que date de la dernièreachat.
Étape 4: Enrichir avec les préférences du produit
Utilisez une seconde Join pour joindre le catalogue de produits sur `ProductID` (qui existe dans la source transactionnelle). Ensuite, ajoutez une Pivot transformation pour convertir les noms de catégorie en colonnes (par exemple, Électronique, Vêtements, Maison) avec le nombre d'achats par catégorie.
Étape 5 : Déterminer le niveau de fidélité
Ajouter une transformation Colonnes déséparées qui utilise la logique ift-else imbriquée pour attribuer des niveaux de fidélité: `if(TotalSpend > 10000, --Gold, if(TotalSpend > 5000, --Silver, --Bronze))`.
Étape 6: Écrire des données enrichies
Connectez la sortie finale à un Sink qui cible une table de base de données SQL Azure ou un dossier Delta Lake dans ADLS Gen2. Configurez l'évier pour utiliser Upsert comportement sur `PersonnalID` de sorte que les prochains lances mettent à jour les enregistrements existants au lieu de les dupliquer.
Ce processus est conçu visuellement, chaque étape pouvant être testée en mode Debug. Le pipeline résultant est maintenu, auto-documenté et peut être programmé à l'heure ou à la journée.
Meilleures pratiques pour les flux de données à haut rendement
Optimiser les performances de flux de données est essentiel pour travailler avec les téraoctets de données.
- Utilisez le calibrage approprié du cluster :[ Pour les grands ensembles de données, choisissez au moins 16 à 32 cœurs. Pour les opérations à forte intensité de mémoire (comme les jointures ou les regroupements), sélectionnez Calcul optimisé de mémoire.
- Partition de vos données: Dans les paramètres Source, activez la taille de la partition en utilisant les Options de partition. Définissez un chemin de dossier pour ne lire que les partitions pertinentes.
- Minimiser les données en mode de brouillage : Les jointures et les agrégations provoquent des opérations de brouillage dans le cluster. Si vous le pouvez, les données pré-filtre avant de se joindre. Utilisez Rejoindre la radiodiffusion pour les petites tables de recherche (p. ex., une table de dimension de 1 Mo).
- Optimiser les formats de fichiers : Préférer Parquet ou Delta sur CSV/JSON pour les sources et les puits. Ces formats colonnes réduisent les E/S et les prédicats de levier.
- Reduce transformation branches:[ Chaque nouvelle branche duplique le flux de données. Utilisez la division conditionnelle seulement quand essentielle; sinon, fusionnez les conditions dans les colonnes dérivées.
- Utilisez la surveillance du flux de données : Dans le moniteur ADF, vérifiez les journaux d'exécution du flux de données pour les durées d'étape.
Ressources externes : Microsoft="s official performance guidance for ADF Data Flows
Surveillance et débogage des flux de données
Une surveillance efficace assure le fonctionnement fiable de vos pipelines de données. ADF fournit des capacités de surveillance intégrées pour Data Flows. Vous pouvez voir l'état d'exécution, le nombre de lignes à chaque étape et le temps passé par transformation.
- Temps de traitement – Durée totale de fonctionnement du cluster Spark.
- Data Skew – Distribution inégale des données entre les partitions, visible dans la sortie de l'étape.
- Comptes de lignes – Les gouttes de lignes inattendues peuvent indiquer des problèmes de filtre ou de jointure.
Pour le débogage, utilisez Mode de débogage de flux de données. Il fonctionne sur un petit cluster et vous permet d'inspecter la sortie de chaque transformation de manière interactive. Pour diagnostiquer davantage les expressions complexes, vous pouvez utiliser la transformation Assert pour vérifier les règles de qualité des données (par exemple, `isNotNull(CustomerID)`) et capturer les erreurs.
Considérations en matière de sécurité
Les flux de données traitent souvent des informations sensibles. ADF s'intègre avec Azure Key Vault pour stocker les chaînes de connexion et les identifiants. Utilisez toujours l'authentification principale d'identité ou de service gérée sur les clés de compte de stockage. Pour les données en transit, Data Flows utilise TLS; pour les données au repos, assurez-vous que vos destinations de stockage sont chiffrées (le chiffrement de stockage Azure est activé par défaut).
Intégration des flux de données avec d'autres services Azure
Les flux de données ADF ne fonctionnent pas isolément. Ils peuvent être orchestrés avec d'autres activités ADF pour construire des pipelines de bout en bout :
- Exécuter l'activité du pipeline :[ Lancer un autre pipeline ADF après l'achèvement du débit de données.
- Notebook de données : Pour une analyse avancée ou une inférence ML, combiner le flux de données avec des données.
- ][FLT:][FLT:][FLT:][FLT:][FLT:][FLT:][FLT:][FLT:][FLT:][FLT:][FLT:][FLT:][FLT:]][FLT:][FLT:][FLT:]][FLT]][FLT:][FLT:][FLT:]][FLT:][FLT:][Fut :][Fut :][FLT:][FLT:][FLT:]][FLT:][FLT:]]][FLT][FLT:]]][Futabilité][FLT]][Futabilités][Future][FLT][Future][Future][Future][
- Power BI:[ ingère les données transformées directement en ensembles de données Power BI via le connecteur Power BI d'ADF.
Ressources externes : Documentation de l'aperçu du flux de données de l'usine de données d'Azure
Pièges courants et comment les éviter
- Flow de données unique extrêmement complexe: Découpez un monstre de 50-transformation en plusieurs flux de données avec des tables de mise en scène.
- Ignorer la dérive du schéma:[ Utilisez les options Schema Drift dans Source et Sink pour gérer de nouvelles colonnes gracieusement sans défaillance de pipeline.
- Film-to-live (TTL): Réglez un TTL de 5-10 minutes sur votre groupe de production pour retenir les ressources chaudes pour les flux de données ultérieurs dans le même pipeline. Cela peut réduire significativement les frais généraux de démarrage.
- Sans utiliser les paramètres: Les noms de table de codage dur ou les chemins de fichiers rendent les pipelines rigides. Utilisez les paramètres de pipeline et passez-les dans les paramètres de flux de données pour une réutilisation maximale.
Cas d'utilisations mondiales réelles pour les flux de données ADF
Data Lakehouse ELT
De nombreuses organisations utilisent Data Flows pour transformer des couches brutes de bronze/argent/or dans une Data Lakehouse. Par exemple, une entreprise de détail ingère des données de ventes brutes dans une zone de bronze, puis utilise Data Flows pour nettoyer, dédoubler et agréger en argent, et enfin enrichir avec des dimensions pour créer une couche d'or pour l'analyse.
Agrégation en temps réel pour tableaux de bord
Combinez les flux de données avec Triggers basés sur les événements[ pour traiter les données de streaming (p. ex., lectures de capteurs IoT) sur un calendrier en temps quasi réel. Bien que les flux de données ne soient pas en streaming (ils fonctionnent sur des micro-commutations), ils peuvent fonctionner toutes les 1 à 5 minutes pour produire des vues agrégées pour Power BI.
Masque des données pour la conformité
Les institutions financières utilisent les flux de données pour masquer les informations personnelles identifiables (PII) lors du transfert des données de la production vers les environnements de test. En utilisant les expressions de colonne dérivées, elles remplacent les adresses e-mail par `concat(left(Email,1), "***@exemple.com")` et hash Social Security Numbers.
Comparaison avec Azure Databricks
Les flux de données ADF et Azure Databricks peuvent effectuer des transformations complexes, mais ils servent différentes personas. Data Flows offre une interface sans code/faible code adaptée aux ingénieurs de données qui préfèrent la conception visuelle et la gouvernance gérée. Databricks fournit une interface portable pour les scientifiques et les ingénieurs de données qui ont besoin de contrôle complet sur le code Spark, les bibliothèques personnalisées et l'intégration de l'apprentissage automatique.
Ressources externes: Comparaison des données de débit et de données d'azur de l'ADF
Conclusion
Azure Data Factory Data Flows fournit une plate-forme puissante, évolutive et visuelle pour traiter les transformations complexes de données dans le cloud. En maîtrisant les sources, les transformations, les puits et leurs configurations, les ingénieurs de données peuvent construire des pipelines ETL/ELT robustes qui réduisent le temps de vision tout en maintenant la maintenance sans code. Avec les meilleures pratiques, le suivi et les modèles d'intégration décrits dans cet article, vous êtes bien équipé pour mettre en œuvre des solutions de transformation de données avancées.
Pour plus de détails, consultez la documentation officielle de Microsoft sur Mode de débogage de flux de données et référence des fonctions d'expression.