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


Hvad er Power Query & M Language: En detaljeret oversigt

Hvad er Power Query & M Language: En detaljeret oversigt

Denne vejledning giver et overblik over Power Query Editor og M-sproget inde på LuckyTemplates-skrivebordet.

Opret en sideinddelt rapport: Tilføjelse af tekster og billeder

Opret en sideinddelt rapport: Tilføjelse af tekster og billeder

Lær, hvordan du opretter en sideinddelt rapport, tilføjer tekster og billeder og derefter eksporterer din rapport til forskellige dokumentformater.

SharePoint Automate-funktionen | En introduktion

SharePoint Automate-funktionen | En introduktion

Lær, hvordan du bruger SharePoint-automatiseringsfunktionen til at skabe arbejdsgange og hjælpe dig med at mikrostyre SharePoint-brugere, -biblioteker og -lister.

Løs en dataanalyseudfordring med LuckyTemplates Accelerator

Løs en dataanalyseudfordring med LuckyTemplates Accelerator

Udvid dine rapportudviklingsevner ved at deltage i en dataanalyseudfordring. Acceleratoren kan hjælpe dig med at blive LuckyTemplates-superbruger!

Løbende totaler i LuckyTemplates ved hjælp af DAX

Løbende totaler i LuckyTemplates ved hjælp af DAX

Lær, hvordan du beregner løbende totaler i LuckyTemplates ved hjælp af DAX. Løbende totaler giver dig mulighed for ikke at blive fanget af et individuelt resultat.

LuckyTemplates Dax-variabler er konstante: Hvad betyder det?

LuckyTemplates Dax-variabler er konstante: Hvad betyder det?

Forstå konceptet med variabler i DAX i LuckyTemplates og betydningen af ​​variabler for, hvordan dine mål beregnes.

LuckyTemplates hældningsdiagram: en oversigt

LuckyTemplates hældningsdiagram: en oversigt

Lær mere om det brugerdefinerede visuelle kaldet LuckyTemplates Slope-diagrammet, som bruges til at vise stigning/fald for en enkelt eller flere metrics.

LuckyTemplates farvetemaer til ensartede visualiseringer

LuckyTemplates farvetemaer til ensartede visualiseringer

Opdag farvetemaerne i LuckyTemplates. Disse er afgørende for, at dine rapporter og visualiseringer kan se ud og fungere problemfrit.

Beregning af gennemsnit i LuckyTemplates: Isolering af resultater på ugedage eller weekender ved hjælp af DAX

Beregning af gennemsnit i LuckyTemplates: Isolering af resultater på ugedage eller weekender ved hjælp af DAX

Beregning af et gennemsnit i LuckyTemplates kan gøres på mange måder for at give dig præcise oplysninger til dine virksomhedsrapporter.

LuckyTemplates tema | LuckyTemplates Desktop Standard Theming

LuckyTemplates tema | LuckyTemplates Desktop Standard Theming

Lad os dykke ned i Standard LuckyTemplates-temaer og gennemgå nogle af de funktioner, der er indbygget i selve LuckyTemplates Desktop-applikationen.