M-kod i Power Query Anpassade kolumner | Lucky Templates

I dagens blogg kommer jag att presentera lösningen på LuckyTemplates, inklusive ett enkelt och generaliserbart ramverk för att integrera M-kod i en anpassad Power Query-kolumn. Du kan se hela videon av denna handledning längst ner på den här bloggen.

Att kunna skapa kolumner i Power Query med hjälp av M-kod ökar din förmåga att lösa mer komplexa problem.

Innan vi går in på lösningen, låt oss se över problemets natur. Jag har gett en stor datamängd från Kaggle med 93 års Oscar-data. Vi ville dra ut den bästa skådespelerskan, vinnarna och särskilt de kvinnor som vunnit mer än ett pris för bästa skådespelerska och sedan visualisera med hjälp av Queryon Timeline året då de vann sitt andra pris.

M-kod i Power Query Anpassade kolumner |  Lucky Templates

Jag hade ett antal mål när jag satte ihop det här problemet. Vad vill vi att problemet ska fokusera på och vilka vill vi att huvudmålen ska vara?

Och i den här var det tre av dem.

Den första var att lära sig eller utveckla lite övningar med Group By and All Rows-konstruktionen . Det är något som jag verkligen har fokuserat på eftersom det löser ett brett spektrum av problem helt enkelt och ofta eliminerar behovet av mycket komplex DAX.

Det andra målet är särskilt för personer som inte var vana vid att arbeta i M. Jag ville skapa ett problem som skulle utveckla en viss komfort i att skriva grundläggande M-kod . Jag ville tvinga det sättet att tänka på hur det är att utveckla grundläggande M-kod och processen att göra det.

Enligt ett kapitel i Gil Ravivs bok om Power Query kan cirka 40 % av problemen i Power Query lösas bara genom användargränssnittet. Men det, med tillägg av lite grundläggande M-kod och möjligheten att skapa anpassade kolumner, är verkligen inte så svårt. Du kan öka den andelen med över 80 %. Du kan fördubbla din problemlösningsförmåga med några grundläggande, enkla färdigheter.

Det tredje jag vill göra är att introducera Queryon Timeline anpassade visual för dem som inte är bekanta med den. Det är en som jag verkligen har kommit att älska. Jag har använt det i ett antal olika tillfällen och jag tror att det bara ger ett riktigt unikt sätt att visualisera data.

Innehållsförteckning

Lösningsinställning till veckans problem #9

När jag tänkte på det här problemet ville jag göra ett tankeexperiment. Tänk om jag istället för en CSV-fil gav dig 93 papperslappar (en med varje års vinnare av Bästa kvinnliga huvudroll), hur skulle lösningen se ut?

Din lösning skulle förmodligen se ut ungefär som den jag har nedan.

M-kod i Power Query Anpassade kolumner |  Lucky Templates

Jag tror att alla skulle ha en relativt liknande lösning på det. När du väl har fått den konceptuella lösningen är det bara att ta reda på hur du får Power Query att exekvera vart och ett av dessa steg.

Och så, jag ska bara ta det här som en bred översikt och sedan gå igenom hur de operationaliserar denna konceptuella lösning till något i Power Query. Tillvägagångssättet vi kommer att använda är vad Melissa, vår inhemska Power Query-guru, refererar till som att lära sig genom att googla.

Om vi ​​nu går tillbaka till vår konceptuella modell, inkluderar de första två stegen att sortera lapparna i grupper efter skådespelerska och kasta ut vilken grupp som helst med bara en lapp på den. Så vi vill göra en räkning. Om vi ​​inte vet hur man gör det kan vi gå in på Google och försöka söka efter en term. I det här exemplet försökte jag "grupp i kraftfråga". Med det kan vi hitta allt vi behöver veta om hur man gör denna gruppering.

M-kod i Power Query Anpassade kolumner |  Lucky Templates

Använder Group By In Power Query

