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ű


Dátumtáblázat létrehozása a LuckyTemplates alkalmazásban

Dátumtáblázat létrehozása a LuckyTemplates alkalmazásban

Tudja meg, miért fontos egy dedikált dátumtáblázat a LuckyTemplatesben, és ismerje meg ennek leggyorsabb és leghatékonyabb módját.

LuckyTemplates mobil jelentéskészítési tippek és technikák

LuckyTemplates mobil jelentéskészítési tippek és technikák

Ez a rövid oktatóanyag kiemeli a LuckyTemplates mobil jelentési funkcióját. Megmutatom, hogyan készíthet hatékony jelentéseket mobileszközökön.

Professzionális szolgáltatáselemzési jelentések LuckyTemplatesben

Professzionális szolgáltatáselemzési jelentések LuckyTemplatesben

Ebben a LuckyTemplates bemutatóban olyan jelentéseket tekintünk át, amelyek professzionális szolgáltatáselemzést mutatnak be egy olyan cégtől, amely több szerződéssel és ügyfél-elkötelezettséggel rendelkezik.

Microsoft Power Platform frissítések | Microsoft Ignite 2021

Microsoft Power Platform frissítések | Microsoft Ignite 2021

Tekintse át a Power Apps és a Power Automate legfontosabb frissítéseit, valamint azok előnyeit és következményeit a Microsoft Power Platform számára.

Gyakori SQL-függvények: Áttekintés

Gyakori SQL-függvények: Áttekintés

Fedezzen fel néhány gyakori SQL-függvényt, amelyeket használhatunk, például a karakterláncot, a dátumot és néhány speciális függvényt az adatok feldolgozásához vagy manipulálásához.

LuckyTemplates sablonok létrehozása: útmutató és tippek

LuckyTemplates sablonok létrehozása: útmutató és tippek

Ebből az oktatóanyagból megtudhatja, hogyan hozhatja létre a tökéletes LuckyTemplates sablont, amely az Ön igényeinek és preferenciáinak megfelelően van konfigurálva.

Mezőparaméterek és kis többszörösek a LuckyTemplatesben

Mezőparaméterek és kis többszörösek a LuckyTemplatesben

Ebben a blogban bemutatjuk, hogyan lehet a mezőparamétereket kis többszörösekkel rétegezni, hogy hihetetlenül hasznos betekintést és látványelemeket hozzon létre.

LuckyTemplates rangsor és egyéni csoportosítás

LuckyTemplates rangsor és egyéni csoportosítás

Ebből a blogból megtudhatja, hogyan használhatja a LuckyTemplates rangsorolási és egyéni csoportosítási funkcióit a mintaadatok szegmentálására és kritériumok szerinti rangsorolására.

A LuckyTemplatesben csak egy meghatározott dátumig összesített összeg látható

A LuckyTemplatesben csak egy meghatározott dátumig összesített összeg látható

Ebben az oktatóanyagban egy konkrét technikát fogok bemutatni, hogyan jelenítheti meg a kumulatív összeget csak egy adott dátumig a LuckyTemplates vizualizációjában.

Bullet Charts: speciális egyéni látványelemek a LuckyTemplates számára

Bullet Charts: speciális egyéni látványelemek a LuckyTemplates számára

Ismerje meg, hogyan hozhat létre és testreszabhat Bullet diagramokat a LuckyTemplates alkalmazásban, amelyeket főként a teljesítmény mérésére használnak a célhoz vagy az előző évekhez képest.