Eeuwigdurende vakantiekalender - POTW #12 (Power Query-oplossing)

Eeuwigdurende vakantiekalender - POTW #12 (Power Query-oplossing)

In deze blogpost onderzoeken we mijn oplossing voor . Voor deze uitdaging hebben we de eerste Probleem van de week-uitdaging van LuckyTemplates opnieuw bekeken, waar we een eeuwigdurende vakantiekalender hebben gemaakt op basis van een mix van specifieke en relatieve datums. Maar deze keer gebruiken we alleen Power Query . Je kunt de volledige video van deze tutorial onderaan deze blog bekijken.

Eeuwigdurende vakantiekalender - POTW #12 (Power Query-oplossing)

Als je vastzit aan de probleemanalyse zelf, kun je de opnieuw bekijken om te zien of er elementen zijn in een van de benaderingen die je kunnen helpen bij deze uitdaging.

Eeuwigdurende vakantiekalender - POTW #12 (Power Query-oplossing)

Tijdens het lezen van de inzendingen heb ik een mix van mensen gezien die gebruik maakten van de gebruikersinterface en aangepaste functies schreven om een ​​eeuwigdurende kalender te maken. Het was leuk om elke inzending te analyseren, en als je geïnspireerd wilt raken, moedig ik je aan hetzelfde te doen.

Toen ik dit scenario zelf doorwerkte, bedacht ik uiteindelijk meerdere oplossingen. Degene die ik heb gevolgd, illustreert het beste hoe je een probleem niet alleen in kleinere stukjes kunt opsplitsen , maar ze ook zichtbaar kunt maken . Dit is erg handig als u een fout of onverwachte resultaten tegenkomt.

Inhoudsopgave

Het startpunt voor het maken van een eeuwigdurende kalender

Deze rauwe feesttafel is ons uitgangspunt. Om een ​​datum samen te stellen, hebben we een jaar, een maand en een dag nodig voor specifieke datums. Het enige wat ontbreekt is het jaartal.

Eeuwigdurende vakantiekalender - POTW #12 (Power Query-oplossing)

Maar voor relatieve datums moeten we wat meer werk verzetten. Om te beginnen moeten we die dagkolom splitsen in zowel het cijfer als de weekdag. Laten we die stappen eens bekijken.

De jaren ophalen uit de datumtabel

Om deze oplossing dynamisch te maken, ga ik de jaren uit de datumtabel halen . In de formulebalk kun je zien dat ik een projectie heb gebruikt om een ​​tabel met één kolom uit mijn datumtabel te halen. Dit zal natuurlijk duplicaten bevatten. Om die te verwijderen, heb ik Table.Distinct toegevoegd .

Eeuwigdurende vakantiekalender - POTW #12 (Power Query-oplossing)

Als ik opzij klik in de witte ruimte naast een van deze tabellen, zie je ook een lijst met de verschillende jaren die aanwezig zijn in mijn datumtabelquery.

Eeuwigdurende vakantiekalender - POTW #12 (Power Query-oplossing)

We hebben een maandnaam gekregen , maar we hebben eigenlijk een maandnummer nodig . Als we nu een jaar aan een maandnaam koppelen, kunnen we de functie Date.From gebruiken om de eerste van die maand als datumwaarde te retourneren.

Door Date.Month toe te voegen , houden we alleen het maandnummer voor die specifieke datum over. Voor januari wordt een 1 geretourneerd. Voor februari wordt een 2 geretourneerd, enzovoort.

Eeuwigdurende vakantiekalender - POTW #12 (Power Query-oplossing)

Het cijfer uit de dagkolom halen

Om het cijfer uit de dagkolom te halen, hebben we besloten de kolom niet te splitsen en in plaats daarvan de waarde te extraheren. Zoals je kunt zien in de formulebalk, hebben we Text.BeforeDelimiter gebruikt en die spatie gebruikt om het rechter- en linkergedeelte van die tekenreeks te identificeren.

Eeuwigdurende vakantiekalender - POTW #12 (Power Query-oplossing)

Als er geen ruimte is, willen we teruggeven wat er nog over is in de dagkolom. Dus voor de eerste record retourneert dat een 1. Voor de tweede record die die spatie bevat, retourneert het het eerste deel van de tekenreeks, het woord Derde .

Eeuwigdurende vakantiekalender - POTW #12 (Power Query-oplossing)

We zullen een vergelijkbare benadering gebruiken om de datumnaam te krijgen, maar gebruiken de functie List.PositionOf . Dit retourneert de op nul gebaseerde offset van de waarde in de lijst die als eerste argument is doorgegeven, en retourneert -1 als de waarde niet in die lijst voorkomt.

Eeuwigdurende vakantiekalender - POTW #12 (Power Query-oplossing)

