Evig feriekalender – POTW #12 (Power Query Solution)

I dette blogindlæg vil vi undersøge min løsning på . Til denne udfordring besøgte vi LuckyTemplates' første ugens problem-udfordring, hvor vi skabte en evig feriekalender ud fra en blanding af specifikke og relative datoer. Men denne gang vil vi kun bruge Power Query . Du kan se den fulde video af denne tutorial nederst på denne blog.

Evig feriekalender – POTW #12 (Power Query Solution)

Hvis du sidder fast på selve problemfordelingen, kan du se igen for at se, om der er elementer i nogen af ​​tilgangene, der kan hjælpe dig med denne udfordring.

Evig feriekalender – POTW #12 (Power Query Solution)

Mens jeg læste indlæggene, har jeg set en blanding af mennesker, der udnytter brugergrænsefladen og skriver tilpassede funktioner for at skabe en evigvarende kalender. Det har været sjovt at analysere hvert indlæg, og hvis du ønsker at blive inspireret, opfordrer jeg dig til at gøre det samme.

Da jeg selv arbejdede igennem dette scenarie, endte jeg med at skabe flere løsninger. Den, jeg gik med, illustrerer bedst, hvordan du ikke kun kan nedbryde et problem i mindre stykker , men også gøre dem synlige . Dette er meget nyttigt, hvis du støder på en fejl eller uventede resultater.

Indholdsfortegnelse

Udgangspunktet for at skabe en evigvarende kalender

Dette rå feriebord er vores udgangspunkt. For at sammensætte en dato har vi brug for et år, en måned og en dag til bestemte datoer. Det eneste, der mangler, er året.

Evig feriekalender – POTW #12 (Power Query Solution)

Men for relative datoer er vi nødt til at gøre lidt mere arbejde. Til at begynde med skal vi opdele den dagkolonne i både tal og ugedag. Lad os gennemgå disse trin.

Henter årene fra datotabellen

For at gøre denne løsning dynamisk, vil jeg hente årene fra datotabellen . I formellinjen kan du se, at jeg har brugt en projektion til at få en enkelt kolonnetabel fra min datotabel. Dette vil selvfølgelig indeholde dubletter. For at fjerne dem har jeg tilføjet Table.Distinct .

Evig feriekalender – POTW #12 (Power Query Solution)

Når jeg klikker ud til siden i det hvide felt ved siden af ​​en af ​​disse tabeller, vil du også se en liste med de forskellige årstal, der findes i min datotabelforespørgsel.

Evig feriekalender – POTW #12 (Power Query Solution)

Vi fik et månedsnavn , men vi skal faktisk bruge et månedsnummer . Nu, når vi sammenkæder et år til et måneds navn, kan vi bruge Date.From- funktionen til at returnere den første i den måned som en datoværdi.

Ved at tilføje Date.Month , står vi tilbage med kun månedsnummeret for den specifikke dato. For januar returnerer den en 1. For februar returnerer den en 2, og så videre.

Evig feriekalender – POTW #12 (Power Query Solution)

Hent tallet fra dagkolonnen

For at få tallet fra dagkolonnen besluttede vi ikke at opdele kolonnen og udtrække værdien i stedet. Som du kan se i formellinjen, brugte vi Text.BeforeDelimiter og brugte det mellemrum til at identificere højre og venstre del af tekststrengen.

Evig feriekalender – POTW #12 (Power Query Solution)

Hvis der ikke er plads, vil vi gerne returnere det, der er tilbage i dagkolonnen. Så for den første post returnerer det et 1. For den anden post, der indeholder det mellemrum, returnerer det den første del af tekststrengen, ordet Third .

Evig feriekalender – POTW #12 (Power Query Solution)

Vi vil bruge en lignende tilgang til at få datonavnet, men bruge funktionen List.PositionOf . Dette returnerer den nul-baserede forskydning af værdien i listen, der er sendt som første argument, og den returnerer -1, hvis værdien ikke vises på listen.

Evig feriekalender – POTW #12 (Power Query Solution)

For den første post passerer den værdien 1, som ikke er til stede på vores liste. Det er derfor, det returnerer værdien af ​​-1. For den anden post returnerer den værdien Monday .

