Skapa en datumtabell i LuckyTemplates
Ta reda på varför det är viktigt att ha en dedikerad datumtabell i LuckyTemplates och lär dig det snabbaste och mest effektiva sättet att göra det.
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? *****
Ta reda på varför det är viktigt att ha en dedikerad datumtabell i LuckyTemplates och lär dig det snabbaste och mest effektiva sättet att göra det.
Denna korta handledning belyser LuckyTemplates mobilrapporteringsfunktion. Jag ska visa dig hur du kan utveckla rapporter effektivt för mobila enheter.
I denna LuckyTemplates Showcase går vi igenom rapporter som visar professionell serviceanalys från ett företag som har flera kontrakt och kundengagemang.
Gå igenom de viktigaste uppdateringarna för Power Apps och Power Automate och deras fördelar och konsekvenser för Microsoft Power Platform.
Upptäck några vanliga SQL-funktioner som vi kan använda som sträng, datum och några avancerade funktioner för att bearbeta eller manipulera data.
I den här handledningen kommer du att lära dig hur du skapar din perfekta LuckyTemplates-mall som är konfigurerad efter dina behov och preferenser.
I den här bloggen kommer vi att visa hur man lager fältparametrar med små multiplar för att skapa otroligt användbara insikter och bilder.
I den här bloggen kommer du att lära dig hur du använder LuckyTemplates ranknings- och anpassade grupperingsfunktioner för att segmentera en exempeldata och rangordna den enligt kriterier.
I den här handledningen kommer jag att täcka en specifik teknik kring hur man visar Kumulativ total endast upp till ett specifikt datum i dina bilder i LuckyTemplates.
Lär dig hur du skapar och anpassar punktdiagram i LuckyTemplates, som huvudsakligen används för att mäta prestanda mot mål eller tidigare år.