{"id":1907,"date":"2026-09-09T13:24:18","date_gmt":"2026-09-09T10:24:18","guid":{"rendered":"https:\/\/valeaariesului.ro\/alpinhub\/?p=1907"},"modified":"2026-09-10T09:40:44","modified_gmt":"2026-09-10T06:40:44","slug":"dm_valeaariesului","status":"publish","type":"post","link":"https:\/\/valeaariesului.ro\/alpinhub\/dm_valeaariesului\/","title":{"rendered":"DM_ValeaAriesului \u0219i drumul p\u00e2n\u0103 la model"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">La \u00eenceput a fost un Excel. Nu era nevoie de ceva complicat. Informa\u021biile despre Valea Arie\u0219ului puteau fi adunate \u0219i administrate \u00eentr-o structur\u0103 relativ simpl\u0103, iar principiul de baz\u0103 a fost stabilit de la \u00eenceput: Excelul r\u0103m\u00e2ne sursa de adev\u0103r, iar Power BI este locul \u00een care datele pot fi modelate, legate, verificate \u0219i analizate.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Doar c\u0103, atunci c\u00e2nd \u00eencepi s\u0103 construie\u0219ti modelul, apare o diferen\u021b\u0103 important\u0103 \u00eentre a avea informa\u021bii \u0219i a le putea reprezenta corect. \u00cen Excel po\u021bi pune \u00eentr-un tabel aproape orice informa\u021bie. \u00centr-un model de date, \u00eens\u0103, \u00eencepi s\u0103 te \u00eentrebi ce reprezint\u0103 fiecare lucru, cu ce se leag\u0103, unde ar trebui s\u0103 existe \u0219i ce se \u00eent\u00e2mpl\u0103 atunci c\u00e2nd aceea\u0219i informa\u021bie apare \u00een mai multe locuri.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A\u0219a a \u00eenceput s\u0103 creasc\u0103 proiectul de Destination Management pentru Valea Arie\u0219ului.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">De la c\u00e2teva tabele la primele rela\u021bii<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">Primele structuri au fost destul de intuitive: loca\u021bii, atrac\u021bii, trasee, puncte de interes, infrastructur\u0103. Pe m\u0103sur\u0103 ce am \u00eencercat s\u0103 le folosesc \u00eempreun\u0103 \u00een Power BI, au ap\u0103rut \u00eens\u0103 probleme care nu erau evidente \u00een sursa ini\u021bial\u0103.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A trebuit s\u0103 apar\u0103 chei, nomenclatoare, clasific\u0103ri \u0219i reguli mai clare despre ce informa\u021bii sunt obligatorii \u0219i care pot lipsi. Unele lucruri care p\u0103reau simple \u00een Excel nu mai erau la fel de simple atunci c\u00e2nd trebuiau legate de alte tabele. A fost una dintre primele lec\u021bii ale proiectului: o structur\u0103 care arat\u0103 bine \u00eentr-un tabel nu este neap\u0103rat \u0219i o structur\u0103 bun\u0103 pentru un model de date.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">C\u00e2nd geografia a devenit infrastructur\u0103<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">La \u00eenceput, loca\u021bia putea fi privit\u0103 pur \u0219i simplu ca o informa\u021bie asociat\u0103 unei \u00eenregistr\u0103ri. Pe m\u0103sur\u0103 ce proiectul a crescut, a devenit evident c\u0103 geografia trebuie s\u0103 aib\u0103 propriul loc \u00een model. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>Locatii_Geografie<\/code> a \u00eenceput s\u0103 adune lucruri precum <code>KeyLoc<\/code>, localitatea, jude\u021bul, microregiunea, coordonatele, unitatea de relief, aria protejat\u0103 \u0219i alte informa\u021bii geografice. \u00cen paralel, <code>Dim_Microregiune<\/code> a devenit o dimensiune distinct\u0103, care putea fi folosit\u0103 pentru filtrarea \u0219i analiza teritoriului. Schimbarea este mai important\u0103 dec\u00e2t pare. Loca\u021bia nu mai este doar un atribut al unei atrac\u021bii sau al unui traseu, ci o parte din infrastructura prin care informa\u021biile despre destina\u021bie pot fi puse \u00een rela\u021bie. \u00cen momentul \u00een care pot s\u0103 plec de la o microregiune \u0219i s\u0103 ajung la loca\u021biile, atrac\u021biile sau traseele asociate ei, geografia \u00eencepe s\u0103 lucreze \u00een model, nu doar s\u0103 fie afi\u0219at\u0103 \u00eentr-un tabel.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Traseele, atrac\u021biile \u0219i POI-urile<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">Traseele au venit cu propriile particularit\u0103\u021bi. Au propriile chei, caracteristici \u0219i coordonate de start \u0219i final, \u00een timp ce atrac\u021biile se leag\u0103 de geografia destina\u021biei prin <code>KeyLoc<\/code>. Pentru punctele de interes a fost nevoie de o structur\u0103 separat\u0103, iar asocierea dintre trasee \u0219i POI-uri a fost f\u0103cut\u0103 prin <code>Trasee_POI<\/code>. Nu toate informa\u021biile trebuiau copiate dintr-un tabel \u00een altul doar pentru c\u0103 aveam nevoie de ele \u00eentr-o analiz\u0103. Aici s-a conturat un principiu care a devenit important \u0219i \u00een alte proiecte: dac\u0103 o rela\u021bie poate furniza informa\u021bia de care am nevoie, nu are rost s\u0103 o duplic. Cu c\u00e2t modelul \u00eencepea s\u0103 creasc\u0103, cu at\u00e2t devenea mai important s\u0103 \u0219tiu nu doar unde se afl\u0103 o informa\u021bie, ci \u0219i de ce se afl\u0103 acolo.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">C\u00e2nd activitatea nu a mai fost doar activitate<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">Una dintre schimb\u0103rile interesante a ap\u0103rut \u00een jurul tabelului <code>Activitati<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La \u00eenceput, termenul putea sugera foarte u\u0219or un calendar. Dar lucrul efectiv cu modelul a ar\u0103tat c\u0103 sunt dou\u0103 lucruri diferite. <code>Activitati<\/code> descrie ceea ce poate face turistul \u00een destina\u021bie. Este un catalog de activit\u0103\u021bi \u0219i experien\u021be. <code>Calendar_ActivitatiTuristice<\/code> descrie ceea ce este programat efectiv: data, furnizorul, pre\u021bul, num\u0103rul de locuri \u0219i celelalte informa\u021bii opera\u021bionale. Diferen\u021ba aceasta nu a ap\u0103rut pentru c\u0103 modelul trebuia s\u0103 aib\u0103 \u00eenc\u0103 un tabel. A ap\u0103rut pentru c\u0103 trebuia s\u0103 clarific\u0103m ce \u00eenseamn\u0103, de fapt, o activitate \u00een contextul destina\u021biei. Catalogul descrie poten\u021bialul. Calendarul descrie activarea lui. \u0218i, dintr-o dat\u0103, modelul \u00eencepea s\u0103 spun\u0103 ceva mai clar despre realitatea pe care \u00eencercam s\u0103 o reprezint.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">C\u00e2nd a trebuit s\u0103 definim mai bine activit\u0103\u021bile<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">Odat\u0103 cu catalogul au ap\u0103rut \u0219i alte \u00eentreb\u0103ri. Nu era suficient s\u0103 avem un nume de activitate. Era nevoie s\u0103 putem diferen\u021bia experien\u021ba concret\u0103 de tipul \u0219i categoria \u00een care aceasta se \u00eencadreaz\u0103. Astfel, <code>NumeActivitate<\/code> descrie experien\u021ba concret\u0103, <code>TipActivitate<\/code> descrie forma specific\u0103, iar <code>CategorieActivitate<\/code> reprezint\u0103 familia mai larg\u0103. A ap\u0103rut \u0219i o regul\u0103 simpl\u0103, dar important\u0103: un <code>TipActivitate<\/code> apar\u021bine unei singure <code>CategorieActivitate<\/code>. Conceptul Junior Ranger a fost un exemplu bun pentru aceast\u0103 delimitare. Este un tip de activitate \u00een zona activit\u0103\u021bilor pentru copii, dar activit\u0103\u021bile pentru copii nu se reduc la Junior Ranger. Modelul a trebuit s\u0103 permit\u0103 aceast\u0103 diferen\u021b\u0103 f\u0103r\u0103 s\u0103 for\u021beze realitatea \u00eentr-o categorie prea \u00eengust\u0103.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Modelul nu a fost doar construit. A fost testat.<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">La un moment dat, modelul putea s\u0103 par\u0103 corect. Tabelele erau acolo, rela\u021biile erau definite, iar raportul \u00eencepea s\u0103 arate rezultatele a\u0219teptate.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dar asta nu era suficient. Am \u00eenceput s\u0103 verific rela\u021biile direct \u00een Power BI, s\u0103 urm\u0103resc filtrele, valorile, cardurile \u0219i vizualiz\u0103rile \u0219i s\u0103 v\u0103d dac\u0103 rezultatele ob\u021binute din datele reale corespund cu ceea ce ar trebui s\u0103 reprezinte modelul. Unele lucruri au func\u021bionat din prima. Altele au ar\u0103tat c\u0103 structura trebuia schimbat\u0103. Au existat \u0219i situa\u021bii \u00een care o solu\u021bie aparent logic\u0103 s-a dovedit nepotrivit\u0103 atunci c\u00e2nd a fost testat\u0103 efectiv. Un exemplu bun este rela\u021bia \u00eencercat\u0103 \u00eentre <code>Dim_Calendar[AnLuna]<\/code> \u0219i <code>Date_Statistice[Perioada]<\/code>. La prima vedere p\u0103rea o asociere fireasc\u0103, dar <code>AnLuna<\/code> nu este o valoare unic\u0103 la nivelul zilelor din calendar. Rela\u021bia a trebuit eliminat\u0103. Nu era o problem\u0103 de sintax\u0103 \u0219i nici o eroare pe care Power BI s\u0103 o poat\u0103 rezolva \u00een locul nostru. Era o problem\u0103 de structur\u0103, pe care testarea a f\u0103cut-o vizibil\u0103. Aici am \u00eenceput s\u0103 privesc testarea altfel: nu ca pe ultima etap\u0103 a proiectului, ci ca pe o parte a proiect\u0103rii lui.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">DQ \u00eencepe s\u0103 fac\u0103 parte din model<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">Pe m\u0103sur\u0103 ce modelul a devenit mai serios, a devenit evident c\u0103 nu putem trata calitatea datelor doar ca pe o problem\u0103 a fi\u0219ierului Excel.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Au ap\u0103rut chei lips\u0103 sau duplicate, nume lips\u0103, coordonate lips\u0103, capacit\u0103\u021bi care nu erau completate, rela\u021bii care trebuiau validate, website-uri invalide \u0219i intervale de date care nu respectau regulile stabilite. \u00cen loc s\u0103 \u00eencerc s\u0103 ascund toate aceste situa\u021bii \u00eenainte ca datele s\u0103 ajung\u0103 \u00een raport, am \u00eenceput s\u0103 le tratez ca pe informa\u021bii care trebuie s\u0103 poat\u0103 fi v\u0103zute \u0219i controlate. A\u0219a a devenit DQ o parte a modelului. Cardurile, indicatorii, tabelele \u0219i vizualiz\u0103rile de control nu sunt acolo doar ca s\u0103 arate c\u0103 exist\u0103 probleme. Ele ajut\u0103 la identificarea lor \u0219i, mai ales, la urm\u0103rirea lor pe m\u0103sur\u0103 ce datele sunt corectate.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pentru mine, acesta a fost un pas important. Un model de date nu trebuie s\u0103 arate doar ceea ce este bine. Uneori trebuie s\u0103 arate \u0219i ceea ce \u00eenc\u0103 nu este bine.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">\u0218i Excelul a trebuit s\u0103 se maturizeze<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">Pe m\u0103sur\u0103 ce modelul a devenit mai clar, am \u00eenceput s\u0103 v\u0103d \u0219i lucruri care \u021bineau de sursa Excel.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Unele foi erau Excel Tables, altele erau simple foi citite direct de Power Query. Pentru un proiect care trebuie s\u0103 poat\u0103 fi administrat \u0219i extins \u00een timp, diferen\u021ba aceasta nu mai era justificat\u0103. Structurile opera\u021bionale au fost uniformizate \u0219i transformate \u00een tabele Excel explicite, iar Power Query a fost f\u0103cut s\u0103 lucreze consecvent cu acestea. Este un lucru aparent minor, dar spune ceva important despre rela\u021bia dintre surs\u0103 \u0219i model: faptul c\u0103 Excelul este Single Source of Truth nu \u00eenseamn\u0103 c\u0103 sursa trebuie s\u0103 r\u0103m\u00e2n\u0103 neschimbat\u0103 indiferent de ce descoperim \u00een model. Pe m\u0103sur\u0103 ce \u00een\u021belegem mai bine ce vrem s\u0103 facem cu datele, putem \u00eembun\u0103t\u0103\u021bi \u0219i felul \u00een care sursa este organizat\u0103, f\u0103r\u0103 s\u0103 schimb\u0103m principiul de baz\u0103.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">De fapt, ce s-a construit?<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">La \u00eenceput era o colec\u021bie de informa\u021bii despre Valea Arie\u0219ului.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Acum exist\u0103 un model \u00een care \u00eencepe s\u0103 fie posibil\u0103 o reprezentare coerent\u0103 a teritoriului, loca\u021biilor, atrac\u021biilor, traseelor, punctelor de interes, infrastructurii, activit\u0103\u021bilor, experien\u021belor, calendarului, datelor statistice \u0219i calit\u0103\u021bii datelor. Nu \u00eenseamn\u0103 c\u0103 modelul este terminat sau c\u0103 este modelul perfect pentru orice situa\u021bie. \u00censeamn\u0103 doar c\u0103 a ajuns suficient de coerent \u00eenc\u00e2t s\u0103 poat\u0103 cre\u0219te odat\u0103 cu proiectul.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0218i aici cred c\u0103 este una dintre diferen\u021bele importante dintre \u00eenceput \u0219i etapa actual\u0103. La \u00eenceput aveam date despre destina\u021bie. Acum avem un model care \u00eencepe s\u0103 reprezinte destina\u021bia. Complexitatea nu a venit din datele ini\u021biale. A venit din nevoia de a le reprezenta corect.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Ce am \u00eenv\u0103\u021bat din proiect<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">Poate cea mai important\u0103 lec\u021bie nu este despre Power BI. Este despre felul \u00een care un model de date te oblig\u0103 s\u0103 clarifici lucruri pe care, \u00een afara modelului, le po\u021bi l\u0103sa neclare.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ce este o activitate? Ce este o experien\u021b\u0103? Ce este o loca\u021bie? Ce apar\u021bine unei microregiuni? Ce trebuie s\u0103 fie \u00een catalog \u0219i ce trebuie s\u0103 fie \u00een calendar? Ce informa\u021bie poate fi ob\u021binut\u0103 printr-o rela\u021bie \u0219i ce informa\u021bie trebuie p\u0103strat\u0103 explicit? Uneori r\u0103spunsurile existau deja. Alteori au devenit clare abia dup\u0103 ce am \u00eencercat s\u0103 le pun \u00een model. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Asta este partea care mi se pare cea mai interesant\u0103 \u00een proiectul acesta. Power BI nu a fost doar instrumentul \u00een care am construit raportarea. A fost \u0219i mediul \u00een care am putut testa dac\u0103 felul \u00een care \u00een\u021belegeam datele despre Valea Arie\u0219ului putea fi transformat \u00eentr-o structur\u0103 coerent\u0103.Modelul nu a rezultat dintr-un plan perfect. A crescut prin \u00eentreb\u0103ri, teste, corec\u021bii \u0219i c\u00e2teva solu\u021bii care au trebuit reconsiderate.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Iar proiectul continu\u0103. Vor ap\u0103rea date noi, vor ap\u0103rea alte \u00eentreb\u0103ri \u0219i probabil vor mai exista lucruri care vor trebui schimbate. Diferen\u021ba este c\u0103 acum exist\u0103 o structur\u0103 de la care pot porni \u0219i o experien\u021b\u0103 care \u00eemi permite s\u0103 v\u0103d mai repede unde apare problema \u0219i ce trebuie clarificat. Poate c\u0103 acesta este, p\u00e2n\u0103 la urm\u0103, cel mai interesant lucru pe care \u00eel las\u0103 un astfel de proiect \u00een urm\u0103: nu doar un raport Power BI, ci un mod mai clar de a privi informa\u021biile despre o destina\u021bie \u0219i de a le transforma, pas cu pas, \u00eentr-un model care poate cre\u0219te odat\u0103 cu ea.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>La \u00eenceput a fost un Excel. Nu era nevoie de ceva complicat. Informa\u021biile despre Valea Arie\u0219ului puteau fi adunate \u0219i administrate \u00eentr-o structur\u0103 relativ simpl\u0103, iar principiul de baz\u0103 a fost stabilit de la \u00eenceput: Excelul r\u0103m\u00e2ne sursa de adev\u0103r, iar Power BI este locul \u00een care datele pot fi modelate, legate, verificate \u0219i analizate. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1909,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[21],"tags":[53,38,47],"class_list":["post-1907","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-atelier","tag-excel","tag-powerbi","tag-valea-ariesului"],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":8}},"_links":{"self":[{"href":"https:\/\/valeaariesului.ro\/alpinhub\/wp-json\/wp\/v2\/posts\/1907","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/valeaariesului.ro\/alpinhub\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/valeaariesului.ro\/alpinhub\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/valeaariesului.ro\/alpinhub\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/valeaariesului.ro\/alpinhub\/wp-json\/wp\/v2\/comments?post=1907"}],"version-history":[{"count":2,"href":"https:\/\/valeaariesului.ro\/alpinhub\/wp-json\/wp\/v2\/posts\/1907\/revisions"}],"predecessor-version":[{"id":1911,"href":"https:\/\/valeaariesului.ro\/alpinhub\/wp-json\/wp\/v2\/posts\/1907\/revisions\/1911"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/valeaariesului.ro\/alpinhub\/wp-json\/wp\/v2\/media\/1909"}],"wp:attachment":[{"href":"https:\/\/valeaariesului.ro\/alpinhub\/wp-json\/wp\/v2\/media?parent=1907"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/valeaariesului.ro\/alpinhub\/wp-json\/wp\/v2\/categories?post=1907"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/valeaariesului.ro\/alpinhub\/wp-json\/wp\/v2\/tags?post=1907"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}