Transformatiefuncties in Power Query voor gegevens-wrangling
VAN TOEPASSING OP: Azure Data Factory
Azure Synapse Analytics
Tip
Probeer Data Factory uit in Microsoft Fabric, een alles-in-één analyseoplossing voor ondernemingen. Microsoft Fabric omvat alles, van gegevensverplaatsing tot gegevenswetenschap, realtime analyses, business intelligence en rapportage. Meer informatie over het gratis starten van een nieuwe proefversie .
Met Data Wrangling in Azure Data Factory kunt u flexibele gegevensvoorbereiding zonder code uitvoeren en wrangling uitvoeren op cloudschaal door Power Query-scripts M
te vertalen naar Gegevensstroom script. ADF kan worden geïntegreerd met Power Query Online en maakt Power Query-functies M
beschikbaar voor gegevens wrangling via Spark-uitvoering met behulp van de Spark-infrastructuur voor de gegevensstroom.
Momenteel worden niet alle Power Query M-functies ondersteund voor gegevens wrangling ondanks dat ze beschikbaar zijn tijdens het ontwerpen. Tijdens het bouwen van uw mash-ups wordt u gevraagd om het volgende foutbericht als een functie niet wordt ondersteund:
UserQuery : Expression.Error: The transformation logic is not supported as it requires dynamic access to rows of data, which cannot be scaled out.
Hieronder ziet u een lijst met ondersteunde Power Query M-functies.
Kolombeheer
- Selectie: Table.SelectColumns
- Verwijderen: Table.RemoveColumns
- Naam wijzigen: Table.RenameColumns, Table.PrefixColumns, Table.TransformColumnNames
- Volgorde wijzigen: Table.ReorderColumns
Rijfiltering
Gebruik M function Table.SelectRows om te filteren op de volgende voorwaarden:
- Gelijkheid en ongelijkheid
- Numerieke, tekst- en datumvergelijkingen (maar niet datum/tijd)
- Numerieke gegevens, zoals Number.IsEven/Oneven
- Tekstinsluiting met behulp van Text.Contains, Text.StartsWith of Text.EndsWith
- Datumbereiken, inclusief alle 'IsIn' -datumfuncties)
- Combinaties van deze gebruiks- en, of, of niet-voorwaarden
Kolommen toevoegen en transformeren
Met de volgende M-functies worden kolommen toegevoegd of getransformeerd: Table.AddColumn, Table.TransformColumns, Table.ReplaceValue, Table.DuplicateColumn. Hieronder ziet u de ondersteunde transformatiefuncties.
- Numerieke rekenkundige bewerkingen
- Tekstsamenvoeging
- Datum- en tijdberekeningen (rekenkundige operatoren, Date.AddDays, Date.AddMonths, Date.AddQuarters, Date.AddWeeks, Date.AddYears)
- Duur kan worden gebruikt voor rekenkundige datum- en tijdberekeningen, maar moet worden omgezet in een ander type voordat deze naar een sink wordt geschreven (rekenkundige operatoren, #duration, Duration.Days, Duration.Hours, Duration.Minutes, Duration.Seconds, Duration.TotalDays, Duration.TotalHours, Duration.TotalMinutes, Duration.TotalSeconds)
- De meeste standaard-, wetenschappelijke en trigonometrische numerieke functies (Alle functies onder Bewerkingen, Afronding en Trigonometrische functies behalve Number.Factorial, Number.Permutations en Number.Combinations)
- Vervanging (Replacer.ReplaceText, Replacer.ReplaceValue, Text.Replace, Text.Remove)
- Positionele tekstextractie (Text.PositionOf, Text.Length, Text.Start, Text.End, Text.Middle, Text.ReplaceRange, Text.RemoveRange)
- Basistekstopmaak (Text.Lower, Text.Upper, Text.Trim/Start/End, Text.PadStart/End, Text.Reverse)
- Datum-/tijdfuncties (Date.Day, Date.Month, Date.Year Time.Hour, Time.Minute, Time.Second, Date.DayOfWeek, Date.DayOfYear, Date.DaysInMonth)
- Als expressies (maar vertakkingen overeenkomende typen moeten hebben)
- Rijfilters als een logische kolom
- Getallen, tekst, logische, datum- en datum/tijdconstanten
Tabellen samenvoegen/samenvoegen
- Power Query genereert een geneste join (Table.NestedJoin; gebruikers kunnen ook handmatig Table.AddJoinColumn schrijven). Gebruikers moeten vervolgens de geneste joinkolom uitbreiden naar een niet-geneste join (Table.ExpandTableColumn, niet ondersteund in een andere context).
- De M-functie Table.Join kan rechtstreeks worden geschreven om te voorkomen dat er een extra uitbreidingsstap nodig is, maar de gebruiker moet ervoor zorgen dat er geen dubbele kolomnamen zijn tussen de gekoppelde tabellen
- Ondersteunde jointypen: Inner, LeftOuter, RightOuter, FullOuter
- Zowel Value.Equals als Value.NullableEquals worden ondersteund als key equality comparers
Groeperen op
Gebruik Table.Group om waarden samen te voegen.
- Moet worden gebruikt met een aggregatiefunctie
- Ondersteunde aggregatiefuncties: List.Sum, List.Count, List.Average, List.Min, List.Max, List.StandardDeviation, List.First, List.Last
Sorteervolgorde
Gebruik Table.Sort om waarden te sorteren.
Rijen verminderen
Boven behouden en verwijderen, Bereik behouden (bijbehorende M-functies, alleen ondersteunende aantallen, geen voorwaarden: Table.FirstN, Table.Skip, Table.RemoveFirstN, Table.Range, Table.MinN, Table.MaxN)
Bekende niet-ondersteunde functies
Functie | Status |
---|---|
Table.PromoteHeaders | Wordt niet ondersteund. Hetzelfde resultaat kan worden bereikt door 'Eerste rij als koptekst' in te stellen in de gegevensset. |
Table.CombineColumns | Dit is een veelvoorkomend scenario dat niet rechtstreeks wordt ondersteund, maar kan worden bereikt door een nieuwe kolom toe te voegen die twee opgegeven kolommen samenvoegt. Bijvoorbeeld Table.AddColumn(RemoveEmailColumn, "Name", each [FirstName] & " & [LastName]) |
Table.TransformColumnTypes | Dit wordt in de meeste gevallen ondersteund. De volgende scenario's worden niet ondersteund: het transformeren van tekenreeks naar valutatype, het transformeren van tekenreeks naar tijdtype, het transformeren van tekenreeks naar percentagetype en transformeren met landinstellingen. |
Table.NestedJoin | Het uitvoeren van een join resulteert in een validatiefout. De kolommen moeten worden uitgevouwen om deze te laten werken. |
Table.RemoveLastN | Onderste rijen verwijderen wordt niet ondersteund. |
Table.RowCount | Niet ondersteund, maar kan worden bereikt door een aangepaste kolom met de waarde 1 toe te voegen en die kolom vervolgens samen te voegen met List.Sum. Table.Group wordt ondersteund. |
Foutafhandeling op rijniveau | Foutafhandeling op rijniveau wordt momenteel niet ondersteund. Als u bijvoorbeeld niet-numerieke waarden uit een kolom wilt filteren, moet u de tekstkolom omzetten in een getal. Elke cel, die niet kan worden getransformeerd, heeft een foutstatus en moet worden gefilterd. Dit scenario is niet mogelijk in uitgeschaalde M. |
Table.Transponeren | Niet ondersteund |
Tijdelijke oplossingen voor M-scripts
SplitColumn
Hieronder ziet u een alternatief voor splitsen op lengte en positie
- Table.AddColumn(Source, "First characters", each Text.Start([Email], 7), type text)
- Table.AddColumn(#"Ingevoegde eerste tekens", "Tekstbereik", elke Text.Middle([E-mail], 4, 9), typ tekst)
Deze optie is toegankelijk via de optie Uitpakken op het lint
Table.CombineColumns
- Table.AddColumn(RemoveEmailColumn, "Name", each [FirstName] & " & [LastName])
Pivots
- Draaitransformatie selecteren in de PQ-editor en uw draaikolom selecteren
- Selecteer vervolgens de waardekolom en de statistische functie
- Wanneer u op OK klikt, ziet u de gegevens in de editor bijgewerkt met de gepi stemmen waarden
- U ziet ook een waarschuwingsbericht dat de transformatie mogelijk niet wordt ondersteund
- Als u deze waarschuwing wilt oplossen, vouwt u de lijst met pivoted handmatig uit met behulp van de PQ-editor
- Selecteer Geavanceerde editor optie op het lint
- De lijst met gedraaide waarden handmatig uitvouwen
- Vervang List.Distinct() door de lijst met waarden zoals deze:
#"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"
Datum-/tijdkolommen opmaken
Als u de datum-/tijdnotatie wilt instellen wanneer u Power Query ADF gebruikt, volgt u deze sets om de indeling in te stellen.
- Selecteer de kolom in de gebruikersinterface van Power Query en kies Datum/tijd wijzigen >
- U ziet een waarschuwingsbericht
- Open Geavanceerde editor en ga naar
TransformColumnTypes
TransformColumns
. Geef de notatie en cultuur op op basis van de invoergegevens.
#"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}})
Gerelateerde inhoud
Meer informatie over het maken van een gegevens met Power Query in ADF.