Voor het eerste record wordt de waarde 1 doorgegeven, die niet aanwezig is in onze lijst. Daarom retourneert het de waarde -1. Voor het tweede record wordt de waarde Monday geretourneerd .

Het geeft dat door aan onze functie en retourneert een 1 omdat dit het tweede item in onze lijst is. Vervolgens vervangen we alle -1 waarden door een null .

Eeuwigdurende vakantiekalender - POTW #12 (Power Query-oplossing)

Op dit punt hebben we alle bouwstenen gemaakt die we nodig hebben om de aangepaste functie aan te roepen.

Een beroep doen op de aangepaste functie voor de eeuwigdurende vakantiekalender

In de formulebalk kunnen we zien dat de functie vier argumenten nodig heeft: een jaar , een maand , een cijfer en een weekdag .

Eeuwigdurende vakantiekalender - POTW #12 (Power Query-oplossing)

Maar hoe bepaalt het die datumwaarde? We zullen de List.PositionOf opnieuw gebruiken om een ​​numerieke waarde voor het cijfer te krijgen. We hebben een lijst met eerste, tweede, derde en vierde. Wanneer we het cijfer doorgeven aan de List.PositionOf , retourneert het de op nul gebaseerde offset.

Eeuwigdurende vakantiekalender - POTW #12 (Power Query-oplossing)

Nogmaals, als een waarde niet aanwezig is, wordt een -1 geretourneerd. Dus voor de eerste record geven we de waarde 1 door. 1 is niet aanwezig in deze lijst, daarom retourneert het de waarde -1. Voor het tweede record geven we de waarde Third door, het derde item in onze lijst. Dit geeft de waarde van 2 terug.

Een lijst met datums maken

Laten we nu een lijst met datums maken. We bepalen de startdatum voor die maand, bepalen het aantal dagen in die maand en gebruiken List.Dates om een ​​lijst te maken met alle dagen in die maand.

Eeuwigdurende vakantiekalender - POTW #12 (Power Query-oplossing)

Vervolgens gebruiken we List.Select om alleen die datums te behouden die op een specifieke weekdag vallen.

Eeuwigdurende vakantiekalender - POTW #12 (Power Query-oplossing)

Wanneer we naast een van deze lijsten opzij klikken, kunnen we zien dat deze alleen deze vier items bevat.

Eeuwigdurende vakantiekalender - POTW #12 (Power Query-oplossing)

Voorwaardelijke logica toepassen

Ten slotte passen we voorwaardelijke logica toe om een ​​datum te construeren of op te halen. Als de weekdag null is , wat aangeeft dat we een specifieke datum hebben, kunnen we de intrinsieke #date gebruiken om een ​​datumwaarde te construeren.

Eeuwigdurende vakantiekalender - POTW #12 (Power Query-oplossing)

Als het cijfer gelijk is aan het laatste, kunnen we de functie List.Reverse gebruiken om de volgorde in de lijst om te keren en de eerste waarde te extraheren.

Eeuwigdurende vakantiekalender - POTW #12 (Power Query-oplossing)

Als we deze oplopende volgorde willen wijzigen in aflopende volgorde, kunnen we altijd de laatste datum uit dat datumbereik halen. Het maakt niet uit of we vier of vijf elementen in de lijst hebben. Door de volgorde om te draaien en het eerste item eruit te halen, hebben we altijd de laatste datum.

Eeuwigdurende vakantiekalender - POTW #12 (Power Query-oplossing)

Voor alle andere gevallen gebruiken we List.Skip .

Eeuwigdurende vakantiekalender - POTW #12 (Power Query-oplossing)

We kunnen de waarde extraheren op basis van deze positie op de lijst. Voor Thanksgiving is het cijfer de vierde en de vierde geeft een 3 terug. Hierdoor worden de eerste drie waarden in de lijst overgeslagen en wordt altijd het vierde item geretourneerd.

Eeuwigdurende vakantiekalender - POTW #12 (Power Query-oplossing)

Laten we alles samenvoegen en naar de oplossingsvraag gaan. Voor de bronstap noemen we de RAW-vakantiedatumtabel. Vervolgens voegen we een kolom toe die een lijst met datums retourneert.

Eeuwigdurende vakantiekalender - POTW #12 (Power Query-oplossing)

Herziening van de M-code voor de eeuwigdurende vakantiekalender

Laten we de M-code voor de kolom controleren. Voor elke rij in de tabel hebben we een tabel genest met de verschillende jaren uit de datumtabel. Vervolgens hebben we de waarden in die jaarkolom getransformeerd door de aangepaste functie aan te roepen.

Eeuwigdurende vakantiekalender - POTW #12 (Power Query-oplossing)

Om de aangepaste functie te kunnen gebruiken, moeten we natuurlijk eerst wat instellen. We moeten het maandnummer , de cijferwaarde en natuurlijk de weekdag krijgen . Vervolgens hebben we vanuit die geneste tabel de lijst met datums bijgehouden.