Det overfører det til vores funktion og returnerer et 1, fordi det er det andet punkt på vores liste. Dernæst erstatter vi alle -1 værdier med et null .

Evig feriekalender – POTW #12 (Power Query Solution)

På dette tidspunkt har vi oprettet alle de byggeklodser, vi skal bruge for at påberåbe den brugerdefinerede funktion.

Påberåber den brugerdefinerede funktion til den evige feriekalender

I formellinjen kan vi se, at funktionen tager fire argumenter: et år , en måned , et tal og en ugedag .

Evig feriekalender – POTW #12 (Power Query Solution)

Men hvordan bestemmer det denne datoværdi? Vi bruger List.PositionOf igen for at få en numerisk værdi for tallet. Vi har en liste, der indeholder første, anden, tredje og fjerde. Når vi sender tallet til List.PositionOf , returnerer det den nul-baserede offset.

Evig feriekalender – POTW #12 (Power Query Solution)

Igen, hvis en værdi ikke er til stede, returnerer den en -1. Så for den første post sender vi værdien 1. 1 er ikke til stede på denne liste, hvorfor den returnerer værdien -1. For den anden post sender vi værdien Third, som er det tredje element på vores liste. Dette returnerer værdien af ​​2.

Oprettelse af en liste over datoer

Lad os nu oprette en liste over datoer. Vi bestemmer startdatoen for den måned, bestemmer antallet af dage i den måned og bruger List.Dates til at oprette en liste, der indeholder alle dagene i den måned.

Evig feriekalender – POTW #12 (Power Query Solution)

Dernæst vil vi bruge List.Select til kun at beholde de datoer, der er på en bestemt ugedag.

Evig feriekalender – POTW #12 (Power Query Solution)

Når vi klikker ud til siden ved siden af ​​en af ​​disse lister, kan vi se, at den kun indeholder disse fire elementer.

Evig feriekalender – POTW #12 (Power Query Solution)

Anvendelse af betinget logik

Til sidst vil vi anvende betinget logik til at konstruere eller hente en dato. Hvis ugedagen er null , hvilket indikerer, at vi har en bestemt dato, kan vi bruge den iboende #dato til at konstruere en datoværdi.

Evig feriekalender – POTW #12 (Power Query Solution)

Hvis tallet er lig med sidst, kan vi bruge List.Reverse- funktionen til at vende rækkefølgen i listen og udtrække den første værdi.

Evig feriekalender – POTW #12 (Power Query Solution)

Hvis vi ønsker at ændre denne stigende rækkefølge til faldende, kan vi altid udtrække den sidste dato fra dette datointerval. Det er lige meget, om vi har fire eller fem elementer på listen. Ved at vende rækkefølgen og udtrække den første vare har vi altid sidste dato.

Evig feriekalender – POTW #12 (Power Query Solution)

Til alle de andre tilfælde bruger vi List.Skip .

Evig feriekalender – POTW #12 (Power Query Solution)

Vi kan udtrække værdien baseret på denne position på listen. For Thanksgiving day er tallet fjerde, og fjerde returnerer en 3. Dette vil springe de første tre værdier over på listen og vil altid returnere det fjerde element.

Evig feriekalender – POTW #12 (Power Query Solution)

Lad os samle det hele og gå til løsningsforespørgslen. For kildetrinnet kalder vi RAW-feriedatotabellen. Dernæst tilføjer vi en kolonne, der returnerer en liste med datoer.

Evig feriekalender – POTW #12 (Power Query Solution)

Gennemgang af M-koden for den evige feriekalender

Lad os tjekke M-koden for kolonnen. For hver række i tabellen indlejrede vi en tabel, der indeholder de adskilte år fra datotabellen. Derefter transformerede vi værdierne i den pågældende årskolonne ved at kalde den tilpassede funktion.

Evig feriekalender – POTW #12 (Power Query Solution)

For at kunne påberåbe den brugerdefinerede funktion, skal vi selvfølgelig lave nogle opsætninger først. Vi skal have månedsnummeret , talværdien og selvfølgelig ugedagen . Så fra den indlejrede tabel holdt vi listen med datoer.

Evig feriekalender – POTW #12 (Power Query Solution)

Når vi klikker ud til siden i det hvide rum, kan vi se en forhåndsvisning af listen nedenfor.

Evig feriekalender – POTW #12 (Power Query Solution)

