Partager via


Références de variables dans un dataflow

Note

Cet article se concentre sur une architecture de solution à partir des architectures de solution CI/CD et ALM (Gestion du cycle de vie des applications) pour Dataflow Gen2 qui s’appuie sur l’intégration des bibliothèques de variables et s’applique uniquement à la prise en charge CI/CD.

Les bibliothèques de variables fabric dans Dataflow Gen2 permettent une gestion centralisée et réutilisable de la configuration dans les environnements. En référençant des variables directement dans vos scripts de flux de données, vous pouvez ajuster dynamiquement le comportement sans valeurs de codage en dur, ce qui est idéal pour les flux de travail CI/CD. Cette intégration simplifie le déploiement par étapes en autorisant les valeurs spécifiques à l’espace de travail (comme Lakehouse ou les ID d’espace de travail) à injecter au moment de l’exécution, ce qui rend vos dataflows plus adaptables et plus faciles à gérer.

Ce tutoriel vous guide tout au long d’un exemple de solution qui utilise des références de variables dans un dataflow et vous montre comment :

  • Définir des variables : utilisation des bibliothèques de variables Fabric et de leurs types de données distincts
  • Source pilotée par variable : utilisation d’un Lakehouse avec l’exemple de jeu de données WideWorldImpoters comme source
  • Logique basée sur des variables : utilisation des widgets d’entrée disponibles tout au long de l’expérience dataflow
  • Destination pilotée par des variables : utilisation d’un entrepôt en tant que destination

Diagramme d’une architecture de solution qui utilise des références de variables dans Dataflow Gen2.

Note

Les concepts présentés dans cet article sont universels pour Dataflow Gen2 et s’appliquent à d’autres sources et destinations au-delà de celles présentées ici.

Scénario

Capture d’écran de la requête portant le nom dimension_city pour le scénario à l’intérieur de Dataflow Gen2.

Le flux de données utilisé dans ce scénario est simple, mais les principes fondamentaux décrits s’appliquent à tous les types de dataflows. Il se connecte à la table nommée dimension_city à partir de l’exemple de jeu de données Wide World Importers stocké dans un Lakehouse. Il filtre les lignes où la colonne SalesTerritory est égale au Sud-Est et charge le résultat dans une nouvelle table appelée City in a Warehouse. Tous les composants ( Lakehouse, Warehouse et Dataflow) se trouvent dans le même espace de travail. Pour rendre le flux de données dynamique, vous utilisez des variables pour piloter la table source, la valeur de filtre et la table de destination. Ces modifications permettent à l’exécution du flux de données avec des valeurs stockées dans des bibliothèques de variables Fabric au lieu de celles codées en dur.

Définition des variables

Note

Veillez à activer les bibliothèques de variables Fabric pour votre organisation ou groupe de sécurité. Apprenez-en davantage sur la prise en main des bibliothèques de variables.

En guise de meilleure pratique, il est toujours recommandé d’avoir une conception à l’esprit avant de créer une solution et quels composants de votre dataflow sont générés dynamiquement à partir d’une bibliothèque de variables. Bien que vous puissiez créer plusieurs bibliothèques dans un espace de travail, cet exemple utilise une bibliothèque unique nommée My Library qui contient les variables utilisées par Dataflow Gen2 :

Nom de la variable Type Objectif
WorkspaceId GUID Utilisé pour les scripts de source de données et de destination dans le dataflow
LakehouseId GUID Détermine l’ID de la Lakehouse utilisée comme source
WarehouseId GUID Détermine l’ID de l’entrepôt utilisé comme destination
Territoire Chaîne Définit la valeur à utiliser pour piloter la logique de filtre dans le dataflow

Veillez à définir les valeurs par défaut qui correspondent à votre propre environnement, puis enregistrez la bibliothèque de variables.

Capture d’écran des bibliothèques de variables Fabric nouvellement créées avec les variables WorkspaceId, LakehouseId, WarehouseId et Territory.

Source pilotée par des variables

Lorsque vous utilisez l’un des connecteurs Fabric, tels que Lakehouse, Warehouse ou Fabric SQL, ils suivent toutes la même structure de navigation et utilisent le même format d’entrée. Dans ce scénario, aucun des connecteurs n’a besoin d’une entrée manuelle pour établir une connexion. Toutefois, chacun affiche l’espace de travail et l’élément auquel il se connecte via les étapes de navigation de votre requête. Par exemple, la première étape de navigation inclut l’id d’espace de travail auquel la requête se connecte.

Capture d’écran de l’étape Navigation 1 avec la valeur workspaceId dans la barre de formule de la requête dimension_city.

L’objectif est de remplacer les valeurs codées en dur dans la barre de formule par des variables. Plus précisément, vous souhaitez utiliser les variables WorkspaceId et LakehouseId pour piloter cette logique. Tout d’abord, vous devez importer ces variables dans Dataflow Gen2. Une approche recommandée consiste à créer des requêtes pour chaque variable distincte afin de centraliser et de gérer facilement toutes les variables que vous envisagez d’utiliser. Pour ce faire, créez une requête vide en accédant à l’entrée Obtenir des données dans le ruban et en sélectionnant l’option Requête vide dans le menu déroulant.

