Om du befinner dig i en situation där du behöver tillämpa samma uppsättning transformeringar på olika frågor eller värden kan det vara fördelaktigt att skapa en anpassad Power Query-funktion som kan återanvändas så många gånger som du behöver. En anpassad Power Query-funktion är en mappning från en uppsättning indatavärden till ett enda utdatavärde och skapas från interna M-funktioner och operatorer.
Även om du kan skapa en egen anpassad Power Query-funktion manuellt med hjälp av kod enligt beskrivningen i Förstå Power Query M-funktioner, erbjuder Power Query-användargränssnittet funktioner för att påskynda, förenkla och förbättra processen för att skapa och hantera en anpassad funktion.
Den här artikeln fokuserar på den här upplevelsen, som endast tillhandahålls via Power Query-användargränssnittet och hur du får ut mesta möjliga av den.
Viktigt
Den här artikeln beskriver hur du skapar en anpassad funktion med Power Query med hjälp av vanliga transformeringar som är tillgängliga i Power Query-användargränssnittet. Den fokuserar på de grundläggande begreppen för att skapa anpassade funktioner och länkar till ytterligare artiklar i Power Query-dokumentationen för mer information om specifika transformeringar som refereras till i den här artikeln.
Skapa en anpassad funktion från en tabellreferens
Anteckning
Följande exempel skapades med skrivbordsmiljön som finns i Power BI Desktop och kan också följas med hjälp av Power Query-upplevelsen som finns i Excel för Windows.
Du kan följa med i det här exemplet genom att ladda ned exempelfilerna som används i den här artikeln från följande nedladdningslänk. För enkelhetens skull använder den här artikeln mappanslutningsappen. Mer information om mappanslutningsappen finns i Mapp. Målet med det här exemplet är att skapa en anpassad funktion som kan tillämpas på alla filer i mappen innan du kombinerar alla data från alla filer till en enda tabell.
Börja med att använda mappanslutningsfunktionen för att navigera till mappen där filerna finns och välj Transformera data eller Redigera. De här stegen tar dig till Power Query-upplevelsen. Högerklicka på det binära värdet i fältet Innehåll och välj alternativet Lägg till som ny fråga . I det här exemplet gjordes valet för den första filen från listan, som råkar vara filen April 2019.csv.
Det här alternativet skapar effektivt en ny fråga med ett navigeringssteg direkt till filen som binär, och namnet på den nya frågan är filsökvägen till den valda filen. Byt namn på den här frågan till exempelfil.
Skapa en ny parameter med namnet Filparameter och typ av binär. Använd exempelfilfrågansom standardvärde och aktuellt värde.
Anteckning
Vi rekommenderar att du läser artikeln om parametrar för att bättre förstå hur du skapar och hanterar parametrar i Power Query.
Anpassade funktioner kan skapas med valfri parametertyp. Det finns inget krav på att någon anpassad funktion ska ha en binär som en parameter.
Den binära parametertypen visas bara i listrutan Parametrar i dialogrutan Typ när du har en fråga som utvärderas till en binär fil.
Det går att skapa en anpassad funktion utan en parameter. Detta visas ofta i scenarier där indata kan härledas från miljön där funktionen anropas. Till exempel en funktion som tar miljöns aktuella datum och tid och skapar en specifik textsträng från dessa värden.
Högerklicka på Filparameter från fönstret Frågor.Välj alternativet Referens.
Byt namn på den nyligen skapade frågan från Filparameter (2) till Transformera exempelfil.
Högerklicka på den här nya transformeringsexempelfilfrågan och välj alternativet Skapa funktion .
Den här åtgärden skapar effektivt en ny funktion som länkar till filfrågan Transformera exempel. Alla ändringar som du gör i transformeringsexempelfilfrågan replikeras automatiskt till din anpassade funktion. När du skapar den nya funktionen använder du Transformeringsfilen som funktionsnamn.
När du har skapat funktionen ser du att en ny grupp har skapats åt dig med namnet på din funktion. Den här nya gruppen innehåller:
Alla parametrar som refererades till i din transformeringsexempelfilfråga .
Din transformeringsexempelfilfråga , som ofta kallas exempelfråga.
Din nyligen skapade funktion, i det här fallet Transformera fil.
Tillämpa transformeringar på en exempelfråga
När den nya funktionen har skapats väljer du frågan med namnet Transformera exempelfil. Den här frågan är nu länkad till funktionen Transformera fil , så alla ändringar som görs i den här frågan återspeglas i funktionen. Den här anslutningen kallas begreppet för en exempelfråga som är länkad till en funktion.
Den första omvandlingen som måste ske med den här frågan är en som tolkar binärfilen. Du kan högerklicka på binärfilen från förhandsgranskningsfönstret och välja alternativet CSV för att tolka binärfilen som en CSV-fil.
Formatet för alla CSV-filer i mappen är detsamma. De har alla en rubrik som sträcker sig över de första fyra raderna. Kolumnrubrikerna finns på rad 5 och data börjar från rad 6 nedåt, som visas i nästa bild.
Nästa uppsättning transformeringssteg som måste tillämpas på transformeringsexempelfilen är:
Ta bort de fyra översta raderna – Den här åtgärden tar bort de rader som anses vara en del av rubrikavsnittet i filen.
Anteckning
Om du vill veta mer om hur du tar bort rader eller filtrerar en tabell efter radposition går du till Filtrera efter radposition.
Flytta upp rubriker – Rubrikerna för den slutliga tabellen finns nu på den första raden i tabellen. Du kan höja upp dem på det sätt som visas i nästa bild.
När du har befordrat dina kolumnrubriker lägger Power Query som standard automatiskt till ett nytt steg av typen Ändrad som automatiskt identifierar datatyperna för varje kolumn. Din transformeringsexempelfilfråga ser ut som nästa bild.
Funktionen Transformera fil förlitar sig på de steg som utförs i transformeringsexempelfilfrågan. Men om du försöker ändra koden manuellt för funktionen Transformera fil får du en varning som läser The definition of the function 'Transform file' is updated whenever query 'Transform Sample file' is updated. However, updates will stop if you directly modify function 'Transform file'.
Anropa en anpassad funktion som en ny kolumn
När den anpassade funktionen nu har skapats och alla transformeringssteg har införlivats kan du gå tillbaka till den ursprungliga frågan där du har listan över filer från mappen (CSV-filer i det här exemplet). På fliken Lägg till kolumn i menyfliksområdet väljer du Anropa anpassad funktion från gruppen Allmänt . I fönstret Anropa anpassad funktion anger du Utdatatabell som nytt kolumnnamn. Välj namnet på din funktion, Transformera fil, i listrutan Funktionsfråga . När du har valt funktionen i den nedrullningsbara menyn visas parametern för funktionen och du kan välja vilken kolumn från tabellen som ska användas som argument för den här funktionen. Välj kolumnen Innehåll som det värde/argument som ska skickas för filparametern.
När du har valt OK skapas en ny kolumn med namnet Utdatatabell . Den här kolumnen har tabellvärden i sina celler, som visas i nästa bild. För enkelhetens skull tar du bort alla kolumner från den här tabellen utom Namn och utdatatabell.
Anteckning
Om du vill veta mer om hur du väljer eller tar bort kolumner från en tabell går du till Välj eller ta bort kolumner.
Funktionen tillämpades på varje rad från tabellen med värdena från kolumnen Innehåll som argument för din funktion. Nu när data omvandlas till den form som du letar efter kan du expandera kolumnen Utdatatabell genom att välja ikonen Expandera. Använd inget prefix för de expanderade kolumnerna.
Du kan kontrollera att du har data från alla filer i mappen genom att kontrollera värdena i kolumnen Namn eller Datum . I det här fallet kan du kontrollera värdena från kolumnen Datum , eftersom varje fil endast innehåller data för en månad från ett visst år. Om du ser fler än en innebär det att du har kombinerat data från flera filer till en enda tabell.
Anteckning
Det du har läst hittills är i grunden samma process som sker under upplevelsen Kombinera filer , men som görs manuellt.
Vi rekommenderar att du också läser artikeln om Översikt över Kombinera filer och Kombinera CSV-filer för att ytterligare förstå hur kombinationsfiler fungerar i Power Query och vilken roll anpassade funktioner spelar.
Lägga till ny parameter i befintlig anpassad funktion
Tänk dig att det finns ett nytt krav utöver det du har skapat för närvarande. Det nya kravet kräver att du filtrerar data inuti dem innan du kombinerar filerna för att bara hämta de rader där landet är lika med Panama.
Skapa en ny parameter med namnet Market med textdatatypen för att göra det här kravet. För aktuellt värde anger du värdet Panama.
Med den här nya parametern väljer du filfrågan Transformera exempel och filtrerar fältet Land med hjälp av värdet från parametern Market .
Anteckning
Mer information om hur du filtrerar kolumner efter värden finns i Filtrera värden.
Om du tillämpar det här nya steget på din fråga uppdateras automatiskt funktionen Transformera fil, som nu kräver två parametrar baserat på de två parametrar som transformeringsexempelfilen använder.
Men CSV-filfrågan har ett varningstecken bredvid sig. Nu när funktionen har uppdaterats krävs två parametrar. Steget där du anropar funktionen resulterar alltså i felvärden eftersom endast ett av argumenten skickades till funktionen Transformera fil under steget Anropad anpassad funktion .
Om du vill åtgärda felen dubbelklickar du på Anropad anpassad funktion i fönstret Tillämpade steg för att öppna fönstret Anropa anpassad funktion . I parametern Market anger du värdet Panama manuellt.
Nu kan du återgå till expanderad utdatatabell i tillämpade steg. Kontrollera din fråga för att verifiera att endast rader där Land är lika med Panama visas i den slutliga resultatuppsättningen för CSV Files-frågan.
Skapa en anpassad funktion från en återanvändbar logik
Om du har flera frågor eller värden som kräver samma uppsättning transformeringar kan du skapa en anpassad funktion som fungerar som en återanvändbar logik. Senare kan den här anpassade funktionen anropas mot valfria frågor eller värden. Den här anpassade funktionen kan spara tid och hjälpa dig att hantera din uppsättning transformeringar på en central plats, som du kan ändra när som helst.
Tänk dig till exempel en fråga som har flera koder som en textsträng och du vill skapa en funktion som avkodar dessa värden, som i följande exempeltabell:
kod
PTY-CM1090-LAX
LAX-CM701-PTY
PTY-CM4441-MIA
MIA-UA1257-LAX
LAX-XY2842-MIA
Du börjar med att ha en parameter som har ett värde som fungerar som ett exempel. I det här fallet är det värdet PTY-CM1090-LAX.
Från den parametern skapar du en ny fråga där du tillämpar de transformeringar som du behöver. I det här fallet vill du dela upp koden PTY-CM1090-LAX i flera komponenter:
Origin = PTY
Mål = LAX
Flygbolag = CM
FlightID = 1090
Följande M-kod visar den uppsättningen transformeringar.
let
Source = code,
SplitValues = Text.Split( Source, "-"),
CreateRow = [Origin= SplitValues{0}, Destination= SplitValues{2}, Airline=Text.Start( SplitValues{1},2), FlightID= Text.End( SplitValues{1}, Text.Length( SplitValues{1} ) - 2) ],
RowToTable = Table.FromRecords( { CreateRow } ),
#"Changed Type" = Table.TransformColumnTypes(RowToTable,{{"Origin", type text}, {"Destination", type text}, {"Airline", type text}, {"FlightID", type text}})
in
#"Changed Type"
Anteckning
Mer information om formelspråket Power Query M finns i Formelspråket Power Query M.
Du kan sedan omvandla frågan till en funktion genom att högerklicka på frågan och välja Skapa funktion. Slutligen kan du anropa din anpassade funktion i någon av dina frågor eller värden, som du ser i nästa bild.
Efter några fler transformeringar kan du se att du har nått önskade utdata och tillämpat logiken för en sådan transformering från en anpassad funktion.
Demonstrate the use of Microsoft Power Platform solutions to simplify, automate, and empower business processes for organizations in the role of a Functional Consultant.