Det næste trin er at udvide listen og tilføje CelebratedOnDate .

Evig feriekalender – POTW #12 (Power Query Solution)

Dette er den logik, vi brugte i denne beregning: Hvis datoen er på en lørdag, så trækker vi en dag fra, så vi lander på en fredag. Hvis det er en søndag, så vil vi tilføje en dag for at lande på en mandag. Hvis det ikke er en lørdag eller søndag, så vil vi have et nul.

Evig feriekalender – POTW #12 (Power Query Solution)

Til sidst er det sidste trin at ændre typerne.

Evig feriekalender – POTW #12 (Power Query Solution)

Konklusion

Bare en hurtig påmindelse om deter en igangværende serie, der finder sted hver 1. og 3. onsdag på LuckyTemplates forum. Problemet opslået den 1. uge kræver en DAX-baseret løsning, mens 3. uges problem beder om en Power Query-baseret.

Hvis du kunne lide indholdet i denne POTW, bedes du abonnere på LuckyTemplates tv-kanal for mere. Vi har en enorm mængde indhold, der kommer ud hele tiden fra mig selv og en række indholdsskabere, alle dedikeret til at forbedre den måde, du bruger LuckyTemplates og Power Platform på.

Melissa

Leave a Comment

Oplev unik indsigt ved hjælp af LuckyTemplates TOPN-funktion

Oplev unik indsigt ved hjælp af LuckyTemplates TOPN-funktion

Denne blog indeholder LuckyTemplates TOPN DAX-funktionen, som giver dig mulighed for at få unik indsigt fra dine data, hvilket hjælper dig med at træffe bedre markedsføringsbeslutninger.

Oprettelse af en datotabel i LuckyTemplates

Oprettelse af en datotabel i LuckyTemplates

Find ud af, hvorfor det er vigtigt at have en dedikeret datotabel i LuckyTemplates, og lær den hurtigste og mest effektive måde at gøre det på.

LuckyTemplates Mobile Reporting Tips og teknikker

LuckyTemplates Mobile Reporting Tips og teknikker

Denne korte vejledning fremhæver LuckyTemplates mobilrapporteringsfunktion. Jeg vil vise dig, hvordan du kan udvikle rapporter effektivt til mobilenheder.

Professionelle serviceanalyserapporter i LuckyTemplates

Professionelle serviceanalyserapporter i LuckyTemplates

I denne LuckyTemplates Showcase gennemgår vi rapporter, der viser professionel serviceanalyse fra et firma, der har flere kontrakter og kundeengagementer.

Microsoft Power Platform-opdateringer | Microsoft Ignite 2021

Microsoft Power Platform-opdateringer | Microsoft Ignite 2021

Gå gennem de vigtigste opdateringer til Power Apps og Power Automate og deres fordele og implikationer for Microsoft Power Platform.

Almindelige SQL-funktioner: En oversigt

Almindelige SQL-funktioner: En oversigt

Opdag nogle almindelige SQL-funktioner, som vi kan bruge, såsom streng, dato og nogle avancerede funktioner til at behandle eller manipulere data.

LuckyTemplates skabelonoprettelse: Guide og tips

LuckyTemplates skabelonoprettelse: Guide og tips

I denne tutorial lærer du, hvordan du opretter din perfekte LuckyTemplates-skabelon, der er konfigureret til dine behov og præferencer.

Feltparametre og små multipler i LuckyTemplates

Feltparametre og små multipler i LuckyTemplates

I denne blog vil vi demonstrere, hvordan man lagdelte feltparametre med små multipler for at skabe utrolig nyttig indsigt og visuals.

LuckyTemplates-rangering og brugerdefineret gruppering

LuckyTemplates-rangering og brugerdefineret gruppering

I denne blog vil du lære, hvordan du bruger LuckyTemplates rangerings- og brugerdefinerede grupperingsfunktioner til at segmentere et eksempeldata og rangordne det efter kriterier.

Viser kun kumulativ total op til en bestemt dato i LuckyTemplates

Viser kun kumulativ total op til en bestemt dato i LuckyTemplates

I denne tutorial vil jeg dække en specifik teknik omkring, hvordan du kun viser Kumulativ Total op til en bestemt dato i dine visuals i LuckyTemplates.