Eeuwigdurende vakantiekalender - POTW #12 (Power Query-oplossing)

Als we opzij klikken in de witte ruimte, zien we hieronder een voorbeeld van die lijst.

Eeuwigdurende vakantiekalender - POTW #12 (Power Query-oplossing)

De volgende stap is om die lijst uit te breiden en de CelebratedOnDate toe te voegen .

Eeuwigdurende vakantiekalender - POTW #12 (Power Query-oplossing)

Dit is de logica die we in deze berekening hebben gebruikt: als de datum op een zaterdag valt, dan gaan we een dag aftrekken zodat we op een vrijdag uitkomen. Als het een zondag is, voegen we een dag toe om op een maandag te landen. Als het geen zaterdag of zondag is, dan willen we een nul.

Eeuwigdurende vakantiekalender - POTW #12 (Power Query-oplossing)

Ten slotte is de laatste stap het wijzigen van de typen.

Eeuwigdurende vakantiekalender - POTW #12 (Power Query-oplossing)

Conclusie

Even een herinnering dat een doorlopende serie is die elke 1e en 3e woensdag plaatsvindt op het LuckyTemplates-forum. Het probleem dat in de eerste week is gepost, vereist een op DAX gebaseerde oplossing, terwijl het probleem in de derde week om een ​​op Power Query gebaseerde oplossing vraagt.

Als je de inhoud van deze POTW leuk vond, abonneer je dan op het LuckyTemplates TV-kanaal voor meer. Er komt voortdurend een enorme hoeveelheid content uit van mijzelf en een reeks contentmakers, allemaal toegewijd aan het verbeteren van de manier waarop u LuckyTemplates en het Power Platform gebruikt.

Melissa


Wat is zelf in Python: voorbeelden uit de echte wereld

Wat is zelf in Python: voorbeelden uit de echte wereld

Wat is zelf in Python: voorbeelden uit de echte wereld

Een RDS-bestand opslaan en laden in R

Een RDS-bestand opslaan en laden in R

Je leert hoe je objecten uit een .rds-bestand in R opslaat en laadt. In deze blog wordt ook besproken hoe je objecten uit R naar LuckyTemplates importeert.

First N Business Days Revisited – Een DAX-coderingstaaloplossing

First N Business Days Revisited – Een DAX-coderingstaaloplossing

In deze tutorial over DAX-coderingstaal leert u hoe u de functie GENERATE gebruikt en hoe u de titel van een maat dynamisch wijzigt.

Breng inzichten onder de aandacht met behulp van de Multi Threaded Dynamic Visuals-techniek in LuckyTemplates

Breng inzichten onder de aandacht met behulp van de Multi Threaded Dynamic Visuals-techniek in LuckyTemplates

Deze zelfstudie behandelt hoe u de Multi Threaded Dynamic Visuals-techniek kunt gebruiken om inzichten te creëren op basis van dynamische gegevensvisualisaties in uw rapporten.

Inleiding tot het filteren van context in LuckyTemplates

Inleiding tot het filteren van context in LuckyTemplates

In dit artikel zal ik de filtercontext doornemen. Filtercontext is een van de belangrijkste onderwerpen waarover elke LuckyTemplates-gebruiker in eerste instantie zou moeten leren.

Beste tips voor het gebruik van de apps in LuckyTemplates Online Service

Beste tips voor het gebruik van de apps in LuckyTemplates Online Service

Ik wil laten zien hoe de online service LuckyTemplates Apps kan helpen bij het beheren van verschillende rapporten en inzichten die uit verschillende bronnen zijn gegenereerd.

Analyseer winstmargeveranderingen in de loop van de tijd - analyse met LuckyTemplates en DAX

Analyseer winstmargeveranderingen in de loop van de tijd - analyse met LuckyTemplates en DAX

Leer hoe u wijzigingen in uw winstmarge kunt berekenen met behulp van technieken zoals vertakking van metingen en het combineren van DAX-formules in LuckyTemplates.

Materialisatie-ideeën voor gegevenscaches in DAX Studio

Materialisatie-ideeën voor gegevenscaches in DAX Studio

Deze tutorial bespreekt de ideeën van materialisatie van datacaches en hoe deze de prestaties van DAX beïnvloeden bij het leveren van resultaten.

Zakelijke rapportage met behulp van LuckyTemplates

Zakelijke rapportage met behulp van LuckyTemplates

Als u tot nu toe nog steeds Excel gebruikt, is dit het beste moment om LuckyTemplates te gaan gebruiken voor uw zakelijke rapportagebehoeften.

Wat is LuckyTemplates Gateway? Alles wat u moet weten

Wat is LuckyTemplates Gateway? Alles wat u moet weten

Wat is LuckyTemplates Gateway? Alles wat u moet weten