Transformeringsfunktioner i Power Query för dataomvandling

GÄLLER FÖR: Azure Data Factory Azure Synapse Analytics

Med dataomvandling i Azure Data Factory kan du göra kodfri flexibel dataförberedelse och vridning i molnskala genom att översätta Power Query M skript till Dataflöde skript. ADF integreras med Power Query Online och gör Power Query M funktioner tillgängliga för dataomvandling via Spark-körning med hjälp av Spark-infrastrukturen för dataflödet.

För närvarande stöds inte alla Power Query M-funktioner för dataomvandling trots att de är tillgängliga under redigeringen. När du skapar dina kombinationsprogram får du följande felmeddelande om en funktion inte stöds:

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

Nedan visas en lista över Power Query M-funktioner som stöds.

Kolumnhantering

Radfiltrering

Använd M-funktionen Table.SelectRows för att filtrera efter följande villkor:

Lägga till och transformera kolumner

Följande M-funktioner lägger till eller transformerar kolumner: Table.AddColumn, Table.TransformColumns, Table.ReplaceValue, Table.DuplicateColumn. Nedan visas de transformeringsfunktioner som stöds.

Sammanslagning/sammanfogning av tabeller

  • Power Query genererar en kapslad koppling (Table.NestedJoin; användare kan också skriva Table.AddJoinColumn manuellt). Användarna måste sedan expandera den kapslade kopplingskolumnen till en icke-kapslad koppling (Table.ExpandTableColumn, stöds inte i någon annan kontext).
  • M-funktionen Table.Join kan skrivas direkt för att undvika behovet av ytterligare ett expansionssteg, men användaren måste se till att det inte finns några duplicerade kolumnnamn bland de kopplade tabellerna
  • Anslutningstyper som stöds: Inre, LeftOuter, RightOuter, FullOuter
  • Både Value.Equals och Value.NullableEquals stöds som viktiga likhetsjämförare

Gruppera efter

Använd Table.Group för att aggregera värden.

Sortering

Använd Table.Sort för att sortera värden.

Minska rader

Behåll och ta bort överkant, Behåll intervall (motsvarande M-funktioner, endast stödantal, inte villkor: Table.FirstN, Table.Skip, Table.RemoveFirstN, Table.Range, Table.MinN, Table.MaxN)

Kända funktioner som inte stöds

Funktion Status
Table.PromoteHeaders Stöds inte. Samma resultat kan uppnås genom att ange "Första raden som rubrik" i datauppsättningen.
Table.CombineColumns Det här är ett vanligt scenario som inte stöds direkt men som kan uppnås genom att lägga till en ny kolumn som sammanfogar två givna kolumner. Till exempel Table.AddColumn(RemoveEmailColumn, "Name", each [FirstName] & " " [ & LastName])
Table.TransformColumnTypes Detta stöds i de flesta fall. Följande scenarier stöds inte: omvandla sträng till valutatyp, transformera sträng till tidstyp, omvandla sträng till Procenttyp.
Table.NestedJoin Att bara göra en koppling resulterar i ett valideringsfel. Kolumnerna måste expanderas för att det ska fungera.
Table.RemoveLastN Ta bort nedersta rader stöds inte.
Table.RowCount Stöds inte, men kan uppnås genom att lägga till en anpassad kolumn som innehåller värdet 1 och sedan aggregera kolumnen med List.Sum. Table.Group stöds.
Felhantering på radnivå Felhantering på radnivå stöds för närvarande inte. Om du till exempel vill filtrera bort icke-numeriska värden från en kolumn är en metod att omvandla textkolumnen till ett tal. Varje cell, som inte kan transformeras, är i ett feltillstånd och måste filtreras. Det här scenariot är inte möjligt i utskalad M.
Table.Transpose Stöds inte

Lösningar för M-skript

SplitColumn

En alternativ för att dela upp efter längd och efter position visas nedan

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

Det här alternativet är tillgängligt från alternativet Extrahera i menyfliksområdet

Power Query Add Column

Table.CombineColumns

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

Lutar

  • Välj Pivottransformering från PQ-redigeraren och välj pivotkolumnen

Power Query Pivot Common

  • Välj sedan värdekolumnen och mängdfunktionen

Power Query Pivot Selector

  • När du klickar på OK visas data i redigeraren uppdaterade med de pivoterade värdena
  • Du ser också ett varningsmeddelande om att omvandlingen kanske inte stöds
  • Åtgärda varningen genom att expandera den pivoterade listan manuellt med hjälp av PQ-redigeraren
  • Välj Avancerad redigerare alternativ i menyfliksområdet
  • Expandera listan över pivoterade värden manuellt
  • Ersätt List.Distinct() med listan med värden som den här:
#"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"

Formatera datum/tid-kolumner

Om du vill ange datum/tid-format när du använder Power Query ADF följer du dessa uppsättningar för att ange formatet.

Power Query Change Type

  1. Markera kolumnen i Power Query användargränssnittet och välj Ändra typdatum>/tid
  2. Ett varningsmeddelande visas
  3. Öppna Avancerad redigerare och ändra TransformColumnTypes till TransformColumns. Ange format och kultur baserat på indata.

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

Nästa steg

Lär dig hur du skapar en dataomvandling Power Query i ADF.