Condividi tramite


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 completa per le aziende. Microsoft Fabric copre tutti gli elementi, dallo spostamento dei dati all'analisi scientifica dei dati, all'analisi in tempo reale, alla business intelligence e alla creazione di report. Scopri come avviare gratuitamente una nuova versione di valutazione .

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 wrangling dei dati 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

Filtro delle righe

Usare la funzione M Table.SelectRows per filtrare in base alle condizioni seguenti:

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.

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.

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 tranfoming 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

Power Query Add Column

Table.CombineColumns

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

Documenti principali

  • Selezionare la trasformazione Pivot dall'editor PQ e selezionare la colonna pivot

Power Query Pivot Common

  • Selezionare quindi la colonna valore e la funzione di aggregazione

Power Query Pivot Selector

  • 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.

Power Query Change Type

  1. Selezionare la colonna nell'interfaccia utente di Power Query e scegliere Cambia data/ora del tipo >
  2. Verrà visualizzato un messaggio di avviso
  3. Aprire Editor avanzato e passare TransformColumnTypes a TransformColumns. Specificare il formato e le impostazioni cultura in base ai dati di input.

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}})

Informazioni su come creare un data wrangling di Power Query in Azure Data Factory.