Time Intelligence în DAX: Cum se selectează dinamic perioada de început

În această postare pe blog, ne vom ocupa de unele probleme supărătoare în domeniul inteligenței timpului, în special acele probleme cauzate de granularitatea săptămânii și problemele care pot fi cauzate de numărul neregulat de săptămâni dintr-un an. Vom folosi compensații pentru a obține informații exacte ale timpului în DAX.

Avem un scenariu interesant pentru tine astăzi. Acest lucru a apărut recent de câteva ori pe forumul LuckyTemplates. Ceea ce doreau oamenii să facă a fost să ia o imagine (care ar putea fi un grafic cu linii sau o diagramă cu bare) și să o modifice dinamic la data de începere. Puteți viziona videoclipul complet al acestui tutorial în partea de jos a acestui blog.

Time Intelligence în DAX: Cum se selectează dinamic perioada de început

În acest caz, am folosit același set de date pe care l-am lucrat pentru prețul mediu spot pe baril de petrol . În loc să începem întotdeauna la începutul lunii ianuarie, am vrut să putem face clic pe vizual, să îl schimbăm la o altă dată de începere, dar să arătăm întotdeauna un an de date.

Cuprins

Exemple de scenarii de inteligență temporală în DAX

Există o serie de motive pentru care ați putea dori să faceți această tehnică. Puteți folosi acest lucru dacă aveți o valoare care este în mod constant reajustată în ceea ce privește modul în care este calculată. Poate doriți să afișați numai datele din perioada reajustării înainte.

Un alt motiv pentru a folosi acest lucru este dacă doriți să vizualizați acest lucru într-un mod animat. Acest lucru vă va prelua datele și le va afișa dinamic odată ce faceți clic pe accesul la redare.

Time Intelligence în DAX: Cum se selectează dinamic perioada de început

În acest vizual, putem schimba data de începere lună de lună pentru a arăta cum se schimbă într-o perioadă de 12 luni de-a lungul timpului. Acesta este un vizual interesant și util pentru diferite cazuri de afaceri, dar, teoretic, reprezintă și o serie de probleme cheie legate de DAX și modelarea datelor.

Să mergem la LuckyTemplates și să ne uităm mai întâi la modelul nostru de date. Acesta este un model de date foarte simplu, cu un tabel de date extins și un tabel de prețuri spot conectat la date.

Time Intelligence în DAX: Cum se selectează dinamic perioada de început

Utilizarea decalajelor pentru inteligența timpului în DAX

Unul dintre lucrurile la care vom lucra este compensarea . Compensațiile din tabelul de date extinse sunt calculate dinamic. De fiecare dată când raportul este fie reîmprospătat, fie deschis, acesta trece prin codul M. De exemplu, într-o compensare lunară, atribuie lunii curente cu 0, luna anterioară cu -1 și două luni înapoi cu -2. Privind cu nerăbdare în viitor, atribuie următoarei luni +1, iar pentru două luni în viitor +2.

Acesta este un concept simplu, dar incredibil de puternic atunci când aveți de-a face cu informații despre timp în DAX și lucrați cu luni , trimestre și săptămâni . Dacă nu utilizați o compensare, aceasta creează uneori o cantitate destul de complexă în calculele dvs.

Utilizarea compensațiilor înseamnă folosirea unei serii continue de numere în care revenirea la o lună este întotdeauna -1 și a merge înainte cu o lună este întotdeauna +1, indiferent de locul în care vă aflați în anul.

Implementarea strategiei Rubber Duck pentru Time Intelligence în DAX

În trecut, am vorbit despre rubber ducking , care înseamnă verbalizarea strategiei tale cu voce tare înainte de a începe să scrii DAX.

Time Intelligence în DAX: Cum se selectează dinamic perioada de început

Mă gândesc cu voce tare la modul în care voi gestiona asta dintr-un context lunar folosind informații despre timp în DAX. Aș începe ceva pe baza anului și a lunii selectate și le-aș selecta pe cele folosind un tabel deconectat, pentru că, dacă te gândești bine, orice altă selecție va implica trecerea anilor (cu excepția lunii ianuarie).

