Transformați haosul în profit: înțelegerea procesului ETL

Publicat: 2022-03-11

Una dintre cele mai critice greșeli care împiedică companiile să ofere utilizatorilor de afaceri informații vitale de luare a deciziilor este absența datelor fiabile din una sau mai multe surse de date, adunate într-o singură locație, organizate și pregătite pentru a fi utilizate.

Imaginați-vă acest scenariu: sunteți managerul IT al unei companii de carcase pentru telefoane mobile cu locații de vânzare cu amănuntul în toată Statele Unite. Consiliul de administrație se luptă să ia decizii bazate pe vânzări, deoarece informațiile sunt disponibile, dar sunt în locații și formate diferite. Unul dintre directori vă cere să generați un tablou de bord cu informații despre vânzări de la toate punctele de vânzare pentru a le prezenta la următoarea ședință a consiliului de administrație.

Știți deja că este aproape imposibil să consolidați informațiile din cauza diferitelor formate și structuri. Unele dintre chioșcurile de vânzare cu amănuntul folosesc încă un sistem proprietar într-o bază de date Oracle. Magazinele mai mari folosesc un nou sistem Salesforce. Cele mai noi chioșcuri care au început să funcționeze în timpul tranziției sistemului au foi de calcul partajate utilizate pentru a calcula vânzările.

Cum veți aduna toate datele din diferite locații, formate și structuri într-o bază de date unică gata să fie accesată pentru generarea tabloului de bord?

Fundamentele ETL

ETL înseamnă Extract, Transform, and Load . ETL este un grup de procese concepute pentru a transforma acest depozit complex de date într-un proces organizat, de încredere și replicabil pentru a vă ajuta compania să genereze mai multe vânzări cu datele pe care le aveți deja.

În cazul nostru, vom primi date dintr-o bază de date Oracle (majoritatea chioșcurilor), de la Salesforce (magazine) și din foi de calcul (chioșcuri mai noi), vom extrage datele, vom transforma atunci când este necesar și vom încărca într-o singură bază de date depozit de date pentru a fi accesat de instrumente de raportare și folosit pentru a genera tablouri de bord și tabele de punctaj.

Să ne aprofundăm în cei trei pași ai ETL pentru a detalia procesul.

Extracţie

Extragerea este procesul de primire a datelor din surse unice sau multiple. Sursele pot avea diferite formate și structuri, cum ar fi documente, foi de calcul, fișiere CSV, fișiere plate, baze de date relaționale precum Oracle, MySQL, SQL Server, baze de date non-relaționale și așa mai departe.

Există două tipuri principale de extracție: totală și parțială .

  • Extragerea completă este utilizată pentru extrageri inițiale sau atunci când cantitatea de date și, în consecință, timpul de extracție sunt acceptabile.
  • Extragerea parțială este recomandată atunci când nu este nevoie să extrageți din nou toate datele sau cantitatea de date este suficient de mare pentru a face imposibilă extragerea completă. Într-o extragere parțială, vor fi extrase numai datele actualizate sau noi.

Pe lângă aceste aspecte, sunt necesare și alte considerente atunci când alegeți între extragerea totală sau parțială și vreau să descriu unul dintre ele: disponibilitatea și integritatea datelor .

Înseamnă că numai tranzacțiile finalizate vor fi luate în considerare pentru extracție, eliminând datele care ar putea cauza o eroare de integritate. De exemplu, un test online pentru a identifica cunoștințele unui inginer cu 10 întrebări. Dacă un inginer se află în mijlocul testului și a răspuns la câteva întrebări, dar nu a terminat încă, procesul de extracție nu poate citi întrebările din testele neterminate. Ar putea cauza o eroare de integritate.

Transformare

După extragerea datelor, putem începe procesul de transformare: curățați, manipulați și transformați datele conform regulilor de afaceri și criteriilor tehnice pentru a menține un nivel acceptabil de calitate a datelor.

În funcție de o serie de factori, poate fi necesară utilizarea unei zone de amenajare. O zonă de stocare este un spațiu de stocare intermediar folosit pentru a stoca temporar datele extrase din sursele de date pentru a fi transformate.

În unele proiecte, în mod normal cele cu o cantitate mică de date, nu este nevoie să folosiți zonele de ședință, dar majoritatea proiectelor o folosesc.

