Calendar perpetuu de vacanță – POTW #12 (Soluție Power Query)

În această postare pe blog, vom explora soluția mea la . Pentru această provocare, am reluat provocarea primară Problema săptămânii a lui LuckyTemplates, în care am creat un calendar de vacanță perpetuu dintr-un amestec de date specifice și relative. Dar de data aceasta, vom folosi doar Power Query . Puteți viziona videoclipul complet al acestui tutorial în partea de jos a acestui blog.

Calendar perpetuu de vacanță – POTW #12 (Soluție Power Query)

Dacă sunteți blocat cu defalcarea problemei în sine, puteți revizui prima pentru a vedea dacă există elemente în oricare dintre abordări care vă pot ajuta cu această provocare.

Calendar perpetuu de vacanță – POTW #12 (Soluție Power Query)

În timp ce citesc trimiterile, am văzut un amestec de oameni care foloseau interfața cu utilizatorul și scriau funcții personalizate pentru a crea un calendar perpetuu. A fost plăcut să analizezi fiecare intrare și, dacă vrei să te inspiri, te încurajez să faci același lucru.

Când lucram eu însumi la acest scenariu, am ajuns să creez mai multe soluții. Cea cu care am mers ilustrează cel mai bine modul în care nu numai că poți descompune o problemă în bucăți mai mici , ci și să le faci vizibile . Acest lucru este foarte util dacă întâmpinați o eroare sau rezultate neașteptate.

Cuprins

Punctul de plecare pentru crearea unui calendar perpetuu

Această masă brută de vacanță este punctul nostru de plecare. Pentru a reuni o dată, avem nevoie de un an, o lună și o zi pentru anumite date. Tot ce lipsește este anul.

Calendar perpetuu de vacanță – POTW #12 (Soluție Power Query)

Dar pentru datele relative, trebuie să lucrăm puțin mai mult. Pentru început, trebuie să împărțim acea coloană a zilei atât în ​​numeral, cât și în ziua săptămânii. Să revizuim acești pași.

Recuperarea Anilor din Tabelul Datelor

Pentru a face această soluție dinamică, voi prelua anii din tabelul de date . În bara de formule, puteți vedea că am folosit o proiecție pentru a obține un tabel cu o singură coloană din tabelul meu de date. Aceasta, desigur, va conține duplicate. Pentru a le elimina, am adăugat Table.Distinct .

Calendar perpetuu de vacanță – POTW #12 (Soluție Power Query)

Când dau clic în lateral în spațiul alb de lângă oricare dintre aceste tabele, veți vedea, de asemenea, o listă cu anii diferiți prezenți în interogarea mea pentru tabelul de date.

Calendar perpetuu de vacanță – POTW #12 (Soluție Power Query)

Ni s-a dat un nume de lună , dar de fapt vom avea nevoie de un număr de lună . Acum, când concatenăm un an cu un nume de lună, putem folosi funcția Date.From pentru a returna prima lună ca valoare de dată.

Adăugând Date.Month , ne rămâne doar numărul lunii pentru data respectivă. Pentru ianuarie, returnează un 1. Pentru februarie, returnează un 2 și așa mai departe.

Calendar perpetuu de vacanță – POTW #12 (Soluție Power Query)

Obținerea numărului din coloana Zilei

Pentru a obține cifra din coloana zilei, am decis să nu împărțim coloana și să extragem în schimb valoarea. După cum puteți vedea în bara de formule, am folosit Text.BeforeDelimiter și am folosit acel spațiu pentru a identifica partea din dreapta și din stânga acelui șir de text.

Calendar perpetuu de vacanță – POTW #12 (Soluție Power Query)

Dacă nu există spațiu, vrem să returnăm tot ce rămâne în coloana zilei. Deci, pentru prima înregistrare, aceasta returnează un 1. Pentru a doua înregistrare care conține acel spațiu, returnează prima parte a șirului de text, cuvântul Third .

Calendar perpetuu de vacanță – POTW #12 (Soluție Power Query)

Vom folosi o abordare similară pentru a obține numele datei, dar folosim funcția List.PositionOf . Aceasta returnează offset-ul pe bază de zero a valorii din lista transmisă ca prim argument și returnează -1 dacă valoarea nu apare în acea listă.

Calendar perpetuu de vacanță – POTW #12 (Soluție Power Query)

Pentru prima înregistrare, trece valoarea 1, care nu este prezentă în lista noastră. Acesta este motivul pentru care returnează valoarea -1. Pentru a doua înregistrare, returnează valoarea Monday .

