Perpetual Holiday Calendar – POTW #12 (Power Query Solution)

Ebben a blogbejegyzésben megvizsgáljuk a megoldásomat. Ehhez a kihíváshoz újra felkerestük a LuckyTemplates első Probléma of the Week című kihívását, ahol konkrét és relatív dátumok keverékéből hoztunk létre egy örök ünnepnaptárt. De ezúttal csak a Power Queryt fogjuk használni . Az oktatóanyag teljes videóját a blog alján tekintheti meg.

Perpetual Holiday Calendar – POTW #12 (Power Query Solution)

Ha elakad magával a probléma lebontásával, újra átnézheti a webhelyet, hogy megnézze, vannak-e olyan elemek valamelyik megközelítésben, amelyek segíthetnek ebben a kihívásban.

Perpetual Holiday Calendar – POTW #12 (Power Query Solution)

A beadványok olvasása közben azt tapasztaltam, hogy emberek vegyesen használják a felhasználói felületet , és egyéni funkciókat írtak egy öröknaptár létrehozásához. Élvezetes volt elemezni az egyes bejegyzéseket, és ha ihletet szeretnél meríteni, akkor erre biztatlak.

Amikor magam dolgoztam ezen a forgatókönyvön, több megoldást is létrehoztam. Az, amelyikkel jártam, azt szemlélteti a legjobban, hogyan lehet nem csak kisebb darabokra bontani egy problémát , hanem láthatóvá is tenni . Ez nagyon hasznos, ha hibát vagy váratlan eredményt tapasztal.

Tartalomjegyzék

Az öröknaptár létrehozásának kiindulópontja

Ez a nyers ünnepi asztal a kiindulópontunk. Egy dátum összeállításához egy évre, egy hónapra és egy napra van szükségünk bizonyos dátumokhoz. Már csak az évszám hiányzik.

Perpetual Holiday Calendar – POTW #12 (Power Query Solution)

De a relatív dátumokhoz még egy kicsit többet kell dolgoznunk. Kezdetnek a nap oszlopot fel kell osztanunk számokra és hétköznapokra is. Tekintsük át ezeket a lépéseket.

Az évek lekérése a dátumtáblázatból

A megoldás dinamikusabbá tételéhez lekérem az éveket a dátumtáblázatból . A képletsorban láthatja, hogy vetítést használtam, hogy egyetlen oszlopos táblázatot kapjak a dátumtáblázatomból. Ez természetesen tartalmazni fog ismétlődéseket. Ezek eltávolításához hozzáadtam a Table.Distinct elemet .

Perpetual Holiday Calendar – POTW #12 (Power Query Solution)

Ha a táblázatok melletti fehér mezőben oldalra kattintok, megjelenik egy lista is, amely a dátumtáblázat-lekérdezésemben jelen lévő különböző éveket tartalmazza.

Perpetual Holiday Calendar – POTW #12 (Power Query Solution)

Kaptunk egy hónap nevet , de valójában szükségünk lesz egy hónapszámra . Most, amikor egy évet egy hónap nevéhez kapcsolunk, a Date.From függvényt használhatjuk az adott hónap első dátumának visszaadásához dátumértékként.

A Dátum.Hónap hozzáadásával csak a hónap száma marad meg az adott dátumhoz. Januárban 1-et ad vissza. Februárban 2-t ad vissza, és így tovább.

Perpetual Holiday Calendar – POTW #12 (Power Query Solution)

A szám beszerzése a nap oszlopból

Ahhoz, hogy a számot a nap oszlopból kapjuk meg, úgy döntöttünk, hogy nem osztjuk fel az oszlopot, hanem kivonjuk az értéket. Amint a képletsorban látható, a Text.BeforeDelimiter-t használtuk , és ezt a szóközt használtuk a szöveges karakterlánc jobb és bal oldali részének azonosítására.

Perpetual Holiday Calendar – POTW #12 (Power Query Solution)

Ha nincs hely, azt szeretnénk visszaadni, ami a nap oszlopban marad. Tehát az első rekordnál 1-et ad vissza. A második rekordnál, amely tartalmazza ezt a szóközt, a szöveges karakterlánc első részét, a Third szót adja vissza .

Perpetual Holiday Calendar – POTW #12 (Power Query Solution)

Hasonló megközelítést fogunk alkalmazni a dátumnév meghatározásához, de a List.PositionOf függvényt használjuk . Ez az első argumentumként átadott lista értékének nulla alapú eltolását adja vissza, és -1-et ad vissza, ha az érték nem jelenik meg a listában.

Perpetual Holiday Calendar – POTW #12 (Power Query Solution)

Az első rekordnál átadja az 1 értéket, amely nem szerepel a listánkban. Ezért adja vissza a -1 értéket. A második rekordnál a Monday értéket adja vissza .

