Dela via


Transformeringsfunktioner i Power Query för dataomvandling

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

Dricks

Prova Data Factory i Microsoft Fabric, en allt-i-ett-analyslösning för företag. Microsoft Fabric omfattar allt från dataflytt till datavetenskap, realtidsanalys, business intelligence och rapportering. Lär dig hur du startar en ny utvärderingsversion kostnadsfritt!

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

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 kombinationsprogram uppmanas du med 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:

  • Jämlikhet och ojämlikhet
  • Numeriska jämförelser, text och datum (men inte DateTime)
  • Numerisk information som Number.IsEven/Odd
  • Text-inneslutning med text.contains, text.startsWith eller text.EndsWith
  • Datumintervall inklusive alla "IsIn" -datumfunktioner)
  • Kombinationer av dessa med eller eller inte 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 anslutna tabellerna
  • Anslutningstyper som stöds: Inre, LeftOuter, RightOuter, FullOuter
  • Både Value.Equals och Value.NullableEquals stöds som viktiga likhetsjämförelsejä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 ej. 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ängen till procenttyp och transfomera med nationella inställningar.
Table.NestedJoin Att bara göra en koppling resulterar i ett valideringsfel. Kolumnerna måste expanderas för att de 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 delning efter längd och 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

Lägg till kolumn i Power Query

Table.CombineColumns

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

Lutar

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

Power Query Pivot Common

  • Välj sedan värdekolumnen och aggregeringsfunktionen

Pivotväljare för Power Query

  • 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
  • Om du vill åtgärda den här varningen expanderar du den pivoterade listan manuellt med hjälp av PQ-redigeraren
  • Välj Napredni uređivač 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.

Ändringstyp för Power Query

  1. Välj kolumnen i Power Query-användargränssnittet och välj Ändra typdatum > /tid
  2. Du ser ett varningsmeddelande
  3. Öppna Napredni uređivač och ändra TransformColumnTypes till TransformColumns. Ange format och kultur baserat på indata.

Power Query-redigeraren

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

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