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
- Markering: Table.SelectColumns
- Borttagning: Table.RemoveColumns
- Byt namn: Table.RenameColumns, Table.PrefixColumns, Table.TransformColumnNames
- Ordna om: Table.ReorderColumns
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.
- Numerisk aritmetik
- Textsammanfogning
- Datum- och tidsaritmetik (Aritmetiska operatorer, Date.AddDays, Date.AddMonths, Date.AddQuarters, Date.AddWeeks, Date.AddYears)
- Varaktigheter kan användas för datum- och tidsaritmetik, men måste omvandlas till en annan typ innan de skrivs till en mottagare (Aritmetiska operatorer, #duration, Duration.Days, Duration.Hours, Duration.Minutes, Duration.Seconds, Duration.TotalDays, Duration.TotalHours, Duration.TotalMinutes, Duration.TotalSeconds)
- De flesta numeriska standardfunktioner, vetenskapliga och trigonometriska funktioner (alla funktioner under Åtgärder, avrundning och trigonometri förutom Number.Factorial, Number.Permutations och Number.Combinations)
- Ersättning (Replacer.ReplaceText, Replacer.ReplaceValue, Text.Replace, Text.Remove)
- Extrahering av positionstext (Text.PositionOf, Text.Length, Text.Start, Text.End, Text.Middle, Text.ReplaceRange, Text.RemoveRange)
- Grundläggande textformatering (Text.Lower, Text.Upper, Text.Trim/Start/End, Text.PadStart/End, Text.Reverse)
- Date/Time Functions (Date.Day, Date.Month, Date.Year Time.Hour, Time.Minute, Time.Second, Date.DayOfWeek, Date.DayOfYear, Date.DaysInMonth)
- Om uttryck (men grenar måste ha matchande typer)
- Radfilter som en logisk kolumn
- Tal-, text-, logiska, datum- och datetime-konstanter
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.
- Måste användas med en aggregeringsfunktion
- Sammansättningsfunktioner som stöds: List.Sum, List.Count, List.Average, List.Min, List.Max, List.StandardDeviation, List.First, List.Last
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
Table.CombineColumns
- Table.AddColumn(RemoveEmailColumn, "Name", each [FirstName] & " " & [LastName])
Lutar
- Välj Pivottransformeringen från PQ-redigeraren och välj pivotkolumnen
- Välj sedan värdekolumnen och aggregeringsfunktionen
- 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.
- Välj kolumnen i Power Query-användargränssnittet och välj Ändra typdatum > /tid
- Du ser ett varningsmeddelande
- Öppna Napredni uređivač och ändra
TransformColumnTypes
tillTransformColumns
. Ange format och kultur baserat på indata.
#"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}})
Relaterat innehåll
Lär dig hur du skapar en dataomvandling av Power Query i ADF.