Fonctions de transformation dans Power Query pour le data wrangling
S’APPLIQUE À : Azure Data Factory Azure Synapse Analytics
Conseil
Essayez Data Factory dans Microsoft Fabric, une solution d’analyse tout-en-un pour les entreprises. Microsoft Fabric couvre tous les aspects, du déplacement des données à la science des données, en passant par l’analyse en temps réel, l’aide à la décision et la création de rapports. Découvrez comment démarrer un nouvel essai gratuitement !
Le data wrangling dans Azure Data Factory vous permet d’effectuer un rassemblement de données brutes à l’analyse et une préparation agile de données sans code à l’échelle du cloud en convertissant des scripts Power Query M
en un script de flux de données. ADF s’intègre à Power Query Online et rend les fonctions Power Query M
disponibles pour le data wrangling via l’exécution Spark en utilisant l’infrastructure Spark du flux de données.
Actuellement, toutes les fonctions Power Query M ne sont pas prises en charge pour le rassemblement de données brutes à l’analyse, bien qu’elles soient 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.
Voici une liste des fonctions Power Query M prises en charge.
Gestion des colonnes
- Sélection : Table.SelectColumns
- Suppression : Table.RemoveColumns
- Renommage : Table.RenameColumns, Table.PrefixColumns, Table.TransformColumnNames
- Réorganisation : Table.ReorderColumns
Filtrage de lignes
Utilisez la fonction M Table.SelectRows pour filtrer avec les conditions suivantes :
- Égalité et inégalité
- Comparaisons numériques, de texte et de date (mais pas date/heure)
- Informations numériques, telles que Number.IsEven/Odd
- Autonomie du texte avec Text.Contains, Text.StartsWith ou Text.EndsWith
- Plages de dates, y compris toutes les fonctions Date « IsIn »
- Combinaisons de celles-ci au moyen des conditions and, or ou not
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.
- Arithmétique numérique
- Concaténation de texte
- Arithmétique de date et d'heure (Opérateurs arithmétiques, Date.AddDays, Date.AddMonths, Date.AddQuarters, Date.AddWeeks, Date.AddYears)
- Les durées peuvent être utilisées pour les opérations arithmétiques de date et d’heure, mais doivent être transformées en un autre type avant d’être écrites dans un récepteur (opérateurs arithmétiques, #duration, Duration.Days, Duration.Hours, Duration.Minutes, Duration.Seconds, Duration.TotalDays, Duration.TotalHours, Duration.TotalMinutes, Duration.TotalSeconds)
- La plupart des fonctions numériques standard, scientifiques et trigonométriques (toutes les fonctions sous Opérations, Arrondi et Trigonométrie, sauf Number.Factorial, Number.Permutations et Number.Combinations)
- Remplacement (Replacer.ReplaceText, Replacer.ReplaceValue, Text.Replace, Text.Remove)
- Extraction de texte positionnel (Text.PositionOf, Text.Length, Text.Start, Text.End, Text.Middle, Text.ReplaceRange, Text.RemoveRange)
- Mise en forme du texte de base (Text.Lower, Text.Upper, Text.Trim/Start/End, Text.PadStart/End, Text.Reverse)
- Fonctions de date et heure (Date.Day, Date.Month, Date.Year, Time.Hour, Time.Minute, Time.Second, Date.DayOfWeek, Date.DayOfYear, Date.DaysInMonth)
- Expressions if (mais les branches doivent avoir des types correspondants)
- Filtres de lignes en tant que colonne logique
- Constantes de nombre, de texte, de logique, de date et de date/heure
Fusion/jointure de tables
- Power Query génère 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.
- Doit être utilisé avec une fonction d’agrégation
- Fonctions d’agrégation prises en charge : List.Sum, List.Count, List.Average, List.Min, List.Max, List.StandardDeviation, List.First, List.Last
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
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
- Ensuite, sélectionnez la colonne valeur et la fonction d’agrégation
- 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électionner Éditeur avancé option depuis 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 d’ADF Power Query, suivez ces jeux.
- Sélectionnez la colonne dans l’interface utilisateur Power Query, puis choisissez Modifier le type > Date/Heure.
- Un message d’avertissement s’affiche
- Ouvrez Éditeur avancé et remplacez
TransformColumnTypes
parTransformColumns
. Spécifiez le format et la culture en fonction des données d’entrée.
#"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}})
Contenu connexe
Découvrez comment créer un data wrangling Power Query dans ADF.