Implémenter une architecture en médaillon (Bronze, Silver, Gold) et avoir besoin d'accéder aux données à travers les couches sans duplication physique des données.
→Utiliser les raccourcis OneLake pour référencer les données dans d'autres lakehouses ou couches.
Pourquoi: Les raccourcis sont des liens symboliques dans OneLake. Ils fournissent un espace de noms unifié et permettent d'accéder aux données sans copier, ce qui est idéal pour un maillage de données logique ou une architecture en médaillon.
Référence↗
Migrer une charge de travail analytique existante à forte utilisation de T-SQL d'Azure Synapse vers Fabric.
→Utiliser un Fabric Data Warehouse.
Pourquoi: Le Fabric Warehouse offre une compatibilité T-SQL complète, ce qui en fait la cible idéale pour migrer les scripts SQL existants, les procédures stockées et les requêtes d'analystes avec des modifications minimales. Le point de terminaison SQL du Lakehouse a un accès T-SQL en lecture seule et utilise Spark SQL pour les écritures.
Ingérer et interroger des données de streaming à volume élevé et haute vélocité (par exemple, télémétrie IoT) avec une latence inférieure à la seconde.
→Utiliser Fabric Eventstream pour l'ingestion et une base de données KQL pour le stockage et l'analyse.
Pourquoi: Il s'agit de la pile d'analyse de streaming spécialement conçue dans Fabric. KQL (Kusto Query Language) est optimisé pour l'analyse de séries chronologiques sur les données de streaming, offrant une latence bien inférieure à celle des lakehouses ou warehouses orientés lot.
Implémenter une dimension à évolution lente (SCD) de Type 2 pour maintenir un historique complet des modifications de dimension dans un lakehouse.
→Utiliser une instruction `MERGE INTO` dans un notebook ou un pipeline Spark. Correspondre à la clé métier ; `WHEN MATCHED` met à jour l'ancien enregistrement (définit `IsCurrent` sur false, `EndDate` sur la date actuelle) ; `WHEN NOT MATCHED` insère le nouvel enregistrement.
Pourquoi: L'opération `MERGE` de Delta Lake offre des capacités d'upsert atomiques, ce qui en fait le moyen standard et le plus efficace d'implémenter la logique SCD dans un lakehouse Fabric.
Répliquer des données quasi en temps réel depuis une base de données opérationnelle (par exemple, Azure SQL DB) vers un lakehouse Fabric pour l'analyse.
→Utiliser Fabric Mirroring.
Pourquoi: Mirroring est une solution de capture de données modifiées (CDC) à faible latence et faible impact intégrée à Fabric. Elle réplique automatiquement les modifications de données et de schéma vers OneLake en tant que tables Delta, éliminant le besoin de pipelines ETL complexes.
Ingérer et transformer des données JSON complexes et imbriquées provenant d'une API en une table Delta aplatie et structurée.
→Utiliser un notebook PySpark. Utiliser des fonctions comme `from_json` pour analyser le schéma, et `explode` pour aplatir les tableaux en lignes.
Pourquoi: PySpark fournit les outils les plus puissants et flexibles pour gérer les structures JSON complexes et évolutives de manière programmatique, bien au-delà des capacités d'une activité de copie standard.
Ingérer des données dans Fabric depuis une base de données SQL Server sur site qui se trouve derrière un pare-feu d'entreprise.
→Installer et configurer une passerelle de données locale sur un serveur du réseau local. Ajouter la passerelle comme source de données dans Fabric.
Pourquoi: La passerelle agit comme un pont sécurisé, relayant les requêtes et les données entre les services cloud Fabric et les sources de données sur site sans nécessiter l'ouverture de ports de pare-feu entrants.
Les performances des requêtes sur une grande table Delta fréquemment mise à jour se sont dégradées en raison d'une accumulation de nombreux petits fichiers de données.
→Exécuter la commande `OPTIMIZE` pour compacter les petits fichiers en des plus grands. Utiliser éventuellement `ZORDER BY` sur les colonnes fréquemment filtrées pour co-localiser les données associées.
Pourquoi: Moins de fichiers, mais plus grands, sont beaucoup plus efficaces pour Spark à lire. Le Z-ordering améliore le saut de données, permettant aux requêtes de lire encore moins de données. C'est une tâche de maintenance critique pour les tables Delta.
Agréger des données de séries chronologiques en streaming dans des intervalles de temps fixes et non chevauchants (par exemple, la température moyenne par capteur toutes les 5 minutes).
→Utiliser une requête KQL avec l'opérateur `summarize` et la fonction `bin()`. Exemple : `SensorData | summarize avg(temperature) by sensor_id, bin(timestamp, 5m)`
Pourquoi: La fonction `bin()` est le moyen standard et hautement optimisé en KQL pour regrouper les événements en des intervalles de temps fixes (fenêtres glissantes) pour l'agrégation.
Un rafraîchissement Dataflow Gen2 est lent. La source de données est une base de données relationnelle comme Azure SQL.
→Examiner les étapes de transformation dans l'éditeur Power Query pour s'assurer que le repliement de requête est actif. Réorganiser ou modifier les étapes pour maximiser le repliement.
Pourquoi: Le repliement de requête renvoie la logique de transformation à la base de données source pour être exécutée comme une seule requête native. C'est bien plus efficace que de tirer toutes les données brutes dans le moteur de flux de données et de les transformer en mémoire.
Un notebook Spark effectue une jointure lente entre une très grande table de faits (des milliards de lignes) et une petite table de dimensions (des milliers de lignes).
→Utiliser une jointure de diffusion (broadcast join) en fournissant un indice (`spark.sql.functions.broadcast`) ou en laissant l'optimiseur choisir en fonction des statistiques.
Pourquoi: La diffusion envoie toute la petite table à chaque nœud d'exécution. Cela évite une coûteuse opération de "shuffle" où les données de la grande table doivent être repartitionnées et envoyées à travers le réseau, améliorant considérablement les performances.
Un pipeline de données orchestre plusieurs activités. Une activité peut échouer, mais les activités suivantes, indépendantes, doivent toujours s'exécuter, et l'échec global doit être enregistré.
→Configurer les dépendances d'activité. Les activités qui doivent s'exécuter quel que soit le résultat doivent dépendre de l'activité précédente avec la condition "Achèvement".
Pourquoi: Cela permet de construire des chemins d'exécution robustes et parallèles. Vous pouvez créer des branches séparées pour les conditions "Réussite" et "Échec" pour implémenter une logique de journalisation ou de notification personnalisée.
Un pipeline pour charger de manière incrémentielle des données à partir d'une source avec un horodatage `last_modified`.
→Implémenter un modèle de filigrane (watermark). Stocker le `max(last_modified)` de la dernière exécution réussie. Lors de la prochaine exécution, interroger la source pour les enregistrements où `last_modified` est supérieur au filigrane stocké.
Pourquoi: C'est le modèle le plus efficace pour les chargements incrémentiels à partir de sources qui fournissent un horodatage de modification, garantissant que seules les données nouvelles ou mises à jour sont traitées, minimisant le transfert de données et le calcul.
Analyser un flux en temps réel de données IoT pour détecter des pics ou des baisses inhabituels dans les lectures de capteurs.
→Utiliser la fonction `series_decompose_anomalies()` dans une requête KQL au sein d'une base de données Eventhouse/KQL.
Pourquoi: Cette fonction KQL intégrée est spécifiquement conçue pour la détection d'anomalies dans les séries chronologiques. Elle décompose automatiquement la série en composants saisonniers, de tendance et résiduels pour identifier les valeurs aberrantes statistiquement significatives, nécessitant une configuration manuelle minimale.
Besoin de joindre des données d'un Warehouse, d'un Lakehouse et d'une base de données Azure SQL miroir dans une seule requête T-SQL sans déplacer les données.
→Utiliser des conventions de nommage en trois parties (`database.schema.table`) dans une requête exécutée depuis le point de terminaison SQL du Warehouse ou du Lakehouse. Utiliser des raccourcis pour référencer la base de données miroir.
Pourquoi: Fabric fournit un moteur de requête unifié capable d'accéder aux données à travers différents éléments Fabric au sein du même espace de travail en utilisant une seule instruction SQL, permettant la virtualisation des données.
Un flux de données doit traiter un fichier où certaines lignes peuvent être invalides. Le flux entier ne doit pas échouer ; les lignes valides doivent être chargées, et les lignes invalides doivent être enregistrées.
→Dans Power Query, ajouter une étape pour valider les lignes et créer une colonne "IsValid". Ensuite, créer deux requêtes de référence à partir de ce point : une qui filtre `IsValid = true` pour charger vers la destination, et une autre qui filtre `IsValid = false` pour charger vers un journal d'erreurs.
Pourquoi: Ce modèle offre une gestion robuste des erreurs en divisant le flux de données. Il empêche quelques mauvaises lignes d'arrêter l'ensemble du processus et fournit un mécanisme clair pour auditer les problèmes de qualité des données.