Există o serie de sarcini efectuate în timpul fazei de transformare:

  • Selecție: criterii de selectare a datelor extrase. Selecția se poate face în faza de extracție, în faza de transformare sau în ambele faze.
  • Integrare: combinația de date din faza de extracție până în zona de ședință. Această combinație înseamnă adăugarea, ștergerea și actualizarea datelor în zona de pregătire pe baza datelor extrase.
  • Joinuri: folosit pentru alăturarea datelor extrase, similar cu îmbinările SQL (inner join, left join, right join, full join etc.)
  • Curățare sau curățare: elimină datele inconsecvente sau nevalide sau datele cu erori pentru a îmbunătăți calitatea datelor. Lucrul cu mai multe surse de date crește șansele de a avea probleme de date care necesită curățare, cum ar fi:
    • Integritate referenţială (client cu categorie inexistentă)
    • Valori lipsă (client fără ID)
    • Unicitate (mai mult de o persoană cu același SSN)
    • Greșeli de ortografie (Sun Diego, Cannada, L.Angeles)
    • Valori contradictorii (Alex dob 04.27.1974, Alex dob 04.14.2000)
    • și multe altele
  • Rezumate: rezumați seturi de date pentru utilizare ulterioară
  • Agregări: date compilate și rezumate în grupuri
  • Consolidări: date din mai multe surse sau structuri consolidate într-un singur set de date

Iată câteva tipuri comune de transformare:

  • Ștergeți datele duplicat
  • Împărțirea și contopirea
  • Conversii (data, ora, masti de numere, masuratori)
  • Codificare (de la bărbat la M)
  • Calcule (articol_valoare = unit_Price * cantitate)
  • Generarea cheilor

Se încarcă

Nu în ultimul rând, procesul final în ETL este încărcarea datelor în destinație. Încărcarea este actul de inserare a datelor transformate (dintr-o zonă de staging sau nu) în depozit, în mod normal o bază de date de depozit de date.

Există trei tipuri principale de date de încărcare: completă sau inițială, incrementală și reîmprospătare.

  • Complet sau inițial înseamnă o încărcătură completă de date extrase și transformate. Toate datele din zona de pregătire vor fi încărcate în destinația finală pentru a fi pregătite pentru utilizatorii business.
  • Încărcarea incrementală este procesul de comparare a datelor transformate cu datele din destinația finală și de încărcare numai a datelor noi. Încărcarea incrementală poate fi utilizată împreună cu încărcarea de reîmprospătare, explicată mai jos.
  • Încărcarea de reîmprospătare este procesul de actualizare a datelor în destinația finală pentru a reflecta modificările făcute în sursa originală. O reîmprospătare poate fi completă sau incrementală.

Pe scurt, fiecare companie, indiferent de dimensiunea sa, poate folosi procesele ETL pentru a integra informații care există deja și pentru a genera o bogăție și mai mare de informații pentru luarea deciziilor, transformând datele care anterior nu puteau fi utilizate într-o nouă sursă de venit.

Testare

Testarea este una dintre cele mai importante faze ale ETL și, totuși, una dintre cele mai trecute cu vederea.

Transformarea datelor din diferite surse și structuri și încărcarea lor într-un depozit de date este foarte complexă și poate genera erori. Cele mai frecvente erori au fost descrise în faza de transformare de mai sus.

Acuratețea datelor este cheia succesului, în timp ce inexactitatea este o rețetă pentru dezastru. Prin urmare, profesioniștii ETL au misiunea de a garanta integritatea datelor pe parcursul întregului proces. După fiecare fază, trebuie efectuat un test. Indiferent dacă se extrag date dintr-o singură sursă sau din mai multe surse, datele trebuie verificate pentru a stabili că nu există erori.

Același lucru trebuie făcut după orice transformare. De exemplu, la rezumarea datelor în timpul fazei de transformare, datele trebuie verificate pentru a garanta că nu s-au pierdut date și că sumele sunt corecte.

După încărcarea datelor transformate în depozitul de date, procesul de testare trebuie aplicat din nou. Datele încărcate trebuie comparate cu datele transformate și apoi cu datele extrase.

În exemplul companiei noastre de huse pentru telefoane mobile, lucrăm cu trei surse diferite (bază de date proprie Oracle, Salesforce și foi de calcul) și formate diferite. Faza de testare poate folosi date mostre din sursele originale și le poate compara cu datele care se află în zona de pregătire pentru a garanta că extragerea a avut loc fără erori.

Eșantionul de date – care în acest caz poate fi informații despre vânzări din trei locații diferite (magazine, chioșcuri vechi, chioșcuri noi) – trebuie comparate cu sursa inițială. Diferențele, dacă există, trebuie analizate pentru a vedea dacă sunt acceptabile sau dacă sunt erori.

Dacă se găsesc erori, acestea trebuie remediate și trebuie luate câteva decizii dacă trebuie să le remediați: Ar trebui să fie modificate datele originale? Este posibil să faci asta? Dacă erorile nu pot fi remediate în sursa originală, pot fi remediate printr-o transformare?

În unele cazuri, datele cu erori trebuie eliminate și declanșată o alertă pentru informarea celor responsabili.

Câteva exemple de testare:

  • Datele necesită validare
  • Calitatea datelor
  • Performanţă
  • Reguli de date
  • Modelarea datelor