Sedan kan vi hoppa in i Power Query och börja operationalisera vår lösning. Det jag har gjort är att i denna Oscars tabell har jag precis gått igenom och hämtat CSV-filen och filtrerat ner till vinnarna av bästa kvinnliga huvudroll för varje år. Så vi har bara de 93 raderna med bara namn och filmens år.

M-kod i Power Query Anpassade kolumner |  Lucky Templates

Om vi ​​går in i Power Query och går till den tabellen, är det första vi vill göra denna Group By .

M-kod i Power Query Anpassade kolumner |  Lucky Templates

Jag har alltid gillat att gå Advanced bara för att det bara ger ett lite bättre gränssnitt även om det vi gör är ganska okomplicerat.

Vi vill gruppera efter namn , låt oss sedan ha en kolumn, AllData , och det här kommer bara att bli våra Alla rader. Istället för att bara returnera aggregatet kommer det att returnera aggregatet, men med alla rader som vi vill ha kvar intakta.

Vi kommer att ha en annan kolumn som heter Räkna och den vill vi ha när vi ska Räkna rader . Vi vill hitta antalet lappar i varje hög. Sedan klickar vi på OK.

M-kod i Power Query Anpassade kolumner |  Lucky Templates

Vi kan sedan klicka på detta vita utrymme i tabellen, och vi får bara en lapp.

M-kod i Power Query Anpassade kolumner |  Lucky Templates

Men sedan för de som har flera räkningar, kommer du att se att vi får alla poster.

M-kod i Power Query Anpassade kolumner |  Lucky Templates

Därefter vill vi filtrera bort de (1). Så vi slänger i princip alla högar som bara har ett namn. Välj 1 och klicka på OK.

M-kod i Power Query Anpassade kolumner |  Lucky Templates

Och vi är nu nere på de 14 pristagarna. Och vi är nu nere på de 14 pristagarna. Om vi ​​tar och utökar det kan vi ta ut Name eftersom vi redan har Name här och bara behålla year_film .

M-kod i Power Query Anpassade kolumner |  Lucky Templates

Vi är nu nere på 30 rader eftersom några av dessa kommer att ha flera vinster. Och vi kan faktiskt till och med bli av med Count- kolumnen eftersom vi redan har kastat ut 1:orna med bara en.

M-kod i Power Query Anpassade kolumner |  Lucky Templates

Nu ska vi gå till nästa fas av vår konceptuella modell, som är att sortera lappar i varje grupp efter stigande datum och sedan välja den andra dagen som inträffar inom varje grupp.

Sortering är lätt. Vi kan gå tillbaka till Power Query och göra enav skådespelerska och sedan efter datum.

M-kod i Power Query Anpassade kolumner |  Lucky Templates

Och den visar dig en etta och en tvåa.

M-kod i Power Query Anpassade kolumner |  Lucky Templates

Så vi är väl sorterade och nu vill vi ha som ett index eller en ranking som har för var och en och sedan kunna ta den andra i varje hög.

Inkluderar Table.AddIndexColumn M-kod

Och så nu är vi tillbaka till vår "Learned by Googling"-metod där vi bara kan söka rangordna eller indexera, men vi kan också gå till Microsofts referensguide . Jag har skapat ett externt verktyg som jag använder hela tiden som bara studsar dig från LuckyTemplates till Microsofts referensguide.

M-kod i Power Query Anpassade kolumner |  Lucky Templates

I Microsofts referensguide är allt grupperat efter funktion och den har en filterruta där du kan söka efter det du behöver. I det här fallet skriver vi Rank eller Index i filterrutan. Det ger oss ingenting för Rank, men för Index har vi den här Table.AddIndexColumn , som är relevant och tillämplig på det vi letar efter. Den ger också några exempel på hur man använder den här funktionen.

M-kod i Power Query Anpassade kolumner |  Lucky Templates

Så låt oss gå in på Power Query och låt oss omgruppera vårt bord efter skådespelerska.

M-kod i Power Query Anpassade kolumner |  Lucky Templates

Med det får vi de 14 vinnarna grupp efter Tabell. Och om vi går in i någon av dessa tabeller, säger Frances McDormand, kan vi se att tabellen är sorterad efter Datum.