Capture d’écran de l’entrée dans l’onglet Obtenir des données dans l’onglet Accueil pour créer une requête vide.

La sélection de cette option permet d’afficher une nouvelle boîte de dialogue dans laquelle vous pouvez voir la requête vide créée. Vous pouvez sélectionner OK pour apporter cette nouvelle requête vide.

Capture d’écran de la boîte de dialogue de requête vide.

Une fois que votre requête a été créée et apparaît dans le flux de données, renommez-la en WorkspaceId et remplacez la formule de l’étape source comme suit :

Variable.ValueOrDefault("$(/**/My Library/WorkspaceId)", "Your Workspace ID")

Ce script est fondamentalement celui qui est en mesure de déterminer la bibliothèque et la variable à extraire. Le deuxième argument de la Variable.ValueOrDefault fonction détermine la valeur à fournir lorsqu’une variable ne peut pas être extraite.

Note

Veillez à remplacer la chaîne « Votre ID d’espace de travail », le deuxième argument de la fonction, par votre propre valeur correspondante dans votre environnement et enregistrez la requête.

Répétez ce processus pour la variable LakehouseId et créez une requête portant le même nom que la variable, mais utilisez la formule suivante pour l’étape Source :

Variable.ValueOrDefault("$(/**/My Library/LakehouseId)", "Your Lakehouse ID")

Note

Veillez à remplacer la chaîne « Your Lakehouse ID », le deuxième argument de la fonction, par votre propre valeur correspondante dans votre environnement et enregistrez la requête.

Capture d’écran montrant les requêtes nouvellement créées nommées LakehouseId et WorkspaceId.

Une fois les deux requêtes créées, vous pouvez mettre à jour le script de requête pour les utiliser au lieu de valeurs codées en dur. Cela implique de remplacer manuellement les valeurs d’origine dans la barre de formule par des références aux requêtes WorkspaceId et LakehouseId. Le script de requête d’origine ressemble à ceci :

let
  Source = Lakehouse.Contents([]),
  #"Navigation 1" = Source{[workspaceId = "8b325b2b-ad69-4103-93ae-d6880d9f87c6"]}[Data],
  #"Navigation 2" = #"Navigation 1"{[lakehouseId = "2455f240-7345-4c8b-8524-c1abbf107d07"]}[Data],
  #"Navigation 3" = #"Navigation 2"{[Id = "dimension_city", ItemKind = "Table"]}[Data],
  #"Filtered rows" = Table.SelectRows(#"Navigation 3", each ([SalesTerritory] = "Southeast")),
  #"Removed columns" = Table.RemoveColumns(#"Filtered rows", {"ValidFrom", "ValidTo", "LineageKey"})
in
  #"Removed columns"

Une fois que vous avez mis à jour les références dans les étapes de navigation, votre nouveau script mis à jour peut ressembler à ceci :

let
  Source = Lakehouse.Contents([]),
  #"Navigation 1" = Source{[workspaceId = WorkspaceId]}[Data],
  #"Navigation 2" = #"Navigation 1"{[lakehouseId = LakehouseId]}[Data],
  #"Navigation 3" = #"Navigation 2"{[Id = "dimension_city", ItemKind = "Table"]}[Data],
  #"Filtered rows" = Table.SelectRows(#"Navigation 3", each ([SalesTerritory] = "Southeast")),
  #"Removed columns" = Table.RemoveColumns(#"Filtered rows", {"ValidFrom", "ValidTo", "LineageKey"})
in
  #"Removed columns"

Vous remarquerez également qu’il évalue toujours correctement l’aperçu des données dans l’éditeur dataflow avec les références directes créées dans la vue diagramme entre toutes les requêtes impliquées :

Capture d’écran avec les requêtes WorkspaceId et LakehouseId référencées dans la requête dimension_city.

Logique pilotée par des variables

Maintenant que la source utilise des variables, vous pouvez vous concentrer sur la modification de la logique de transformation du flux de données. Dans ce scénario, l’étape de filtre est l’emplacement où la logique est appliquée et la valeur filtrée, actuellement codée en dur comme Sud-Est, doit être remplacée par une requête qui fait référence à une variable. Pour ce faire, vous répétez le même processus de création d’une requête vide et réaffectez la formule de son étape source pour contenir la variable pour Territory et remplacez également le nom de la requête par le nom de la variable. Utilisez le script suivant :

Variable.ValueOrDefault("$(/**/My Library/Territory)", "Mideast")

Capture d’écran de la requête Territory créée dans le dataflow.

Étant donné que votre étape de filtre a été créée à l’aide de l’interface utilisateur, vous pouvez passer à l’étape des lignes filtrées, double-cliquez sur elle pour ouvrir la boîte de dialogue des paramètres de l'étape de filtre. Cette boîte de dialogue vous permet de sélectionner, via le widget d’entrée, si vous souhaitez utiliser une requête au lieu d’une valeur statique :

Capture d’écran du widget de saisie dans la boîte de dialogue de filtrage des lignes avec l’option permettant de référencer une requête.