Să presupunem că vrem 12 luni începând din martie, vom ajunge cu cel puțin două luni în anul următor. Dacă folosim un slicer conectat, putem filtra doar pentru anul respectiv și nu vom putea filtra în anul următor.

Recoltarea compensațiilor de la data de începere

Să facem asta cu un tabel conectat atât pentru lună, cât și pentru an. În primul rând, trebuie să recoltăm primul offset care se referă la data de începere.

Și apoi vrem să avansăm acea compensare cu 12 luni și apoi să ne uităm doar la datele care se află în acel set de compensații. Permiteți-mi să vă arăt cum arată în DAX.

Calcularea intervalului lunar

Aceasta este măsura noastră pentru Within Range Monthly , unde ne selectăm anul (pe care l-am recoltat din tabelul cu ani deconectați) și luna noastră (pe care am recoltat-o ​​din tabelul cu lunile deconectate).

Avem și acest alt parametru în care, dacă nu există nicio selecție, va fi implicit în ianuarie. Acest parametru este în primul rând doar pentru scopuri de depanare.

Time Intelligence în DAX: Cum se selectează dinamic perioada de început

Calcularea compensațiilor lunii de început și de sfârșit

Să ne uităm la compensarea lunii de început calculând compensarea MAX. Îndepărtăm toate filtrele din tabelul de date și filtrăm până la luna și anul selectați. Pentru fiecare lună, ar trebui să existe o singură compensare care să corespundă lunii și anului respectiv.

Time Intelligence în DAX: Cum se selectează dinamic perioada de început

Din acel moment, putem lua compensarea lunii de sfârșit , care este doar compensarea lunii de început + 11 luni.

Time Intelligence în DAX: Cum se selectează dinamic perioada de început

Și apoi ne uităm la fiecare dată selectată și determinăm dacă se încadrează în compensarea lunii inițiale și compensarea lunii de final. daca se incadreaza in acea perioada ii dam 1 iar daca nu ii dam 0.

Time Intelligence în DAX: Cum se selectează dinamic perioada de început

Dacă ne întoarcem la vizualizarea lunară din vizualul nostru, putem vedea vizualul Within Range pe care l-am setat ca fiind egal cu unu. Deci, arată doar acele luni de la începutul până la sfârșit. De exemplu, dacă facem clic pe februarie, vedem februarie până în ianuarie.

Time Intelligence în DAX: Cum se selectează dinamic perioada de început

Calcularea intervalului săptămânal

Să vedem cum arată asta din punct de vedere săptămânal. Vizualul începe inițial bine și trece de la săptămâna 1 la săptămâna 52. Până acum, e bine.

Time Intelligence în DAX: Cum se selectează dinamic perioada de început

Dar dacă facem clic pe ceilalți ani din slicer-ul de ani, putem vedea a 52-a săptămână, în timp ce unii au o a 53-a săptămână, ceea ce prezintă o mulțime de probleme. Puteți vedea din acest exemplu că problema începe să se manifeste.

Avem o perioadă de început din anul 2020 și săptămâna 15 , dar perioada de sfârșit este anul 2021 și săptămâna 13 în loc de anul 2021 și săptămâna 14 .

Time Intelligence în DAX: Cum se selectează dinamic perioada de început

Dacă ne întoarcem la săptămâna 1, putem vedea că începe bine, dar se termină în săptămâna 52. Dacă ne uităm la calculul săptămânii 53 aici, numărul maxim al săptămânii pentru 2020 și 2021 este de 53 de săptămâni. Acest lucru nu va funcționa pentru granularitatea săptămânală.

Time Intelligence în DAX: Cum se selectează dinamic perioada de început

Să vedem ce putem face pentru ca acest lucru să funcționeze. Trebuie să reparăm calculul DAX chiar aici, în această parte:

Time Intelligence în DAX: Cum se selectează dinamic perioada de început

