Fonctions de transformation dans Power Query pour le wrangling de données

APPLIES TO : Azure Data Factory Azure Synapse Analytics

Conseil

Data Factory dans Microsoft Fabric est la prochaine génération de Azure Data Factory, avec une architecture plus simple, une IA intégrée et de nouvelles fonctionnalités. Si vous débutez avec l'intégration des données, commencez par Fabric Data Factory. Les charges de travail ADF existantes peuvent être mises à niveau vers Fabric pour accéder à de nouvelles fonctionnalités dans la science des données, l’analytique en temps réel et la création de rapports.

Data Wrangling dans Azure Data Factory vous permet d’effectuer une préparation et un wrangling agiles sans code à l’échelle du cloud en convertissant des scripts Power Query M en script Data Flow. ADF s’intègre à Power Query Online et rend Power Query M fonctions disponibles pour le wrangling de données via l’exécution de Spark à l’aide de l’infrastructure Spark de flux de données.

Actuellement, toutes les fonctions M Power Query ne sont pas prises en charge pour le wrangling de données, même si elles sont disponibles pendant la création. Lors de la génération de vos compositions (« mash-up ») , le message d’erreur suivant s’affiche si une fonction n’est pas prise en charge :

UserQuery : Expression.Error: The transformation logic is not supported as it requires dynamic access to rows of data, which cannot be scaled out.

Vous trouverez ci-dessous la liste des fonctions Power Query M prises en charge.

Gestion des colonnes

Filtrage de lignes

Utilisez la fonction M Table.SelectRows pour filtrer avec les conditions suivantes :

Ajout et transformation de colonnes

Les fonctions M suivantes ajoutent ou transforment les colonnes : Table.AddColumn, Table.TransformColumns, Table.ReplaceValue, Table.DuplicateColumn. Voici ci-après les fonctions de transformation prises en charge.

Fusion/jointure de tables

  • Power Query générera une jointure imbriquée (Table.NestedJoin ; les utilisateurs peuvent également écrire manuellement Table.AddJoinColumn). Les utilisateurs doivent alors développer la colonne de jointure imbriquée dans une jointure non imbriquée (aucune prise en charge de Table.ExpandTableColumn dans un autre contexte).
  • La fonction M Table.Join peut être écrite directement afin d’éviter la nécessité d’une étape d’expansion supplémentaire, mais l’utilisateur doit s’assurer qu’il n’existe aucun nom de colonne en double au sein des tables jointes
  • Types de jointures pris en charge : Inner, LeftOuter, RightOuter, FullOuter
  • Value.Equals et Value.NullableEquals sont pris en charge en tant que comparateurs d’égalité clés

Regrouper par

Utilisez Table.Group pour agréger des valeurs.

Tri

Utilisez Table.Sort pour trier les valeurs.

Réduction de lignes

Conserver et supprimer les premiers éléments, Conserver la plage (fonctions M correspondantes, qui prennent uniquement en charge les nombres, pas les conditions : Table.FirstN, Table.Skip, Table.RemoveFirstN, Table.Range, Table.MinN, Table.MaxN)

Fonctions connues non prises en charge

Fonction Statut
Table.PromoteHeaders Non pris en charge. Le même résultat peut être obtenu en définissant « Première ligne comme en-tête » dans le jeu de données.
Table.CombineColumns Il s’agit d’un scénario courant qui n’est pas directement pris en charge mais qui peut être obtenu en ajoutant une nouvelle colonne qui concatène deux colonnes données. Par exemple, Table.AddColumn(RemoveEmailColumn, "Name", each [FirstName] & " " & [LastName])
Table.TransformColumnTypes Ce scénario est généralement pris en charge. Les scénarios suivants ne sont pas pris en charge : transformation de chaîne en type Devise, transformation de chaîne en type Heure, transformation de chaîne en type Pourcentage et transformation avec des paramètres régionaux.
Table.NestedJoin Effectuer une simple jointure entraînera une erreur de validation. Les colonnes doivent être développées pour que l’opération fonctionne.
Table.RemoveLastN La suppression des lignes du bas n’est pas prise en charge.
Table.RowCount Non pris en charge, mais peut être obtenu en ajoutant une colonne personnalisée contenant la valeur 1, puis en agrégeant cette colonne avec List.Sum. Table.Group est pris en charge.
Gestion des erreurs au niveau des lignes La gestion des erreurs au niveau des lignes n’est pas prise en charge actuellement. Par exemple, pour exclure les valeurs non numériques d’une colonne, une méthode consiste à transformer la colonne de texte en nombre. Les cellules qui ne peuvent pas être transformées sont dans un état d’erreur et doivent être filtrées. Ce scénario n’est pas possible dans M mis à l’échelle.
Table.Transpose Non pris en charge

Solutions de contournement de script M

SplitColumn

Une alternative pour le fractionnement par longueur et par position est reprise ci-dessous

  • Table.AddColumn(Source, « First characters », each Text.Start([Email], 7), type text)
  • Table.AddColumn(#"Inserted first characters », « Text range », each Text.Middle([Email], 4, 9), type text)

Cette option est accessible à partir de l’option Extraire du ruban

Power Query Ajouter une colonne

Table.CombineColumns

  • Table.AddColumn(RemoveEmailColumn, « Name », each [FirstName] & " & [LastName])

Pivots

  • Sélectionnez la Transformation de tableau croisé dynamique dans l’éditeur PQ et sélectionnez la colonne de votre tableau croisé dynamique

Power Query Pivot Common

  • Ensuite, sélectionnez la colonne valeur et la fonction d’agrégation

Power Query sélecteur de tableau croisé dynamique

  • Lorsque vous cliquez sur OK, vous verrez les données dans l’éditeur mis à jour avec les valeurs croisées dynamiques
  • Vous verrez également un message d’avertissement indiquant que la transformation ne peut pas être prise en charge
  • Pour résoudre cet avertissement, développez la liste pivotée manuellement à l’aide de l’éditeur PQ
  • Sélectionnez Advanced Editor option dans le ruban
  • Développer manuellement la liste des valeurs croisées dynamiques
  • Remplacez List.Distinct() par la liste de valeurs comme suit :
#"Pivoted column" = Table.Pivot(Table.TransformColumnTypes(#"Changed column type 1", {{"genres", type text}}), {"Drama", "Horror", "Comedy", "Musical", "Documentary"}, "genres", "Rating", List.Average)
in
  #"Pivoted column"

Mise en forme des colonnes de date/heure

Pour définir le format de date/heure lors de l’utilisation de Power Query ADF, suivez ces ensembles pour définir le format.

Power Query Type de modification

  1. Sélectionnez la colonne dans l’interface utilisateur Power Query et choisissez Modifier le type > Date/Heure
  2. Un message d’avertissement s’affiche
  3. Ouvrez Advanced Editor et remplacez TransformColumnTypes par TransformColumns. Spécifiez le format et la culture en fonction des données d’entrée.

Power Query Editor

#"Changed column type 1" = Table.TransformColumns(#"Duplicated column", {{"start - Copy", each DateTime.FromText(_, [Format = "yyyy-MM-dd HH:mm:ss", Culture = "en-us"]), type datetime}})

Découvrez comment créer un Power Query de wrangling de données dans ADF.