LuckyTemplates What-If-parameterfunktion
Denne blog introducerer den nye funktion i LuckyTemplates, What-If-analyseparameteren. Du vil se, hvordan det gør alt hurtigt og nemt til din scenarieanalyse.
Jeg vil vise dig, hvordan du tilføjer en parameter i M-funktionen i din datotabelforespørgsel . Dette eksempel er baseret på et spørgsmål, der blev rejst på. Du kan se den fulde video af denne tutorial nederst på denne blog.
Spørgsmålet handlede om, hvordan man skifter nummereringen af 1. ugedag fra 0 til 1 . Bemærk, at dette ikke ændrer den faktiske start på ugedagen. I denne datotabel vil starten af ugen altid være mandag. Det handler bare om at henvise til mandag som dag 1 i stedet for dag 0.
Denne proces er ikke nødvendigvis kompleks, men du har brug for en grundlæggende forståelse af, hvordan M sprog er opbygget. Hvis du er medlem af LuckyTemplates, kan du tjekke. Indledningen berører emnet.
Indholdsfortegnelse
M-funktionen og den udvidede datotabel
Lad mig starte med at gå ind i Power Query . Jeg har allerede kopieret datotabellen M-funktionen her.
Jeg fik M-funktionen fra M Code Showcase-kategorien i LuckyTemplates-forumet . Koden er under emnet.
Hvis jeg åbner Advanced Editor , er dette koden.
Der er en masse M-kode derinde, som kan være distraherende.
Oprettelse af en testforespørgsel
Da der sker for meget i M-funktionen, vil jeg i stedet starte med en ny tom forespørgsel .
Jeg vil navngive denne testforespørgsel .
Dernæst vil jeg åbne Advanced Editor .
Fordi jeg vil oprette en funktion, vil jeg tilføje et par parenteser og slette al standardkoden derinde.
For at starte funktionen fra, vil jeg erklære en valgfri parameter .
Dernæst vil jeg tilføje en variabel. Jeg kalder denne variabel WDStartNum , da den vil stå for ugedagens startnummer. Jeg skal også angive dens type, så jeg skriver nummer .
Jeg erklærer typen for at forhindre fejl. Hvis jeg bare forlader det som en hvilken som helst type, betyder det, at det kunne passere en tabel eller en datoværdi i stedet for blot at sende tal.
Næste trin er at tilføje let -klausulen og in -klausulen.
Under let-klausulen har jeg brug for et variabelnavn. Så jeg vil kalde denne variabel WDStart .
Nu skal jeg teste, om WDStartNum er bestået. Hvis det går igennem, vil det ikke være lig med null . Så jeg vil erklære, at hvis WDStartNum ikke er lig med null, vil jeg have en værdi, der returneres .
Med hensyn til in-klausulen ønsker jeg, at det samme trin skal vedtages. Så jeg vil bare sætte WDStart der, som er det, vi kaldte vores variabel tidligere under let-klausulen.
Når jeg trykker på Udført, oprettes funktionen. Så jeg vil prøve at sende en værdi gennem den funktion.
Jeg vil prøve at skrive bogstavet "a".
Husk, at jeg tidligere har erklæret, at værdien skal være et tal. Fordi den genkender, at den værdi, jeg indtastede, ikke opfylder dette krav, tillader den mig ikke at indtaste den parameter.
Så jeg vil slette det og bare lade feltet stå tomt.
Når jeg klikker på Invoke, returnerer det en værdi på 0.
Går tilbage til min oprindelige forespørgsel, hedder det, at hvis værdien ikke er lig med null, skal WDStartNum returneres. Hvis det er lig med null, skal et 0 returneres.
Så 0 er korrekt.
Denne gang vil jeg prøve at sende en værdi ved at ændre tallet i TestQuery. Sandt nok returnerer den et "1", når jeg trykker på enter.
Lad mig nu prøve at passere 2020 i TestQuery. Når jeg trykker på Enter, vender den også tilbage i 2020.
Jeg ønsker åbenbart ikke, at det her skal ske. Da jeg vil have en værdi, der repræsenterer starten på ugen, vil jeg have, at enten 0 eller 1 vises. Det betyder, at jeg skal lave endnu en test for at se, om det indtastede tal enten er et 0 eller et 1. Jeg kan bruge List.Contains- funktionen til dette.
Brug af List.Contains
Jeg oprettede en tom forespørgsel og indtastede List.Contains uden at bruge en parentes.
Når jeg trykker enter, kan jeg se dokumentationen om den funktion.
List.Contains angiver, om listen indeholder en værdi.
Så det kræver en liste som den første parameter, og så tilføjes en værdi efter det. Hvis denne værdi findes på listen, returnerer den sand. Ellers vil det returnere falsk.
Jeg åbner Advanced Editor igen, så jeg kan foretage de nødvendige ændringer på min forespørgsel.
I stedet for at teste om en værdi ikke er lig med null, vil jeg bruge List.Contains .
Nu vil jeg give en liste over værdier, der skal anvendes på denne funktion.
Jeg vil bruge krøllede parenteser som en listeinitialiserer. Inden for de krøllede parenteser sætter jeg 0, 1. Jeg tilføjer et komma efter at have lukket den parentes.
Til den anden parameter vil jeg bruge WDStartNum. Så tilføjer jeg den afsluttende parentes.
Med dette på plads betyder det, at et 0 eller 1 skal give mig WDStartNumber. Hvis noget andet end 0 eller 1 placeres, skulle jeg få resultatet 0.
Lad mig teste det ved at sætte 2020 i TestQuery. Som forventet returnerer dette et "0" (nul).
Det er fordi værdien 2020 ikke er på listen.
Tilføjelse af parameteren til M-funktionen
Nu hvor jeg er sikker på, at koden virker, kan jeg endelig sætte den i den faktiske datotabel og M-funktion. Jeg åbner Advanced Editor , så kopierer jeg logikken .
Så går jeg ind i datotabelforespørgslen.
Jeg åbner den originale M-funktion gennem Advanced Editor .
Så vil jeg indsætte min kode der. Lad os sørge for, at der er et komma i slutningen af linjen.
Dernæst vil jeg fremhæve og kopiere mit parameternavn .
Så vil jeg tilføje den parameter her .
Bemærk, at jeg først skal tilføje et komma til slutningen af den eksisterende linje, så skal jeg erklære denne parameter for at være valgfri . Så kan jeg placere WDStartNum og tilføje typen .
Jeg har tilføjet parameteren, og jeg har også indlejret logikken. Men jeg skal også sørge for, at jeg får de forventede resultater. Så jeg vil lede efter den kodelinje, der dækker ugedagen.
Så vil jeg tilføje + WDStart .
Jeg klikker på Udført for at lukke editoren. Så vil jeg påberåbe mig forespørgslen.
Til startdatoen sætter jeg 1. januar 2020, og derefter bruger jeg 31. december 2020 som slutdato.
Jeg bruger "7" som startmåneden for regnskabsåret, og derefter sætter jeg "0" som WDStartNum.
Jeg klikker på Invoke. Nu har jeg datotabellen.
Jeg omdøber den for at sikre, at den let kan identificeres.
Nu vil jeg tjekke resultaterne.
Dette er min DayOfWeek klumme.
Det viser, at mandag er vendt tilbage som 0.
Går tilbage til spørgsmålet i forummet, så skal jeg ændre tallet for ugestart til 1 i stedet for 0. Så det ændrer jeg bare i målingen.
Når jeg trykker enter, bliver mandag dag 1 i stedet for dag 0.
Ser man på talområdet, løber det nu fra 1 til 7 i stedet for 0 til 6.
Hvad sker der, hvis jeg sender en nulværdi?
Så vender DayOfWeek for mandag bare tilbage til 0.
Konklusion
Sådan kan du tilføje en ekstra parameter lige ind i M-funktionen på din datotabelforespørgsel. Processen er slet ikke kompleks, som jeg nævnte tidligere. Så længe du har en kilde til M-koden, er det nemt nok derfra.
Igen kan du altid tjekke kurset Advanced Data Transformations & Modeling iOnline, hvis du ikke har nogen baggrund for, hvordan M-koder fungerer.
Alt det bedste,
Melissa
***** Lærer du Lucky Templates? *****
Denne blog introducerer den nye funktion i LuckyTemplates, What-If-analyseparameteren. Du vil se, hvordan det gør alt hurtigt og nemt til din scenarieanalyse.
Lær, hvordan du afgør, om din omsætningsvækst er god ved at kontrollere, om dine avancer er udvidet ved hjælp af LuckyTemplates, der måler forgrening.
Lær og forstå, hvordan du kan oprette og bruge LuckyTemplates Parameters, som er en kraftfuld funktion i Query Editor.
Denne vejledning vil diskutere om oprettelse af et rundt søjlediagram ved hjælp af Charticulator. Du lærer, hvordan du designer dem til din LuckyTemplates-rapport.
Lær, hvordan du bruger PowerApps-funktioner og -formler til at forbedre funktionaliteten og ændre adfærd i vores Power Apps-lærredsapp.
I denne øvelse lærer du, hvordan du kæder funktioner sammen ved hjælp af dplyr-røroperatoren i programmeringssproget R.
RANKX fra LuckyTemplates giver dig mulighed for at returnere rangeringen af et specifikt tal i hver tabelrække, der udgør en del af en liste over tal.
Lær, hvordan du adskiller en PBIX-fil for at udtrække LuckyTemplates-temaer og -billeder fra baggrunden og bruge den til at oprette din rapport!
Excel Formler Snydeark: Mellemvejledning
LuckyTemplates kalendertabel: Hvad er det, og hvordan man bruger det