{"id":1870,"date":"2026-09-07T15:01:32","date_gmt":"2026-09-07T12:01:32","guid":{"rendered":"https:\/\/valeaariesului.ro\/alpinhub\/?p=1870"},"modified":"2026-09-10T09:40:35","modified_gmt":"2026-09-10T06:40:35","slug":"dq-problemele-datelor","status":"publish","type":"post","link":"https:\/\/valeaariesului.ro\/alpinhub\/dq-problemele-datelor\/","title":{"rendered":"C\u00e2nd \u00eencepi s\u0103 cau\u021bi problemele, te salveaz\u0103 DQ"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">La \u00eenceput, c\u00e2nd lucrezi cu un set de date, este tentant s\u0103 te ui\u021bi mai ales la ceea ce po\u021bi ob\u021bine din el: ce po\u021bi calcula, ce po\u021bi compara, ce grafic po\u021bi construi sau cum po\u021bi pune informa\u021biile \u00eentr-un raport. Cu timpul apare \u00eens\u0103 o \u00eentrebare mai important\u0103: c\u00e2t de mult pot avea \u00eencredere \u00een ceea ce v\u0103d?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00centrebarea a ap\u0103rut firesc pe m\u0103sur\u0103 ce proiectele au \u00eenceput s\u0103 se adune. Unele date veneau din aplica\u021bii \u0219i exporturi, altele din fi\u0219iere Excel sau CSV, iar structurile nu erau \u00eentotdeauna acelea\u0219i. Au ap\u0103rut valori lips\u0103, \u00eenregistr\u0103ri duplicate, denumiri diferite pentru acela\u0219i lucru, informa\u021bii care nu puteau fi asociate \u0219i situa\u021bii \u00een care o valoare p\u0103rea corect\u0103 doar pentru c\u0103 se \u00eencadra \u00eentr-un tabel. A\u0219a am \u00eenceput s\u0103 privesc mai atent ceea ce intr\u0103 \u00een model \u0219i, mai ales, ceea ce iese din el.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Verificarea nu a ap\u0103rut ca o etap\u0103 separat\u0103, stabilit\u0103 de la \u00eenceput. A devenit necesar\u0103 atunci c\u00e2nd rezultatele au \u00eenceput s\u0103 fie folosite pentru compara\u021bii \u0219i interpret\u0103ri. \u00cen AlpinHub, de exemplu, o activitate nu \u00eenseamn\u0103 doar o distan\u021b\u0103 \u0219i un timp. Exist\u0103 o dat\u0103, un tip de activitate, un dispozitiv, o surs\u0103, o localizare, o denumire \u0219i alte informa\u021bii care pot influen\u021ba felul \u00een care acea activitate ajunge s\u0103 fie analizat\u0103. Dac\u0103 una dintre ele este gre\u0219it\u0103 sau lipse\u0219te, problema poate s\u0103 nu fie vizibil\u0103 imediat \u00een datele brute, dar poate ap\u0103rea mai t\u00e2rziu \u00een raport.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">De aici a venit nevoia de a verifica datele nu doar la nivel de valoare individual\u0103, ci \u0219i la nivelul rela\u021biilor dintre ele. O valoare poate fi corect\u0103 \u00een sine \u0219i totu\u0219i s\u0103 produc\u0103 un rezultat gre\u0219it atunci c\u00e2nd este asociat\u0103 cu o alt\u0103 informa\u021bie.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Datele lips\u0103<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">O valoare lips\u0103 este una dintre cele mai simple probleme de observat \u0219i, \u00een acela\u0219i timp, una dintre cele mai u\u0219or de interpretat gre\u0219it. Dac\u0103 lipse\u0219te un dispozitiv, o localizare sau o categorie, exist\u0103 tenta\u021bia de a completa automat informa\u021bia. Uneori acest lucru este posibil \u0219i corect, pentru c\u0103 exist\u0103 o regul\u0103 clar\u0103 sau o alt\u0103 surs\u0103 care permite completarea. Alteori nu avem suficiente informa\u021bii pentru a face asta.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Am \u00eenv\u0103\u021bat s\u0103 fac diferen\u021ba \u00eentre o informa\u021bie care poate fi completat\u0103 printr-o regul\u0103 \u0219i una care pur \u0219i simplu nu exist\u0103 \u00een surs\u0103. \u00cen al doilea caz, este mai corect s\u0103 p\u0103strez lipsa sau s\u0103 o marchez dec\u00e2t s\u0103 inventez o valoare care face tabelul s\u0103 arate mai bine. \u00centr-un model de date, \u201eUnknown\u201d sau \u201eNeatribuit\u201d poate fi o informa\u021bie util\u0103, pentru c\u0103 ne spune c\u0103 exist\u0103 ceva ce \u00eenc\u0103 nu \u0219tim.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Duplicatele<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">Duplicatele sunt mai interesante dec\u00e2t par. Dou\u0103 r\u00e2nduri identice sunt u\u0219or de observat, dar acela\u0219i eveniment poate ap\u0103rea de mai multe ori cu mici diferen\u021be. \u00cen proiectele legate de activit\u0103\u021bi outdoor, problema a dus inclusiv la folosirea unei chei pentru identificarea activit\u0103\u021bii. Nu era suficient s\u0103 m\u0103 uit la nume sau la distan\u021b\u0103. Trebuia s\u0103 existe un mod mai sigur de a identifica \u00eenregistrarea \u0219i de a verifica dac\u0103 ceea ce intr\u0103 \u00een model reprezint\u0103 \u00eentr-adev\u0103r activit\u0103\u021bi distincte.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un duplicat introdus \u00een model nu produce neap\u0103rat o eroare vizibil\u0103. Poate pur \u0219i simplu s\u0103 m\u0103reasc\u0103 un total, s\u0103 schimbe o medie sau s\u0103 fac\u0103 o compara\u021bie s\u0103 par\u0103 diferit\u0103. Tocmai de aceea verificarea trebuie s\u0103 existe \u00eenainte de interpretare, nu doar dup\u0103 ce raportul este construit.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Denumiri, clasific\u0103ri \u0219i informa\u021bii neclare<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">O alt\u0103 categorie de probleme apare atunci c\u00e2nd informa\u021bia exist\u0103, dar nu este exprimat\u0103 \u00eentr-o form\u0103 suficient de clar\u0103 pentru model. Acela\u0219i dispozitiv poate ap\u0103rea sub denumiri diferite, o activitate poate avea o categorie care nu corespunde clasific\u0103rii folosite \u00een raport, iar o localizare poate exista \u00een surs\u0103, dar s\u0103 nu poat\u0103 fi asociat\u0103 cu una dintre categoriile din model.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00cen AlpinHub au ap\u0103rut astfel de situa\u021bii sub forme precum dispozitive necunoscute, loca\u021bii neatribuite sau valori care necesitau o regul\u0103 de mapare. Aici cur\u0103\u021barea datelor nu \u00eenseamn\u0103 doar s\u0103 fac textul s\u0103 arate uniform, ci s\u0103 \u00een\u021beleg ce reprezint\u0103 informa\u021bia \u0219i ce rol va avea mai departe. O modificare care pare corect\u0103 la nivel de text poate schimba sensul datelor dac\u0103 este f\u0103cut\u0103 f\u0103r\u0103 context.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Verificarea dup\u0103 transformare<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">O parte important\u0103 a procesului apare dup\u0103 ce datele au fost transformate. Power Query poate s\u0103 standardizeze coloane, s\u0103 schimbe tipuri de date, s\u0103 combine informa\u021bii sau s\u0103 elimine probleme evidente, dar faptul c\u0103 transformarea s-a executat f\u0103r\u0103 eroare nu \u00eenseamn\u0103 c\u0103 rezultatul este automat corect.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Trebuie verificat ce s-a \u00eent\u00e2mplat cu datele dup\u0103 transformare. Num\u0103rul de \u00eenregistr\u0103ri mai este acela\u0219i atunci c\u00e2nd ar trebui s\u0103 fie? Valorile importante s-au p\u0103strat? O regul\u0103 de filtrare nu a eliminat accidental ceva relevant? O asociere nu a creat duplicate? O coloan\u0103 calculat\u0103 are sens \u00een contextul modelului? Am ajuns astfel s\u0103 verific nu doar dac\u0103 Power Query poate face o transformare, ci \u0219i dac\u0103 transformarea respectiv\u0103 este potrivit\u0103 pentru ceea ce vreau s\u0103 analizez.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Acela\u0219i lucru este valabil \u0219i pentru calculele f\u0103cute ulterior. O formul\u0103 DAX poate fi perfect valid\u0103 din punct de vedere tehnic \u0219i totu\u0219i s\u0103 r\u0103spund\u0103 la o \u00eentrebare formulat\u0103 gre\u0219it. Din acest motiv, verificarea nu se termin\u0103 atunci c\u00e2nd modelul nu mai afi\u0219eaz\u0103 erori.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Cum se vede calitatea datelor \u00een raport<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">La un moment dat apare o \u00eentrebare fireasc\u0103: dac\u0103 \u0219tim c\u0103 exist\u0103 probleme \u00een date, unde le vedem? Nu toate problemele trebuie eliminate \u00eenainte ca datele s\u0103 ajung\u0103 \u00een raport. Unele trebuie chiar s\u0103 fie vizibile acolo, pentru ca rezultatul s\u0103 poat\u0103 fi interpretat \u00een contextul potrivit.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00cen AlpinHub, partea de Data Quality a ajuns s\u0103 includ\u0103 informa\u021bii despre \u00eenregistr\u0103ri neatribuite, dispozitive necunoscute, valori care trebuiau verificate \u0219i alte situa\u021bii care puteau influen\u021ba analiza. Cardurile, tabelele de control, filtrele \u0219i indicatorii pot face aceste lucruri vizibile f\u0103r\u0103 s\u0103 \u00eencarce inutil raportul. \u00cen felul acesta, raportul nu mai este doar locul \u00een care sunt prezentate rezultatele, ci \u0219i un loc \u00een care putem vedea c\u00e2t de s\u0103n\u0103toase sunt datele care au produs acele rezultate.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un raport bun nu ar trebui s\u0103 ascund\u0103 problemele doar pentru c\u0103 acestea fac rezultatul mai pu\u021bin frumos. Uneori un card care arat\u0103 c\u00e2te \u00eenregistr\u0103ri sunt incomplete este mai util dec\u00e2t \u00eenc\u0103 un grafic. Este o diferen\u021b\u0103 important\u0103 \u00eentre a corecta o problem\u0103 \u0219i a o ascunde, iar felul \u00een care alegem s\u0103 reflect\u0103m problema \u00een raport poate fi la fel de important ca modul \u00een care am tratat-o \u00een model.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Sursa versus ceea ce ob\u021binem<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">Pe m\u0103sur\u0103 ce transform\u0103rile se adun\u0103, devine important s\u0103 pot reveni la surs\u0103 \u0219i s\u0103 \u00een\u021beleg de unde a venit o informa\u021bie. De aceea am \u00eenceput s\u0103 separ tot mai clar datele de origine de ceea ce construiesc ulterior \u00een model. Sursa trebuie s\u0103 r\u0103m\u00e2n\u0103 suficient de aproape de forma ini\u021bial\u0103 pentru a putea verifica informa\u021bia, \u00een timp ce modelul poate fi organizat pentru analiz\u0103.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aceast\u0103 separare ajut\u0103 \u0219i atunci c\u00e2nd ceva nu mai pare corect. Pot urm\u0103ri informa\u021bia \u00eenapoi \u0219i pot vedea dac\u0103 problema a ap\u0103rut \u00een surs\u0103, \u00een transformare, \u00een mapare sau \u00een model. Cu c\u00e2t proiectul cre\u0219te, cu at\u00e2t aceast\u0103 posibilitate devine mai important\u0103.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">C\u00e2t\u0103 \u00eencredere putem avea \u00een rezultat?<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">Probabil c\u0103 aceasta este \u00eentrebarea care le leag\u0103 pe toate. Nu am nevoie \u00eentotdeauna de date perfecte. Am nevoie s\u0103 \u0219tiu ce date am, ce probleme exist\u0103, ce am modificat \u0219i ce impact pot avea aceste lucruri asupra rezultatului.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un model poate func\u021biona foarte bine chiar dac\u0103 are c\u00e2teva valori lips\u0103, at\u00e2ta timp c\u00e2t acestea sunt cunoscute \u0219i tratate corespunz\u0103tor. \u00cen schimb, un model care pare perfect, dar ascunde duplicate sau clasific\u0103ri gre\u0219ite, poate produce rezultate \u00een care nu ar trebui s\u0103 am \u00eencredere.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">DQ nu \u00eenseamn\u0103, a\u0219adar, s\u0103 facem toate datele perfecte. \u00censeamn\u0103 s\u0103 le \u00een\u021belegem suficient de bine \u00eenc\u00e2t s\u0103 \u0219tim ce putem face cu ele \u0219i c\u00e2t de mult ne putem baza pe ceea ce ob\u021binem.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Ce a r\u0103mas important<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">Din toate proiectele prin care am trecut, verificarea datelor a devenit una dintre acele activit\u0103\u021bi care apar aproape peste tot, indiferent dac\u0103 vorbim despre activit\u0103\u021bi outdoor, observa\u021bii iNaturalist, date despre un teritoriu sau informa\u021bii administrative. Se schimb\u0103 sursa, se schimb\u0103 structura \u0219i se schimb\u0103 \u00eentreb\u0103rile, dar problemele se repet\u0103: ceva lipse\u0219te, ceva apare de dou\u0103 ori, ceva nu este clasificat, ceva nu se leag\u0103 sau ceva trebuie verificat.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cu timpul, nu mai este nevoie s\u0103 descoperi fiecare problem\u0103 de la zero. \u00cencepi s\u0103 recuno\u0219ti tiparul. Iar asta mi se pare una dintre cele mai utile p\u0103r\u021bi ale experien\u021bei acumulate cu datele: nu faptul c\u0103 pot construi un raport care arat\u0103 bine, ci faptul c\u0103 pot s\u0103 m\u0103 uit la date \u0219i s\u0103-mi pun mai devreme \u00eentrebarea dac\u0103 ceea ce urmeaz\u0103 s\u0103 construiesc are o baz\u0103 suficient de bun\u0103.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pentru c\u0103, p\u00e2n\u0103 la urm\u0103, \u00eencrederea \u00eentr-un raport \u00eencepe cu \u00eencrederea \u00een datele din spatele lui.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>La \u00eenceput, c\u00e2nd lucrezi cu un set de date, este tentant s\u0103 te ui\u021bi mai ales la ceea ce po\u021bi ob\u021bine din el: ce po\u021bi calcula, ce po\u021bi compara, ce grafic po\u021bi construi sau cum po\u021bi pune informa\u021biile \u00eentr-un raport. Cu timpul apare \u00eens\u0103 o \u00eentrebare mai important\u0103: c\u00e2t de mult pot avea \u00eencredere \u00een [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1872,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[21],"tags":[53,38],"class_list":["post-1870","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-atelier","tag-excel","tag-powerbi"],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":8}},"_links":{"self":[{"href":"https:\/\/valeaariesului.ro\/alpinhub\/wp-json\/wp\/v2\/posts\/1870","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=1870"}],"version-history":[{"count":2,"href":"https:\/\/valeaariesului.ro\/alpinhub\/wp-json\/wp\/v2\/posts\/1870\/revisions"}],"predecessor-version":[{"id":1874,"href":"https:\/\/valeaariesului.ro\/alpinhub\/wp-json\/wp\/v2\/posts\/1870\/revisions\/1874"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/valeaariesului.ro\/alpinhub\/wp-json\/wp\/v2\/media\/1872"}],"wp:attachment":[{"href":"https:\/\/valeaariesului.ro\/alpinhub\/wp-json\/wp\/v2\/media?parent=1870"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/valeaariesului.ro\/alpinhub\/wp-json\/wp\/v2\/categories?post=1870"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/valeaariesului.ro\/alpinhub\/wp-json\/wp\/v2\/tags?post=1870"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}