Ezt átadja a függvényünknek, és 1-et ad vissza, mert ez a második elem a listánkban. Ezután az összes -1 értéket lecseréljük egy nullára .

Perpetual Holiday Calendar – POTW #12 (Power Query Solution)

Ezen a ponton létrehoztuk az összes építőelemet, amelyre szükségünk van az egyéni függvény meghívásához.

Az egyéni funkció előhívása az állandó ünnepnaptárhoz

A képletsorban láthatjuk, hogy a függvénynek négy argumentuma van: egy év , egy hónap , egy szám és egy hétköznap .

Perpetual Holiday Calendar – POTW #12 (Power Query Solution)

De hogyan határozza meg a dátum értékét? Ismét a List.PositionOf-ot használjuk, hogy számértéket kapjunk a számhoz. Van egy listánk, amely az elsőt, a másodikat, a harmadikat és a negyediket tartalmazza. Amikor átadjuk a számot a List.PositionOf-nak , akkor a nulla alapú eltolást adja vissza.

Perpetual Holiday Calendar – POTW #12 (Power Query Solution)

Ismét, ha egy érték nincs jelen, akkor -1-et ad vissza. Tehát az első rekordnál az 1 értéket adjuk át. Az 1 nem szerepel ebben a listában, ezért a -1 értéket adja vissza. A második rekordnál a Third értéket adjuk át, ami a harmadik elem a listánkban. Ez a 2 értéket adja vissza.

Dátumlista készítése

Most készítsünk egy listát a dátumokról. Meghatározzuk az adott hónap kezdő dátumát, meghatározzuk a napok számát abban a hónapban, és a List.Dates segítségével létrehozunk egy listát, amely az adott hónap összes napját tartalmazza.

Perpetual Holiday Calendar – POTW #12 (Power Query Solution)

Ezután a List.Select funkciót használjuk, hogy csak azokat a dátumokat őrizzük meg, amelyek egy adott hétköznapon vannak.

Perpetual Holiday Calendar – POTW #12 (Power Query Solution)

Ha bármelyik lista melletti oldalra kattintunk, láthatjuk, hogy csak ezt a négy elemet tartalmazza.

Perpetual Holiday Calendar – POTW #12 (Power Query Solution)

Feltételes logika alkalmazása

Végül feltételes logikát alkalmazunk egy dátum létrehozásához vagy lekéréséhez. Ha a hét napja null , ami azt jelzi, hogy van egy konkrét dátumunk, használhatjuk a belső #date értéket a dátumérték létrehozásához.

Perpetual Holiday Calendar – POTW #12 (Power Query Solution)

Ha a szám egyenlő az utolsóval, akkor a List.Reverse függvénnyel megfordíthatjuk a sorrendet a listában, és kivonhatjuk az első értéket.

Perpetual Holiday Calendar – POTW #12 (Power Query Solution)

Ha ezt a növekvő sorrendet csökkenőre akarjuk változtatni, akkor ebből a dátumtartományból mindig kivonhatjuk az utolsó dátumot. Nem számít, hogy négy vagy öt elemünk van a listában. A sorrend megfordításával és az első tétel kibontásával mindig megvan az utolsó dátum.

Perpetual Holiday Calendar – POTW #12 (Power Query Solution)

Az összes többi esetben a List.Skip parancsot használjuk .

Perpetual Holiday Calendar – POTW #12 (Power Query Solution)

Az értéket a lista ezen pozíciója alapján kinyerhetjük. Hálaadás napján a szám a negyedik, a negyedik pedig 3-at ad vissza. Ezzel kihagyja a lista első három értékét, és mindig a negyedik elemet adja vissza.

Perpetual Holiday Calendar – POTW #12 (Power Query Solution)

Tegyük össze az egészet, és menjünk a megoldás lekérdezésére. A forráslépéshez a RAW ünnepnapok dátumtáblázatát hívjuk. Ezután hozzáadunk egy oszlopot, amely egy listát ad vissza dátumokkal.

Perpetual Holiday Calendar – POTW #12 (Power Query Solution)

Az örökös ünnepnaptár M kódjának áttekintése

Ellenőrizzük az oszlop M kódját. A táblázat minden sorához beágyaztunk egy táblázatot, amely a dátumtáblázattól eltérő éveket tartalmaz. Ezután az egyéni függvény meghívásával átalakítottuk az év oszlop értékeit.

Perpetual Holiday Calendar – POTW #12 (Power Query Solution)

Természetesen ahhoz, hogy az egyéni függvényt meghívhassuk, először el kell végeznünk a beállítást. Meg kell kapnunk a hónap számát , a számértéket és természetesen a hét napját . Aztán abból a beágyazott táblázatból megtartottuk a listát a dátumokkal.

Perpetual Holiday Calendar – POTW #12 (Power Query Solution)

Ha oldalra kattintunk a fehér mezőben, lentebb láthatjuk a lista előnézetét.

