Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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
- 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é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.
- 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é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.
- Sélectionnez la colonne dans l’interface utilisateur Power Query et choisissez Modifier le type > Date/Heure
- Un message d’avertissement s’affiche
- Ouvrez Advanced Editor et remplacez
TransformColumnTypesparTransformColumns. 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 Power Query de wrangling de données dans ADF.