Après avoir sélectionné l’option Sélectionner une requête, une liste déroulante s’affiche pour afficher toutes les requêtes parmi lesquelles vous pouvez choisir. Dans cette liste, vous pouvez sélectionner la requête Territory nouvellement créée.

Capture d’écran de la requête Territory sélectionnée dans le widget d’entrée de la boîte de dialogue de filtrage des lignes.

Une fois que vous avez sélectionné OK, notez que la vue de diagramme a déjà créé le lien entre la requête Territory et la requête en cours d’utilisation. L’aperçu des données affiche maintenant des informations pour le territoire du Moyen-Orient, non seulement cela.

Capture d’écran de l’affichage Diagramme, des paramètres de requête et de la préversion des données pour la requête dimension_city montrant les données de Mideast SalesTerritory.

Destination pilotée par des variables

Note

Il est recommandé de vous familiariser avec le concept de destinations de données dans Dataflow Gen2 et la façon dont son script mashup est créé à partir de l’article sur les destinations de données et les paramètres managés

Le dernier composant à modifier dans ce scénario est la destination. Pour ce faire, vous utilisez la fonctionnalité de modification avancée pour les requêtes de destination de données , ce qui vous permet de modifier le script de requête de destination directement dans l’éditeur de flux de données à l’aide du code Power Query M.

Capture d’écran du menu volant qui contient les paramètres de destination des données pour la requête dimension_city.

Avant de commencer, créez une requête pour la variable WarehouseId . Suivez le même processus décrit dans les sections précédentes pour créer une requête vide et remplacer la formule de l’étape Source :

Variable.ValueOrDefault("$(/**/My Library/WarehouseId)", "Your Warehouse ID")

Note

Veillez à remplacer la chaîne « Votre ID d’entrepôt », le deuxième argument de la fonction, par votre propre valeur correspondante dans votre environnement et enregistrez la requête.

Capture d’écran de toutes les requêtes dans le flux de données, y compris la requête WarehouseId nouvellement créée.

Important

Assurez-vous que toutes vos requêtes avec une variable ont le staging désactivé. Capture d’écran de l’option de mise en scène d’une requête dans son menu contextuel.

Activer la modification avancée pour les requêtes de destination de données

Pour modifier la requête de destination directement dans l’éditeur dataflow, vous devez d’abord activer la fonctionnalité d’édition avancée :

  1. Sélectionnez Options sous l’onglet Accueil du ruban.

  2. Dans la boîte de dialogue Options , faites défiler jusqu’à la section Destinations de données .

  3. Cochez la case pour activer la modification avancée pour les requêtes de destination de données.

  4. Une boîte de dialogue d’avertissement s’affiche expliquant que la modification des requêtes de destination peut entraîner un comportement inattendu ou interrompre le flux de données. Lisez attentivement l’avertissement et sélectionnez OK pour confirmer.

  5. Sélectionnez OK pour fermer la boîte de dialogue Options.

Modifier la requête de destination

Après avoir activé la modification avancée, vous pouvez accéder à la requête de destination et la modifier pour votre destination de données :

  1. Dans le volet Requêtes , recherchez la section destination des données qui affiche vos destinations configurées.

  2. Cliquez avec le bouton droit sur la requête de destination nommée dimension_city.

  3. Dans le menu contextuel, sélectionnez Éditeur avancé.

La requête de destination se présente comme suit :

let
  Pattern = Fabric.Warehouse([HierarchicalNavigation = null, CreateNavigationProperties = false]),
  Navigation_1 = Pattern{[workspaceId = "8b325b2b-ad69-4103-93ae-d6880d9f87c6"]}[Data],
  Navigation_2 = Navigation_1{[warehouseId = "527ba9c1-4077-433f-a491-9ef370e9230a"]}[Data],
  TableNavigation = Navigation_2{[Item = "City", Schema = "dbo"]}?[Data]?
in
  TableNavigation

De même que le script de la source pour le Lakehouse, ce script pour la destination suit un modèle similaire où il code en dur l'ID d'espace de travail et l'ID d'entrepôt. Remplacez ces valeurs fixes par les identificateurs des requêtes que vous avez créées et votre script se présente comme suit :

let
  Pattern = Fabric.Warehouse([HierarchicalNavigation = null, CreateNavigationProperties = false]),
  Navigation_1 = Pattern{[workspaceId = WorkspaceId]}[Data],
  Navigation_2 = Navigation_1{[warehouseId = WarehouseId]}[Data],
  TableNavigation = Navigation_2{[Item = "City", Schema = "dbo"]}?[Data]?
in
  TableNavigation

Sélectionnez OK pour enregistrer vos modifications dans l’éditeur avancé.

Important

Après avoir modifié une requête de destination à l’aide d’une modification avancée, l’interface utilisateur standard pour la modification de cette destination ne fonctionne plus. Vous devez continuer à utiliser l’éditeur avancé pour toute autre modification apportée à cette destination. Pour plus d’informations, consultez Modification avancée pour les requêtes de destination de données.

Vous pouvez maintenant exécuter votre dataflow, qui utilise des valeurs à partir de bibliothèques de variables.