Transformeringsfunktioner i Power Query för dataomvandling

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

Dricks

Data Factory i Microsoft Fabric är nästa generations Azure Data Factory, med en enklare arkitektur, inbyggd AI och nya funktioner. Om dataintegrering är nytt för dig börjar du med Fabric Data Factory. Befintliga ADF-arbetsbelastningar kan uppgraderas till Fabric för att få åtkomst till nya funktioner inom datavetenskap, realtidsanalys och rapportering.

Med dataomvandling i Azure Data Factory kan du utföra kodfri agil dataförberedelse och dataomvandling i molnskala genom att översätta Power Query M-skript till Data Flow 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 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 funktioner som stöds Power Query M.

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 /
  • 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). 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 transformera 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

Power Query Lägg till kolumn

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

Power Query pivotväljare

  • 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 Advanced Editor 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 Ändringstyp

  1. Välj kolumnen i användargränssnittet för Power Query och välj Ändra typ > datum/tid
  2. Du ser ett varningsmeddelande
  3. Öppna Advanced Editor 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}})

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