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.
Jag ska visa dig hur du lägger till en parameter i M-funktionen i din datumtabellfråga . Detta exempel är baserat på en fråga som ställdes på. Du kan se hela videon av denna handledning längst ner på den här bloggen.
Frågan handlade om hur man växlar numreringen av den första veckodagen från 0 till 1 . Observera att detta inte ändrar den faktiska början av veckodagen. I denna datumtabell kommer veckans början alltid att vara måndag. Det handlar bara om att hänvisa till måndag som dag 1 istället för dag 0.
Denna process är inte nödvändigtvis komplex, men du behöver en grundläggande förståelse för hur M-språk är uppbyggt. Om du är medlem i LuckyTemplates kan du kolla in. Inledningen berör ämnet.
Innehållsförteckning
M-funktionen och den utökade datumtabellen
Låt mig börja med att gå in på Power Query . Jag har redan kopierat datumtabellen M-funktionen här.
Jag fick M-funktionen från kategorin M Code Showcase i LuckyTemplates-forumet . Koden finns under ämnet.
Om jag öppnar Advanced Editor är det här koden.
Det finns mycket M-kod där, vilket kan vara distraherande.
Skapa en testfråga
Eftersom det händer för mycket inom M-funktionen kommer jag att börja med en ny tom fråga istället.
Jag kommer att namnge denna testfråga .
Därefter ska jag öppna Advanced Editor .
Eftersom jag ska skapa en funktion kommer jag att lägga till ett par parenteser och ta bort all standardkod där.
För att starta funktionen av kommer jag att deklarera en valfri parameter .
Därefter ska jag lägga till en variabel. Jag kallar denna variabel WDStartNum eftersom den kommer att stå för veckodagens startnummer. Jag måste också deklarera dess typ, så jag skriver in nummer .
Jag deklarerar typen för att förhindra fel. Om jag bara lämnar det som vilken typ som helst, betyder det att det kan passera en tabell eller ett datumvärde istället för att bara skicka siffror.
Nästa steg är att lägga till let- satsen och in -satsen.
Under let-satsen behöver jag ett variabelnamn. Så jag kommer att kalla denna variabel WDStart .
Nu måste jag testa om WDStartNum har godkänts. Om det går igenom kommer det inte att likställas med null . Så jag kommer att förklara att om WDStartNum inte är lika med null, vill jag att ett värde ska returneras .
När det gäller in-klausulen vill jag att samma steg ska godkännas. Så jag lägger bara WDStart där, vilket är vad vi kallade vår variabel tidigare under let-satsen.
När jag trycker på Klar kommer funktionen att skapas. Så jag ska försöka skicka ett värde genom den funktionen.
Jag ska försöka skriva in bokstaven "a".
Kom ihåg att jag tidigare deklarerade att värdet måste vara ett tal. Eftersom den känner igen att värdet jag angav inte uppfyller detta krav, tillåter den mig inte att ange den parametern.
Så jag ska ta bort det och bara lämna utrymmet tomt.
När jag klickar på Invoke returnerar det värdet 0.
För att gå tillbaka till min ursprungliga fråga, står det att om värdet inte är lika med null, ska WDStartNum returneras. Om det är lika med null ska en 0 returneras.
Så att 0 stämmer.
Den här gången ska jag försöka skicka ett värde genom att ändra numret i TestQuery. Det är sant att det returnerar en "1" när jag trycker på enter.
Låt mig nu försöka klara 2020 i TestQuery. När jag trycker på enter kommer den också tillbaka 2020.
Uppenbarligen vill jag inte att det här ska hända. Eftersom jag vill ha ett värde som representerar veckans början vill jag att antingen 0 eller 1 ska dyka upp. Det betyder att jag måste skapa ett nytt test för att se om det angivna numret är antingen en 0 eller en 1. Jag kan använda funktionen List.Contains för detta.
Använder List.Contains
Jag skapade en tom fråga och skrev in List.Contains utan att använda en parentes.
När jag trycker på enter kan jag se dokumentationen om den funktionen.
List.Contains anger om listan innehåller ett värde.
Så det kräver en lista som första parameter, och sedan läggs ett värde till efter det. Om det värdet hittas i listan returneras det sant. Annars kommer det att returnera falskt.
Jag öppnar Advanced Editor igen så att jag kan göra nödvändiga ändringar i min fråga.
Istället för att testa om ett värde inte är lika med null, kommer jag att använda List.Contains .
Nu ska jag ge en lista över värden som ska tillämpas på den här funktionen.
Jag kommer att använda lockiga parenteser som en listinitierare. Inom de lockiga parenteserna sätter jag 0, 1. Jag lägger till ett kommatecken efter att ha stängt den parentesen.
För den andra parametern kommer jag att använda WDStartNum. Sedan lägger jag till den avslutande parentesen.
Med detta på plats betyder det att en 0 eller 1 borde ge mig WDStartNumber. Om något annat än 0 eller 1 placeras, borde jag få resultatet 0.
Låt mig testa det genom att lägga till 2020 i TestQuery. Som förväntat returnerar detta en "0" (noll).
Det beror på att värdet 2020 inte finns i listan.
Lägga till parametern i M-funktionen
Nu när jag är säker på att koden fungerar kan jag äntligen lägga in den i den faktiska datumtabellen och M-funktionen. Jag öppnar Advanced Editor och sedan kopierar jag logiken .
Sedan går jag in i datumtabellsfrågan.
Jag öppnar den ursprungliga M-funktionen via Advanced Editor .
Sedan ska jag klistra in min kod där. Låt oss se till att det finns ett kommatecken i slutet av raden.
Därefter ska jag markera och kopiera mitt parameternamn .
Sedan ska jag lägga till den parametern här .
Observera att jag måste lägga till ett kommatecken i slutet av den befintliga raden först, sedan måste jag förklara den här parametern som valfri . Sedan kan jag placera WDStartNum och lägga till typen .
Jag har lagt till parametern och jag har också bäddat in logiken. Men jag måste också se till att jag får de förväntade resultaten. Så jag ska leta efter kodraden som täcker veckodagen.
Sedan ska jag lägga till + WDStart .
Jag klickar på Klar för att stänga redigeraren. Sedan kommer jag att anropa frågan.
För startdatumet kommer jag att ange 1 januari 2020, sedan använder jag 31 december 2020 som slutdatum.
Jag kommer att använda "7" som startmånad för räkenskapsåret, sedan sätter jag "0" som WDStartNum.
Jag klickar på Invoke. Nu har jag datumtabellen.
Jag byter namn på den för att se till att den lätt kan identifieras.
Nu ska jag kolla resultatet.
Det här är min DayOfWeek- kolumn.
Det visar att måndagen har återvänt som 0.
För att gå tillbaka till frågan i forumet, jag måste ändra numret på veckans början till 1 istället för 0. Så jag ändrar det bara i måttet.
När jag trycker på enter blir måndagen nu dag 1 istället för dag 0.
Om man tittar på sifferintervallet går det nu från 1 till 7 istället för 0 till 6.
Vad händer om jag skickar ett nollvärde?
Då vänder DayOfWeek för måndag bara tillbaka till 0.
Slutsats
Så här kan du lägga till en extra parameter direkt i M-funktionen på din datumtabellfråga. Processen är inte alls komplicerad, som jag nämnde tidigare. Så länge du har en källa för M-koden är det enkelt nog därifrån.
Återigen, du kan alltid kolla in kursen Advanced Data Transformations & Modeling iOnline om du inte har någon bakgrund om hur M-koder fungerar.
Med vänliga hälsningar,
Melissa
***** Lär du dig Lucky Templates? *****
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.
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.
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.
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.
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.
Lär dig och förstå hur du kan skapa och använda LuckyTemplates-parametrar som är en kraftfull funktion i frågeredigeraren.
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.
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.
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 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.