Logare

Înregistrarea proceselor ETL este garanția cheie că aveți sisteme care pot fi întreținute și ușor de reparat.

Un ETL cu procesul de logare corect este important pentru a menține întreaga operațiune ETL într-o stare de îmbunătățire constantă, ajutând echipa să gestioneze bug-urile și problemele cu sursele de date, formatele de date, transformările, destinațiile etc.

Un proces de jurnal robust ajută echipele să economisească timp, permițându-le să identifice problemele mai rapid și mai ușor, iar inginerii principali au nevoie de mai puțin timp pentru a identifica problema în mod direct. Uneori, erorile apar în mijlocul extragerii de tone de date și, fără un jurnal, identificarea problemei este dificilă - uneori aproape imposibilă. Fără jurnale, întregul proces trebuie reluat. Folosind jurnalele, echipa poate identifica rapid fișierul și rândul care a cauzat problema și poate remedia numai acele date.

Singurul caz pe care mi-l pot imagina în care jurnalele nu sunt atât de importante este cu sisteme neautomatizate foarte mici, în care procesul rulează manual și există o cantitate mică de date care pot fi monitorizate manual.

Jurnalele îmbunătățesc automatizarea. Procesele ETL cu o cantitate mare de date care rulează automat au nevoie de sisteme de jurnal. Dacă sunt bine planificate și executate, tot efortul depus în construirea unui sistem de jurnal va aduce dividende sub forma unei identificări mai rapide a erorilor, a unor date mai fiabile și a punctelor de îmbunătățire găsite în fișierele jurnal.

Există trei pași principali în crearea unui sistem de jurnal: generarea, arhivarea și analizarea .

  • Generarea este procesul de documentare a ceea ce se întâmplă în timpul execuției conductelor ETL: când a început procesul, ce fișier sau tabel este extras, datele care sunt salvate în zona de transfer, mesajele de eroare și multe altele. Toate informațiile importante care pot ajuta inginerii trebuie să fie înregistrate. Alertă : Acordați atenție să nu generați atât de multe informații care doar vor consuma timp și spațiu și nu vor fi de ajutor.
  • Arhivarea datelor din jurnal înseamnă păstrarea unei evidențe a execuțiilor anterioare pentru a căuta scenarii trecute, pentru a identifica erorile sau a compara cu scenariul actual în căutarea îmbunătățirilor. Este important să se verifice relevanța unui anumit punct din istorie de salvat - date de cu mult timp în urmă, unde structura s-a schimbat de multe ori, nu merită păstrate.
  • Analizează . Analiza jurnalelor este de o importanță crucială. Stocarea a tone de date care nu sunt analizate nu are sens. Costă doar timp și bani pentru a genera și stoca datele. Analiza jurnalelor este importantă nu doar pentru a ajuta la căutarea erorilor, ci și pentru a identifica punctele de îmbunătățire și pentru a crește calitatea generală a datelor.

Performanţă

Procesele ETL pot funcționa cu tone de date și pot costa foarte mult, atât în ​​ceea ce privește timpul petrecut pentru a le configura, cât și resursele de calcul necesare procesării datelor. Atunci când planifică o integrare, inginerii trebuie să țină cont de necesitatea ca toate datele să fie folosite. Cel mai bun lucru de făcut este să lucrați cu cantitatea minimă de date pentru a atinge obiectivele, mai degrabă decât să cheltuiți timp și bani doar migrând date inutile. De asemenea, rețineți că cantitățile de date tind să crească în timp, așa că încercați să luați în considerare nevoile dvs. viitoare.

Cât de mult efort ar trebui depus în proiectarea unui sistem de înregistrare?

Depinde de o serie de factori diferiți, cum ar fi cantitatea și frecvența datelor care trebuie procesate. Sistemele mici cu puține date pot fi gestionate manual, fără a fi nevoie să investiți în sisteme avansate de logare.

Companiile cu o cantitate mare de date, multe procese diferite, surse și formate diferite de date și conducte complexe trebuie să investească în crearea de sisteme de înregistrare. După cum am menționat deja, un sistem de jurnal bun poate economisi mult timp și bani.

Pentru o abordare mai evidentă, indiferent de dimensiunea companiei, cantitatea de date și frecvența integrării, un proces ETL trebuie să fie profitabil . O investiție în timp, bani și resurse tehnice trebuie să genereze profituri - așa cum a spus economistul Milton Friedman: „Nu există prânz gratuit”.

În rezumat, un proces ETL poate ajuta companiile să crească profitul cu datele pe care le au deja, dar care nu sunt utilizate în mod corect. Conductele ETL pot integra diferite sisteme, acele foi de calcul cu informații importante și alte porțiuni de date care sunt răspândite în diferite departamente și sucursale, permițând organizațiilor să profite la maximum de datele lor.