Acest lucru se datorează faptului că, în unele cazuri, 51 este corect atunci când există doar 52 de săptămâni într-un an, dar pentru anul în care există 53 de săptămâni, va opri ultima perioadă. Este exact ceea ce am văzut în vizualul dinamic timp de săptămâni, în care calculul a eliminat acea perioadă finală în anii 2020 și 2021.

Pentru a remedia acest lucru , mergem la măsura Incorect săptămânal , care de fapt pare mai simplă decât măsura anterioară. Am avut o măsură de pornire a offsetului și am calculat offset-ul maxim. Apoi am dezactivat filtrul de date, apoi am impus filtrul pe săptămâna selectată și pe anul selectat, presupunând că acest lucru ar duce la compensarea corectă.

Time Intelligence în DAX: Cum se selectează dinamic perioada de început

Dar acest lucru nu funcționează, deoarece nu ar conta dacă utilizați un offset maxim sau un offset minim. Tot ceea ce facem este să împachetăm un agregator, astfel încât să nu punem o coloană goală într-o instrucțiune CALCULATE.

Dar dacă ne întoarcem aici la ISO WeekNumber , putem vedea că un număr de an și o săptămână nu determină în mod unic o compensare săptămânală în prima perioadă.

Time Intelligence în DAX: Cum se selectează dinamic perioada de început

Am venit cu un mod antiglonț de a face asta. Ați putea folosi MIN, dar este mai logic să creați această măsură de compensare Week1 . Pentru a obține compensarea săptămânii 1, avem de-a face cu săptămâna 2, deoarece nu se împarte niciodată. Indiferent dacă există 52 sau 53 de săptămâni în an, săptămâna 2 rămâne intactă.

Time Intelligence în DAX: Cum se selectează dinamic perioada de început

În acest calcul, filtrăm până la săptămâna 2 pentru a obține compensarea. Și apoi, odată ce obținem acea compensație pentru săptămâna 2, scădem doar unul din el. Acest lucru ne va oferi fără ambiguitate compensarea săptămânii 1. Acest lucru ajunge să ne rezolve problema.

Calculul săptămânal al intervalului

Și apoi ne întoarcem la măsura noastră săptămânală din interiorul intervalului și scriem o declarație IF în care, dacă numărul recoltei este pentru săptămâna 1, calculăm offset-ul unei săptămâni. Dacă nu este săptămâna 1, calculăm doar compensarea săptămânii de început așa cum am făcut în calculul lunar anterior.

Time Intelligence în DAX: Cum se selectează dinamic perioada de început

Și apoi compensarea săptămânii de sfârșit va fi compensarea săptămânii de început + numărul maxim al săptămânii care ar putea fi fie 52, fie 53. Apoi scădem doar 1 pentru a nu număra de două ori offset-ul de început.

Time Intelligence în DAX: Cum se selectează dinamic perioada de început

Putem face aceeași construcție pe care am folosit-o pentru intervalul lunar pentru a filtra săptămânile, în care orice se află între începutul și sfârșitul decalajului primește un 1 și orice lucru care nu primește un 0.

Apoi vom plasa măsura săptămânală din interiorul intervalului în panoul de filtrare. Totul se verifică și arată exact corect.

Time Intelligence în DAX: Cum se selectează dinamic perioada de început

Putem face clic pe axa de redare și putem rula granularitatea săptămânii. Putem vedea că funcționează corect, așa cum a făcut în contextul lunii.

Concluzie

Aceasta este o scufundare destul de profundă în inteligența temporală în DAX, unde am discutat despre cum putem aborda unele dintre problemele legate de numerele săptămânii. Sper că ați găsit acest tutorial util și v-a oferit câteva instrumente suplimentare în cutia dvs. de instrumente atunci când aveți de-a face cu o situație problematică de săptămână.

Dacă v-a plăcut conținutul prezentat în acest tutorial special, vă rugăm să nu uitați să vă abonați la canalul TV LuckyTemplates. 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.

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