M-kod i Power Query Anpassade kolumner |  Lucky Templates

Och sedan, här är det stora steget, som är att lägga till enanpassad kolumn och ange vår M-kod. Vi kommer att ha Table.AddIndexColumn och lägg sedan till fältet AllData . Vi kallar vår nya kolumn (som text) här som Index , och vi startar vårt Index på ett (1) och ökar det med ett (1).

M-kod i Power Query Anpassade kolumner |  Lucky Templates

Och vi får det här perfekta indexet här.

M-kod i Power Query Anpassade kolumner |  Lucky Templates

Nu kan vi ta bort vår AllData-kolumn här eftersom allt har plockats upp i. Därefter kan vi bara utöka kolumnen Anpassad, ta bort Namn, eftersom vi redan har Namn här också. Med det, vad vi har är det numrerade indexet för var och en.

M-kod i Power Query Anpassade kolumner |  Lucky Templates

Slutligen kan vi göra vad vi gjorde på Count, vilket är att filtrera bort alla de som är i den andra vinsten.

M-kod i Power Query Anpassade kolumner |  Lucky Templates

Och där går vi. Där är vår lösning.

M-kod i Power Query Anpassade kolumner |  Lucky Templates

Visualisera med Queryon Timeline Custom Visual

Det finns ett par andra saker vi vill göra här, som alla är baserade på implementeringen av Queryon Visual . Vi kommer att göra en sammanslagning och bara lägga till bildens URL.

Så vi slår samman frågor, drar upp den där skådespelerskorstabellen och vi slår samman på Namn . Vi får 14 till 14 rader som matchar, vilket är bra.

M-kod i Power Query Anpassade kolumner |  Lucky Templates

Och sedan i kolumnen Skådespelerskor expanderar vi bara och expanderar till URL:en.

M-kod i Power Query Anpassade kolumner |  Lucky Templates

Och nu har vi den här kolumnen med webbadresserna.

M-kod i Power Query Anpassade kolumner |  Lucky Templates

Det finns en annan sak som kommer med kunskapen om Queryon Timeline. Queryon fungerar bäst när det handlar om fullständiga datum snarare än år . Och så, det här är något som bara kommer med experiment, men vi kan ta kolumnen År och skapa en kolumn från exempel . Vad vi vill göra här är att bara förvandla åren till datum.

M-kod i Power Query Anpassade kolumner |  Lucky Templates

Det kommer att göra formateringen bättre. Det är något jag inte förväntar mig att du ska veta direkt, men det kommer med övning med Queryon. Vi klickar på OK, och det går in som ett datumvärde. Vi kan ta bort indextabellen eftersom vi inte behöver den längre, och vi kan sedan ändra namnet på kolumnen year_film till Year .

M-kod i Power Query Anpassade kolumner |  Lucky Templates

Låt oss nu hoppa in i visualiseringsaspekten av detta och jag vill lyfta fram bidraget från en av LuckyTemplates-medlemmarna, Jose, som verkligen gjorde ett bra jobb med att visualisera.

M-kod i Power Query Anpassade kolumner |  Lucky Templates

Om vi ​​går tillbaka till Power Query för visualiseringen är det värt att nämna att Microsoft nyligen implementerade några ändringar i sättet de certifierar anpassade bilder . Som en del av den certifieringen skärpte de användningen av externa URL-bilder.

Om du faktiskt använder versionen av Queryon Timeline som finns på appkällan (version 1.05), kommer du inte att kunna hämta in dessa URL-bilder. Och så har du nu möjlighet att använda denna 1.04, och behålla URL-bilderna, där de har på sin sida ett sätt att bädda in binära 64-bilder direkt i PBIX-filen.

Nu nämnde jag att ändra det året till ett datumfält, så vi måste koppla det till vår datamodell.

M-kod i Power Query Anpassade kolumner |  Lucky Templates

Låt oss bara ändra det från en till en till en till många och enkel riktning på korsfiltret och sedan göra detta.