Perpetual Holiday Calendar – POTW #12 (Power Query Solution)

A következő lépés a lista bővítése és a CelebratedOnDate hozzáadása .

Perpetual Holiday Calendar – POTW #12 (Power Query Solution)

Ezt a logikát használtuk a számítás során: ha a dátum szombaton van, akkor kivonunk egy napot, hogy pénteken érkezzünk. Ha vasárnap van, akkor hozzáadunk egy napot a hétfői leszálláshoz. Ha nem szombat vagy vasárnap, akkor nullát akarunk.

Perpetual Holiday Calendar – POTW #12 (Power Query Solution)

Végül az utolsó lépés a típusok megváltoztatása.

Perpetual Holiday Calendar – POTW #12 (Power Query Solution)

Következtetés

Csak egy gyors emlékeztetőegy folyamatban lévő sorozat, amely minden 1. és 3. szerdán történik a LuckyTemplates fórumon. Az 1. héten közzétett probléma DAX-alapú, míg a 3. heti probléma Power Query-alapú megoldást igényel.

Ha tetszett az ebben a POTW-ben tárgyalt tartalom, kérjük, iratkozzon fel a LuckyTemplates TV-csatornára a továbbiakért. Rengeteg tartalom jön ki folyamatosan tőlem és egy sor tartalomkészítőtől, mindannyian elkötelezettek a LuckyTemplates és a Power Platform használatának javításáért.

Méhfű


Mi az a Power Query & M Language: Részletes áttekintés

Mi az a Power Query & M Language: Részletes áttekintés

Ez az oktatóanyag áttekintést nyújt a Power Query szerkesztőről és az M nyelvről a LuckyTemplates asztalon.

Oldalszámozott jelentés készítése: Szövegek és képek hozzáadása

Oldalszámozott jelentés készítése: Szövegek és képek hozzáadása

Ismerje meg, hogyan hozhat létre oldalszámozott jelentést, hogyan adhat hozzá szövegeket és képeket, majd exportálhatja a jelentést különböző dokumentumformátumokba.

A SharePoint automatizálási szolgáltatás | Bevezetés

A SharePoint automatizálási szolgáltatás | Bevezetés

Ismerje meg, hogyan használhatja a SharePoint automatizálási funkcióját munkafolyamatok létrehozására, és segít a SharePoint-felhasználók, -könyvtárak és -listák mikrokezelésében.

Oldja meg az adatelemzési kihívást a LuckyTemplates Accelerator segítségével

Oldja meg az adatelemzési kihívást a LuckyTemplates Accelerator segítségével

Fejlessze jelentéskészítési készségeit, ha csatlakozik egy adatelemzési kihíváshoz. Az Accelerator segítségével LuckyTemplates szuperfelhasználóvá válhatsz!

Összesítések futtatása a LuckyTemplates alkalmazásban a DAX segítségével

Összesítések futtatása a LuckyTemplates alkalmazásban a DAX segítségével

Ismerje meg, hogyan számíthatja ki a futó összegeket a LuckyTemplates programban a DAX segítségével. Az összesítések futtatása lehetővé teszi, hogy ne ragadjon le egyetlen egyéni eredménynél sem.

A LuckyTemplates Dax-változói állandóak: mit jelent ez?

A LuckyTemplates Dax-változói állandóak: mit jelent ez?

Ismerje meg a változók fogalmát a DAX-ban a LuckyTemplates-en belül, és a változók hatásait a mérőszámok kiszámítására.

LuckyTemplates lejtődiagram: Áttekintés

LuckyTemplates lejtődiagram: Áttekintés

Tudjon meg többet a LuckyTemplates Slope diagram nevű egyéni vizualizációról, amely egyetlen vagy több mérőszám növekedésének/csökkenésének megjelenítésére szolgál.

LuckyTemplates színes témák az egységes vizualizációkhoz

LuckyTemplates színes témák az egységes vizualizációkhoz

Fedezze fel a LuckyTemplates színtémáit. Ezek elengedhetetlenek ahhoz, hogy jelentései és vizualizációi zökkenőmentesen nézzenek ki és működjenek.

Átlag kiszámítása LuckyTemplatesben: Hétköznapi vagy hétvégi eredmények elkülönítése a DAX segítségével

Átlag kiszámítása LuckyTemplatesben: Hétköznapi vagy hétvégi eredmények elkülönítése a DAX segítségével

Az átlag kiszámítása a LuckyTemplates alkalmazásban számos módon elvégezhető, hogy pontos információkat kapjon üzleti jelentéseihez.

LuckyTemplates Theming | LuckyTemplates Desktop Standard Theming

LuckyTemplates Theming | LuckyTemplates Desktop Standard Theming

Nézzük meg a Standard LuckyTemplates Theming témakört, és tekintsünk át néhány olyan funkciót, amely magában a LuckyTemplates Desktop alkalmazásban található.