Acesta transmite funcția noastră și returnează un 1 deoarece este al doilea element din lista noastră. În continuare, vom înlocui toate valorile -1 cu un null .

Calendar perpetuu de vacanță – POTW #12 (Soluție Power Query)

În acest moment, am creat toate blocurile de care avem nevoie pentru a invoca funcția personalizată.

Invocarea funcției personalizate pentru calendarul perpetuu de vacanță

În bara de formule, putem vedea că funcția ia patru argumente: un an , o lună , un număr și o zi a săptămânii .

Calendar perpetuu de vacanță – POTW #12 (Soluție Power Query)

Dar cum determină această valoare a datei? Vom folosi din nou List.PositionOf pentru a obține o valoare numerică pentru numeral. Avem o listă care conține primul, al doilea, al treilea și al patrulea. Când trecem numeralul în List.PositionOf , acesta returnează offset-ul bazat pe zero.

Calendar perpetuu de vacanță – POTW #12 (Soluție Power Query)

Din nou, dacă o valoare nu este prezentă, returnează un -1. Deci, pentru prima înregistrare, trecem valoarea 1. 1 nu este prezent în această listă, motiv pentru care returnează valoarea -1. Pentru a doua înregistrare, trecem valoarea Third, care este al treilea element din lista noastră. Aceasta returnează valoarea 2.

Crearea unei liste de date

Să creăm acum o listă de date. Vom determina data de începere pentru luna respectivă, vom determina numărul de zile din luna respectivă și vom folosi List.Dates pentru a crea o listă care să conțină toate zilele din luna respectivă.

Calendar perpetuu de vacanță – POTW #12 (Soluție Power Query)

În continuare, vom folosi List.Select pentru a păstra numai acele date care sunt într-o anumită zi a săptămânii.

Calendar perpetuu de vacanță – POTW #12 (Soluție Power Query)

Când facem clic în lateral lângă oricare dintre aceste liste, putem vedea că conține doar aceste patru elemente.

Calendar perpetuu de vacanță – POTW #12 (Soluție Power Query)

Aplicarea logicii condiționale

În cele din urmă, vom aplica logica condiționată pentru a construi sau a prelua o dată. Dacă ziua săptămânii este nulă , indicând că avem o anumită dată, putem folosi #date intrinsecă pentru a construi o valoare de dată.

Calendar perpetuu de vacanță – POTW #12 (Soluție Power Query)

Dacă numărul este egal cu ultimul, atunci putem folosi funcția List.Reverse pentru a inversa ordinea în listă și a extrage prima valoare.

Calendar perpetuu de vacanță – POTW #12 (Soluție Power Query)

Dacă dorim să schimbăm această ordine crescătoare în descrescătoare, putem oricând să extragem ultima dată din acel interval de date. Nu contează dacă avem patru sau cinci elemente în listă. Prin inversarea ordinii și extragerea primului articol, avem întotdeauna ultima dată.

Calendar perpetuu de vacanță – POTW #12 (Soluție Power Query)

Pentru toate celelalte cazuri, folosim List.Skip .

Calendar perpetuu de vacanță – POTW #12 (Soluție Power Query)

Putem extrage valoarea pe baza acestei poziții pe listă. Pentru Ziua Recunoștinței, cifra este al patrulea, iar al patrulea returnează un 3. Aceasta va omite primele trei valori din listă și va returna întotdeauna al patrulea element.

Calendar perpetuu de vacanță – POTW #12 (Soluție Power Query)

Să punem totul împreună și să mergem la interogarea soluției. Pentru pasul sursă, numim tabelul RAW pentru datele sărbătorilor. În continuare, vom adăuga o coloană care returnează o listă cu date.

Calendar perpetuu de vacanță – POTW #12 (Soluție Power Query)

Revizuirea Codului M pentru Calendarul Perpetuu al Sărbătorilor

Să verificăm codul M pentru coloană. Pentru fiecare rând din tabel, am imbricat un tabel care conține anii diferiți din tabelul de date. Apoi am transformat valorile din coloana respectivă a anului apelând funcția personalizată.

Calendar perpetuu de vacanță – POTW #12 (Soluție Power Query)

Desigur, pentru a putea invoca funcția personalizată, mai întâi trebuie să facem niște setări. Trebuie să obținem numărul lunii , valoarea numerică și, desigur, ziua săptămânii . Apoi, din acel tabel imbricat, am păstrat lista cu datele.

Calendar perpetuu de vacanță – POTW #12 (Soluție Power Query)

Când facem clic în lateral în spațiul alb, putem vedea o previzualizare a listei de mai jos.

