Funzioni di trasformazione in Power Query per il wrangling dei dati
SI APPLICA A: Azure Data Factory Azure Synapse Analytics
Suggerimento
Provare Data Factory in Microsoft Fabric, una soluzione di analisi all-in-one per le aziende. Microsoft Fabric copre tutto, dallo spostamento dati al data science, all'analisi in tempo reale, alla business intelligence e alla creazione di report. Vedere le informazioni su come iniziare una nuova prova gratuita!
Data Wrangling in Azure Data Factory consente di eseguire operazioni di preparazione dei dati agile senza codice e wrangling su scala cloud convertendo gli script di Power Query M
in Flusso di dati script. Azure Data Factory si integra con Power Query Online e rende disponibili le funzioni di Power Query M
per il wrangling dei dati tramite l'esecuzione di Spark tramite l'infrastruttura Spark del flusso di dati.
Attualmente non tutte le funzioni M di Power Query sono supportate per il data wrangling nonostante siano disponibili durante la creazione. Durante la compilazione dei mash-up, verrà visualizzato il messaggio di errore seguente se una funzione non è supportata:
UserQuery : Expression.Error: The transformation logic is not supported as it requires dynamic access to rows of data, which cannot be scaled out.
Di seguito è riportato un elenco delle funzioni M di Power Query supportate.
Gestione colonne
- Selezione: Table.SelectColumns
- Rimozione: Table.RemoveColumns
- Ridenominazione: Table.RenameColumns, Table.PrefixColumns, Table.TransformColumnNames
- Riordinamento: Table.ReorderColumns
Filtro delle righe
Usare la funzione M Table.SelectRows per filtrare in base alle condizioni seguenti:
- Uguaglianza e disuguaglianza
- Confronti numerici, di testo e di data (ma non datetime)
- Informazioni numeriche, ad esempio Number.IsEven/Odd
- Contenimento del testo con Text.Contains, Text.StartsWith o Text.EndsWith
- Intervalli di date che includono tutte le funzioni date 'IsIn'
- Combinazioni di queste condizioni utilizzando e o non
Aggiunta e trasformazione di colonne
Le funzioni M seguenti aggiungono o trasformano colonne: Table.AddColumn, Table.TransformColumns, Table.ReplaceValue, Table.DuplicateColumn. Di seguito sono riportate le funzioni di trasformazione supportate.
- Aritmetica numerica
- Concatenazione del testo
- Aritmetica di data e ora (operatori aritmetici, Date.AddDays, Date.AddMonths, Date.AddQuarters, Date.AddWeeks, Date.AddYears)
- Le durate possono essere utilizzate per l'aritmetica di data e ora, ma devono essere trasformate in un altro tipo prima di essere scritte in un sink (operatori Aritmetici, #duration, Duration.Days, Duration.Hours, Duration.Minutes, Duration.Seconds, Duration.TotalHours, Duration.TotalMinutes, Duration.TotalSeconds)
- La maggior parte delle funzioni numeriche standard, scientifiche e trigonometriche (tutte le funzioni in Operazioni, Arrotondamento e Trigonometria ad eccezione di Number.Factorial, Number.Permutations e Number.Combinations)
- Sostituzione (Replacer.ReplaceText, Replacer.ReplaceValue, Text.Replace, Text.Remove)
- Estrazione di testo posizionale (Text.PositionOf, Text.Length, Text.Start, Text.End, Text.Middle, Text.ReplaceRange, Text.RemoveRange)
- Formattazione di testo di base (Text.Lower, Text.Upper, Text.Trim/Start/End, Text.PadStart/End, Text.Reverse)
- Funzioni di data/ora (Date.Day, Date.Month, Date.Year Time.Hour, Time.Minute, Time.Second, Date.DayOfWeek, Date.DayOfYear, Date.DaysInMonth)
- Se le espressioni (ma i rami devono avere tipi corrispondenti)
- Filtri di riga come colonna logica
- Costanti number, text, logical, date e datetime
Unione/unione di tabelle
- Power Query genererà un join annidato (Table.NestedJoin; gli utenti possono anche scrivere manualmente Table.AddJoinColumn). Gli utenti devono quindi espandere la colonna join annidata in un join non annidato (Table.ExpandTableColumn, non supportato in alcun altro contesto).
- La funzione M Table.Join può essere scritta direttamente per evitare la necessità di un passaggio di espansione aggiuntivo, ma l'utente deve assicurarsi che non siano presenti nomi di colonna duplicati tra le tabelle unite in join
- Tipi di join supportati: inner, leftouter, rightouter, fullouter
- Sia Value.Equals che Value.NullableEquals sono supportati come comparer di uguaglianza delle chiavi
Raggruppa per
Utilizzare Table.Group per aggregare i valori.
- Deve essere usato con una funzione di aggregazione
- Funzioni di aggregazione supportate: List.Sum, List.Count, List.Average, List.Min, List.Max, List.StandardDeviation, List.First, List.Last
Ordinamento
Utilizzare Table.Sort per ordinare i valori.
Riduzione delle righe
Keep and Remove Top, Keep Range (funzioni M corrispondenti, solo conteggi di supporto, non condizioni: Table.FirstN, Table.Skip, Table.RemoveFirstN, Table.Range, Table.MinN, Table.MaxN)
Funzioni non supportate note
Funzione | Status |
---|---|
Table.PromoteHeaders | Non supportato. Lo stesso risultato può essere ottenuto impostando "Prima riga come intestazione" nel set di dati. |
Table.CombineColumns | Si tratta di uno scenario comune non supportato direttamente, ma che può essere ottenuto aggiungendo una nuova colonna che concatena due colonne specificate. Ad esempio, Table.AddColumn(RemoveEmailColumn, "Name", each [FirstName] & " & [LastName]) |
Table.TransformColumnTypes | Questa funzionalità è supportata nella maggior parte dei casi. Gli scenari seguenti non sono supportati: trasformazione della stringa in tipo valuta, trasformazione della stringa in tipo time, trasformazione della stringa in tipo time, trasformazione della stringa in Tipo percentuale e trasformazione con le impostazioni locali. |
Table.NestedJoin | Se si esegue un join, si verifica un errore di convalida. Le colonne devono essere espanse affinché funzionino. |
Table.RemoveLastN | La rimozione delle righe inferiori non è supportata. |
Table.RowCount | Non supportato, ma può essere ottenuto aggiungendo una colonna personalizzata contenente il valore 1, quindi aggregando tale colonna con List.Sum. Table.Group è supportato. |
Gestione degli errori a livello di riga | La gestione degli errori a livello di riga non è attualmente supportata. Ad esempio, per filtrare i valori non numerici da una colonna, un approccio consiste nel trasformare la colonna di testo in un numero. Ogni cella, che non riesce a trasformare, sarà in uno stato di errore e deve essere filtrata. Questo scenario non è possibile in M con scalabilità orizzontale. |
Table.Transpose | Non supportato |
Soluzioni alternative per lo script M
SplitColumn
Di seguito è riportato un'alternativa per la divisione per lunghezza e per posizione
- 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)
Questa opzione è accessibile dall'opzione Estrai sulla barra multifunzione
Table.CombineColumns
- Table.AddColumn(RemoveEmailColumn, "Name", each [FirstName] & " & [LastName])
Documenti principali
- Selezionare la trasformazione Pivot dall'editor PQ e selezionare la colonna pivot
- Selezionare quindi la colonna valore e la funzione di aggregazione
- Quando si fa clic su OK, verranno visualizzati i dati nell'editor aggiornati con i valori con pivot
- Verrà visualizzato anche un messaggio di avviso che indica che la trasformazione potrebbe non essere supportata
- Per correggere questo avviso, espandere manualmente l'elenco con pivot usando l'editor PQ
- Selezionare Editor avanzato opzione dalla barra multifunzione
- Espandere manualmente l'elenco dei valori con pivot
- Sostituire List.Distinct() con l'elenco di valori simili al seguente:
#"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"
Formattazione di colonne di data/ora
Per impostare il formato di data/ora quando si usa Azure Data Factory di Power Query, seguire questi set per impostare il formato.
- Selezionare la colonna nell'interfaccia utente di Power Query e scegliere Cambia data/ora del tipo >
- Verrà visualizzato un messaggio di avviso
- Aprire Editor avanzato e passare
TransformColumnTypes
aTransformColumns
. Specificare il formato e le impostazioni cultura in base ai dati di input.
#"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}})
Contenuto correlato
Informazioni su come creare un data wrangling di Power Query in Azure Data Factory.