M-kod i Power Query Anpassade kolumner |  Lucky Templates

Därefter måste vi för fältet bildadress se till att det i kategorin Data inte visas som okategoriserat, utan som.

M-kod i Power Query Anpassade kolumner |  Lucky Templates

Nu när vi har allt förberett, drar vi bara och släpper fälten Namn , Datum och URL . Resten av det blir riktigt okomplicerad sanering i formatalternativen.

M-kod i Power Query Anpassade kolumner |  Lucky Templates




Slutsats

Förhoppningsvis fick jag dig entusiastisk över att lägga till M-kod till din repertoar. Jag har visat dig hur du skapar en konceptuell modell och implementerar Learn by Googling-metoden. Jag har gått igenom stegen för att införliva M-kod i en anpassad kolumn och visualisera resultaten med hjälp av Queryon Timeline.

Jag hoppas att du tyckte att det var användbart. Se hela videon nedan för mer information om handledningen och kolla in länkarna nedan för mer relaterat innehåll.

Med vänliga hälsningar!


Upptäck unika insikter med LuckyTemplates TOPN-funktion

Upptäck unika insikter med LuckyTemplates TOPN-funktion

Den här bloggen innehåller LuckyTemplates TOPN DAX-funktion, som gör att du kan få unika insikter från dina data, vilket hjälper dig att fatta bättre marknadsföringsbeslut.

Datamodellering i LuckyTemplates med hjälp av stödtabeller

Datamodellering i LuckyTemplates med hjälp av stödtabeller

Lär dig några fantastiska analytiska tekniker som vi kan göra för datamodellering i LuckyTemplates med hjälp av DAX-stödtabeller.

Avancerad DAX för LuckyTemplates: Implementering av rankningslogik över unika insikter

Avancerad DAX för LuckyTemplates: Implementering av rankningslogik över unika insikter

Här dyker vi in ​​i LuckyTemplates Advanced DAX och implementerar rankningslogik för att få en mycket unik insikt. Jag visar också upp måttförgrening i det här exemplet.

LuckyTemplates What-If-parameterfunktion

LuckyTemplates What-If-parameterfunktion

Den här bloggen introducerar den nya funktionen i LuckyTemplates, analysparametern What-If. Du kommer att se hur det gör allt snabbt och enkelt för din scenarioanalys.

Använd LuckyTemplates Mät förgreningar för att kontrollera om dina marginaler ökar när intäkterna växer

Använd LuckyTemplates Mät förgreningar för att kontrollera om dina marginaler ökar när intäkterna växer

Lär dig hur du avgör om din intäktstillväxt är bra genom att kontrollera om dina marginaler ökade med hjälp av LuckyTemplates mäter förgrening.

LuckyTemplates parametrar via frågeredigerare

LuckyTemplates parametrar via frågeredigerare

Lär dig och förstå hur du kan skapa och använda LuckyTemplates-parametrar som är en kraftfull funktion i frågeredigeraren.

Runda stapeldiagram – En visualisering för din instrumentpanel

Runda stapeldiagram – En visualisering för din instrumentpanel

Denna handledning kommer att diskutera hur man skapar ett runt stapeldiagram med Charticulator. Du kommer att lära dig hur du designar dem för din LuckyTemplates-rapport.

PowerApps funktioner och formler | En introduktion

PowerApps funktioner och formler | En introduktion

Lär dig hur du använder PowerApps funktioner och formler för att förbättra funktionaliteten och ändra ett beteende i vår Power Apps canvas-app.

Pipe In R: Anslutningsfunktioner med Dplyr

Pipe In R: Anslutningsfunktioner med Dplyr

I den här handledningen kommer du att lära dig hur du kopplar ihop funktioner med hjälp av dplyr-röroperatorn i programmeringsspråket R.

RANKX Deep Dive: A Lucky Templates DAX-funktion

RANKX Deep Dive: A Lucky Templates DAX-funktion

RANKX från LuckyTemplates låter dig returnera rankningen av ett specifikt nummer i varje tabellrad som utgör en del av en lista med nummer.