Calendar perpetuu de vacanță – POTW #12 (Soluție Power Query)

Următorul pas este să extindeți acea listă și să adăugați CelebratedOnDate .

Calendar perpetuu de vacanță – POTW #12 (Soluție Power Query)

Aceasta este logica pe care am folosit-o în acest calcul: dacă data este într-o sâmbătă, atunci vom scădea o zi, astfel încât să ajungem într-o zi de vineri. Dacă este duminică, atunci vom adăuga o zi pentru a ateriza într-o zi de luni. Dacă nu este sâmbătă sau duminică, atunci vrem un nul.

Calendar perpetuu de vacanță – POTW #12 (Soluție Power Query)

În cele din urmă, ultimul pas este schimbarea tipurilor.

Calendar perpetuu de vacanță – POTW #12 (Soluție Power Query)

Concluzie

Doar o scurtă reamintire că este o serie în curs de desfășurare care are loc în fiecare prima și a treia miercuri pe forumul LuckyTemplates. Problema postată în săptămâna 1 necesită o soluție bazată pe DAX, în timp ce problema în săptămâna a 3-a cere una bazată pe Power Query.

Dacă v-a plăcut conținutul acoperit în acest POTW, vă rugăm să vă abonați la canalul TV LuckyTemplates pentru mai multe. Avem o cantitate imensă de conținut care iese tot timpul de la mine și de la o serie de creatori de conținut, toți dedicați îmbunătățirii modului în care utilizați LuckyTemplates și Power Platform.

Melissa

Leave a Comment

Ce este Sinele în Python: Exemple din lumea reală

Ce este Sinele în Python: Exemple din lumea reală

Ce este Sinele în Python: Exemple din lumea reală

Cum să salvați și să încărcați un fișier RDS în R

Cum să salvați și să încărcați un fișier RDS în R

Veți învăța cum să salvați și să încărcați obiecte dintr-un fișier .rds în R. Acest blog va trata, de asemenea, cum să importați obiecte din R în LuckyTemplates.

Primele N zile lucrătoare revizuite – O soluție de limbaj de codare DAX

Primele N zile lucrătoare revizuite – O soluție de limbaj de codare DAX

În acest tutorial despre limbajul de codare DAX, aflați cum să utilizați funcția GENERATE și cum să schimbați în mod dinamic titlul unei măsuri.

Prezentați perspective utilizând tehnica vizuală dinamică cu mai multe fire în LuckyTemplates

Prezentați perspective utilizând tehnica vizuală dinamică cu mai multe fire în LuckyTemplates

Acest tutorial va acoperi cum să utilizați tehnica Multi Threaded Dynamic Visuals pentru a crea informații din vizualizările dinamice de date din rapoartele dvs.

Introducere la filtrarea contextului în LuckyTemplates

Introducere la filtrarea contextului în LuckyTemplates

În acest articol, voi trece prin contextul filtrului. Contextul de filtrare este unul dintre subiectele majore despre care orice utilizator LuckyTemplates ar trebui să învețe inițial.

Cele mai bune sfaturi pentru utilizarea aplicațiilor din serviciul online LuckyTemplates

Cele mai bune sfaturi pentru utilizarea aplicațiilor din serviciul online LuckyTemplates

Vreau să arăt cum serviciul online LuckyTemplates Apps poate ajuta la gestionarea diferitelor rapoarte și informații generate din diverse surse.

Analizați modificările marjei de profit ore suplimentare – Analytics cu LuckyTemplates și DAX

Analizați modificările marjei de profit ore suplimentare – Analytics cu LuckyTemplates și DAX

Aflați cum să vă calculați modificările marjei de profit folosind tehnici precum măsurarea ramificării și combinarea formulelor DAX în LuckyTemplates.

Idei de materializare pentru cache-urile de date în DAX Studio

Idei de materializare pentru cache-urile de date în DAX Studio

Acest tutorial va discuta despre ideile de materializare a cache-urilor de date și despre modul în care acestea afectează performanța DAX-ului în furnizarea de rezultate.

Raportare de afaceri folosind LuckyTemplates

Raportare de afaceri folosind LuckyTemplates

Dacă încă utilizați Excel până acum, atunci acesta este cel mai bun moment pentru a începe să utilizați LuckyTemplates pentru nevoile dvs. de raportare a afacerii.

Ce este LuckyTemplates Gateway? Tot ce trebuie să știți

Ce este LuckyTemplates Gateway? Tot ce trebuie să știți

Ce este LuckyTemplates Gateway? Tot ce trebuie să știți