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
- 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 datumjämförelser (men inte DateTime)
- Numerisk information som Number.IsEven/Odd
- Text containment 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
- Sammanfogning av text
- Datum och tid Aritmetik (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 Trigonometrifö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.YearTime.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 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.
- 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 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
Table.CombineColumns
- Table.AddColumn(RemoveEmailColumn, "Name", each [FirstName] & " " & [LastName])
Lutar
- Välj Pivottransformering från PQ-redigeraren och välj pivotkolumnen

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

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

- Markera kolumnen i Power Query användargränssnittet och välj Ändra typdatum>/tid
- Ett varningsmeddelande visas
- Öppna Avancerad redigerare och ändra
TransformColumnTypestillTransformColumns. 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}})
Nästa steg
Lär dig hur du skapar en dataomvandling Power Query i ADF.