Transformatiefuncties in Power Query voor gegevens-wrangling

Van toepassing op: Azure Data Factory Azure Synapse Analytics

Tip

Data Factory in Microsoft Fabric is de volgende generatie van Azure Data Factory, met een eenvoudigere architectuur, ingebouwde AI en nieuwe functies. Als u geen gegevensintegratie hebt, begint u met Fabric Data Factory. Bestaande ADF-workloads kunnen upgraden naar Fabric om toegang te krijgen tot nieuwe mogelijkheden voor gegevenswetenschap, realtime analyses en rapportage.

Met Data Wrangling in Azure Data Factory kunt u met codevrije flexibele gegevensvoorbereiding en wrangling op cloudschaal uitvoeren door Power Query M scripts te vertalen in Data Flow script. ADF kan worden geïntegreerd met Power Query Online en maakt Power Query M functies beschikbaar voor gegevens die via Spark-uitvoering worden uitgevoerd 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

Rijfiltering

Gebruik M function Table.SelectRows om te filteren op de volgende 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.

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.

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

Power Query Kolom toevoegen

Table.CombineColumns

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

Pivots

  • Draaitransformatie selecteren in de PQ-editor en uw draaikolom selecteren

Power Query Pivot Common

  • Selecteer vervolgens de waardekolom en de statistische functie

Power Query Pivot Selector

  • 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 Advanced 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 notatie in te stellen.

Power Query Type wijzigen

  1. Selecteer de kolom in de gebruikersinterface van Power Query en kies Type wijzigen > Datum/tijd
  2. U ziet een waarschuwingsbericht
  3. Open Advanced Editor en wijzig TransformColumnTypes in TransformColumns. Geef de notatie en cultuur op op basis van de invoergegevens.

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

Meer informatie over het maken van gegevens met Power Query in ADF.