DAX Studio EVALUATE Nøkkelord: Grunnleggende eksempler
Lær å bruke DAX Studio EVALUATE nøkkelordet med grunnleggende eksempler og få en bedre forståelse av hvordan dette kan hjelpe deg med databehandling.
Jeg skal vise deg hvordan du legger til en parameter i M-funksjonen i datotabellspørringen din . Dette eksemplet er basert på et spørsmål som ble reist på. Du kan se hele videoen av denne opplæringen nederst på denne bloggen.
Spørsmålet handlet om hvordan man endrer nummereringen av 1. ukedag fra 0 til 1 . Merk at dette ikke endrer den faktiske starten på ukedagen. I denne datotabellen vil starten av uken alltid være mandag. Det handler bare om å referere til mandag som dag 1 i stedet for dag 0.
Denne prosessen er ikke nødvendigvis kompleks, men du trenger en grunnleggende forståelse av hvordan M-språk er strukturert. Hvis du er LuckyTemplates-medlem, kan du sjekke ut. Innledningen berører temaet.
Innholdsfortegnelse
M-funksjonen og den utvidede datotabellen
La meg starte med å gå inn i Power Query . Jeg har allerede kopiert datotabellen M-funksjonen her.
Jeg fikk M-funksjonen fra M Code Showcase-kategorien i LuckyTemplates-forumet . Koden er under emnet.
Hvis jeg åpner Advanced Editor , er dette koden.
Det er mye M-kode der inne, som kan være distraherende.
Opprette en testforespørsel
Siden det skjer for mye i M-funksjonen, skal jeg begynne med en ny tom spørring i stedet.
Jeg skal gi denne testforespørselen et navn .
Deretter skal jeg åpne Advanced Editor .
Fordi jeg skal lage en funksjon, skal jeg legge til et par parenteser og slette all standardkoden der inne.
For å starte funksjonen av, skal jeg deklarere en valgfri parameter .
Deretter skal jeg legge til en variabel. Jeg kaller denne variabelen WDStartNum siden den kommer til å stå for ukedagens startnummer. Jeg må også oppgi typen, så jeg skriver inn nummer .
Jeg erklærer typen for å forhindre feil. Hvis jeg bare lar den være en hvilken som helst type, betyr dette at den kan passere en tabell eller en datoverdi i stedet for bare å sende tall.
Neste trinn er å legge til let -leddet og in -leddet.
Under let-klausulen trenger jeg et variabelnavn. Så jeg skal kalle denne variabelen WDStart .
Nå må jeg teste om WDStartNum er bestått. Hvis det går gjennom, vil det ikke tilsvare null . Så jeg kommer til å erklære at hvis WDStartNum ikke er lik null, vil jeg at en verdi skal returneres .
Når det gjelder in-klausulen, vil jeg at det samme trinnet skal vedtas. Så jeg legger bare WDStart der, som er det vi kalte variabelen vår tidligere under let-klausulen.
Når jeg trykker på Ferdig, vil funksjonen bli opprettet. Så jeg skal prøve å sende en verdi gjennom den funksjonen.
Jeg skal prøve å skrive inn bokstaven "a".
Husk at jeg tidligere har erklært at verdien må være et tall. Fordi den gjenkjenner at verdien jeg skrev inn ikke oppfyller dette kravet, vil den ikke tillate meg å angi den parameteren.
Så jeg skal slette det og bare la plassen stå tom.
Når jeg klikker på Invoke, returnerer den en verdi på 0.
Går tilbake til min opprinnelige spørring, står det at hvis verdien ikke er lik null, skal WDStartNum returneres. Hvis den er lik null, skal en 0 returneres.
Så at 0 er riktig.
Denne gangen skal jeg prøve å sende en verdi ved å endre tallet i TestQuery. Riktig nok returnerer den en "1" når jeg trykker enter.
La meg nå prøve å passere 2020 i TestQuery. Når jeg trykker på enter, kommer den også tilbake i 2020.
Jeg vil tydeligvis ikke at dette skal skje. Siden jeg vil ha en verdi som representerer begynnelsen av uken, vil jeg at enten 0 eller 1 skal vises. Dette betyr at jeg må lage en ny test for å se om det angitte tallet er enten en 0 eller en 1. Jeg kan bruke List.Contains- funksjonen til dette.
Bruker List.Contains
Jeg opprettet en tom spørring og gikk inn i List.Contains uten å bruke en parentes.
Når jeg trykker enter, kan jeg se dokumentasjonen om den funksjonen.
List.Contains indikerer om listen inneholder en verdi.
Så det krever en liste som første parameter, og deretter legges en verdi til etter det. Hvis denne verdien finnes i listen, returnerer den sann. Ellers vil den returnere falsk.
Jeg åpner Advanced Editor igjen, slik at jeg kan gjøre de nødvendige endringene på søket mitt.
I stedet for å teste om en verdi ikke er lik null, kommer jeg til å bruke List.Contains .
Nå vil jeg gi en liste over verdier som skal brukes på denne funksjonen.
Jeg bruker krøllete parenteser som en listeinitialiserer. Innenfor de krøllete parentesene setter jeg 0, 1. Jeg legger til et komma etter at jeg har lukket den parentesen.
For den andre parameteren skal jeg bruke WDStartNum. Deretter legger jeg til den avsluttende parentesen.
Med dette på plass betyr det at en 0 eller 1 skal gi meg WDStartNumber. Hvis noe annet enn 0 eller 1 plasseres, bør jeg få resultatet 0.
La meg teste det ved å legge inn 2020 i TestQuery. Som forventet returnerer dette en "0" (null).
Det er fordi verdien 2020 ikke er på listen.
Legge til parameteren i M-funksjonen
Nå som jeg er sikker på at koden fungerer, kan jeg endelig legge den inn i selve datotabellen og M-funksjonen. Jeg åpner Advanced Editor , så kopierer jeg logikken .
Så går jeg inn i datotabellspørringen.
Jeg åpner den originale M-funksjonen gjennom Advanced Editor .
Så skal jeg lime inn koden min der. La oss sørge for at det er et komma på slutten av linjen.
Deretter skal jeg markere og kopiere parameternavnet mitt .
Da skal jeg legge til den parameteren her .
Merk at jeg må legge til et komma på slutten av den eksisterende linjen først, så må jeg erklære at denne parameteren er valgfri . Deretter kan jeg plassere WDStartNum og legge til typen .
Jeg har lagt til parameteren og jeg har også innebygd logikken. Men jeg må også sørge for at jeg får de forventede resultatene. Så jeg skal se etter kodelinjen som dekker ukedagen.
Deretter skal jeg legge til + WDStart .
Jeg klikker på Ferdig for å lukke redigeringsprogrammet. Deretter skal jeg påkalle spørringen.
For startdatoen setter jeg 1. januar 2020, og deretter bruker jeg 31. desember 2020 som sluttdato.
Jeg bruker "7" som startmåneden for regnskapsåret, og deretter legger jeg "0" som WDStartNum.
Jeg klikker på Invoke. Nå har jeg datotabellen.
Jeg vil gi den nytt navn for å sikre at den lett kan identifiseres.
Nå skal jeg sjekke resultatene.
Dette er min DayOfWeek- spalte.
Det viser at mandag har returnert som 0.
For å gå tilbake til spørsmålet i forumet, må jeg endre nummeret på ukens start til 1 i stedet for 0. Så jeg vil bare endre det i målingen.
Når jeg trykker enter, blir mandag dag 1 i stedet for dag 0.
Ser vi på tallområdet, går det nå fra 1 til 7 i stedet for 0 til 6.
Hva skjer hvis jeg passerer en nullverdi?
Da går DayOfWeek for mandag bare tilbake til 0.
Konklusjon
Slik kan du legge til en ekstra parameter rett inn i M-funksjonen på datotabellspørringen din. Prosessen er ikke i det hele tatt kompleks, som jeg nevnte tidligere. Så lenge du har en kilde for M-koden, er det lett nok derfra.
Igjen, du kan alltid sjekke kurset Advanced Data Transformations & Modeling iOnline hvis du ikke har bakgrunn om hvordan M-koder fungerer.
Beste ønsker,
Melissa
***** Lære Lucky Templates? *****
Lær å bruke DAX Studio EVALUATE nøkkelordet med grunnleggende eksempler og få en bedre forståelse av hvordan dette kan hjelpe deg med databehandling.
Finn ut hvorfor det er viktig å ha en dedikert datotabell i LuckyTemplates, og lær den raskeste og mest effektive måten å gjøre det på.
Denne korte opplæringen fremhever LuckyTemplates mobilrapporteringsfunksjon. Jeg skal vise deg hvordan du kan utvikle rapporter effektivt for mobil.
I denne LuckyTemplates-utstillingen vil vi gå gjennom rapporter som viser profesjonell tjenesteanalyse fra et firma som har flere kontrakter og kundeengasjementer.
Gå gjennom de viktigste oppdateringene for Power Apps og Power Automate og deres fordeler og implikasjoner for Microsoft Power Platform.
Oppdag noen vanlige SQL-funksjoner som vi kan bruke som streng, dato og noen avanserte funksjoner for å behandle eller manipulere data.
I denne opplæringen lærer du hvordan du lager din perfekte LuckyTemplates-mal som er konfigurert til dine behov og preferanser.
I denne bloggen vil vi demonstrere hvordan du legger feltparametere sammen med små multipler for å skape utrolig nyttig innsikt og grafikk.
I denne bloggen vil du lære hvordan du bruker LuckyTemplates rangering og tilpassede grupperingsfunksjoner for å segmentere et eksempeldata og rangere det i henhold til kriterier.
I denne opplæringen skal jeg dekke en spesifikk teknikk rundt hvordan du viser kumulativ total kun opp til en bestemt dato i grafikken i LuckyTemplates.