Cum să definești Variabilele de Context în Talend? 

Ce este un Context? 

Contextele sunt utilizate pentru a configura un Job pentru mediile standard din cadrul ciclului de viață al dezvoltării software-ului, cum ar fi Dezvoltare, Testare și Producție.  

Un Job rulează întotdeauna într-un context specific. Când un context este selectat în vizualizarea Run, parametrii corespunzători sunt aplicați pe baza mediului în care rulează Job-ul. 

 

Ce este o Variabilă de Context? 

O variabilă de context este o variabilă definită de utilizator, specifică unui context. Câteva avantaje ale utilizării variabilelor de context includ: 

  • Reducerea efortului necesar pentru a actualiza valorile parametrilor în toate resursele. 
  • Îmbunătățirea consistenței. 
  • Permite reutilizarea în diferite Job-uri. 
  • Adaptarea automată a valorilor pe baza contextului în care rulează Job-ul. 
  • Simplificarea configurării prin posibilitatea de a schimba valorile contextului după necesitățile diferitelor medii. 

 

Cum să definești Variabilele de Context? 

Există două metode principale pentru a defini variabilele de context în Talend: 

→ În vizualizarea Contexts (Built-In) 

Când Job-ul este deschis în Designer, vizualizarea Contexts afișează toate variabilele definite în Job-ul curent, inclusiv variabilele de context importate. Această vizualizare permite crearea și gestionarea contextelor și variabilelor specifice unui Job. Variabilele de context definite aici sunt denumite „Built-In” și sunt disponibile doar în Job-ul în care au fost create. 

→ În Repository (Grupuri de Context) 

Variabilele de context pot fi, de asemenea, definite în Repository, în secțiunea Contexts, ca grupuri de context. Această metodă permite reutilizarea lor în orice Job din cadrul proiectului. 

 

Cum să accesezi o variabilă de context? 

Pentru a accesa o variabilă de context, folosiți formatul context.NumeVariabila. 

 

Cum funcționează împreună Contextele și Variabilele de Context? 

Contextul de execuție trebuie specificat în vizualizarea Run, unde sunt afișate contextul, variabilele și valorile. Când contextul se schimbă, valorile sunt actualizate automat, dar acestea nu pot fi modificate direct în această vizualizare. 

Scenariu de business 

Imaginați-vă că sunteți membru al echipei de Data Engineering în compania dumneavoastră, lucrând la un proiect pentru un client din retail, cu supermarketuri în fiecare oraș important din România. În fiecare zi, aceste supermarketuri generează date de vânzări de produse, pe care le stochează în fișiere Excel. 

Sarcina dumneavoastră este să construiți un proces ETL care să transfere zilnic aceste date din Excel în baza de date a clientului, permițând echipei de Analytics să creeze dashboard-uri și să obțină informații valoroase din date pentru a sprijini deciziile bazate pe date. Pe lângă transferul de date, va trebui să înregistrați informații esențiale, cum ar fi durata execuției, starea procesului, numărul de rânduri procesate și alte detalii relevante într-un tabel de logare dedicat. 

Pentru a realiza această sarcină, veți folosi variabile de context pentru a configura componentele necesare și pentru a gestiona cerințele de logare. 

 

Abordarea în Talend 

Pentru scopul acestui SkillPill, vom presupune un singur context, DEV. Vom crea grupuri de context pentru conexiunea la baza de date și logare și vom defini o variabilă de context Built-In pentru numele fișierului din care extragem date. 

 

Pasul 1: Creează jobul

→ Deschide Talend folosind opțiunea “Run as administrator” pentru a te asigura că ai privilegiile necesare. 

→ În Repository, apasă clic dreapta pe Job Designs și selectează Create job. 

→ În fereastra New job, introdu un nume adecvat pentru Job. Opțional, poți adăuga un scop și o descriere. 

→ Apasă click pe Finish. 

Pasul 2: Creează Contextul, Grupurile de Context și variabila de context Built-In necesare pentru această sarcină 

→ Baza de date utilizată în acest exemplu este MySQL, cu un nume de utilizator și o parolă definite în timpul instalării, utilizând o conexiune localhost. 

→ În Repository, apsă clic dreapta pe Contexts și selectează Create context group. 

→ În fereastra Create/Edit a context group (Pasul 1 din 2), introdu numele DBConnection. Opțional, poți adăuga un scop și o descriere, dacă este necesar. 

→ În fereastra Create/Edit a context group (Pasul 2 din 2), apasă clic pe pictograma “+” din partea dreaptă. Apoi, apare fereastra Configure Contexts, cu un context implicit afișat. Selectează-l și apasă  clic pe Edit. În fereastra Rename Context, tastează DEV și apasă clic pe OK. Apoi, apasă din nou clic pe OK pentru a confirma. 

→ Apoi, apasă clic pe pictograma “+” din partea de jos a ferestrei Create/Edit a context group (Pasul 2 din 2) pentru a adăuga rândurile necesare pentru credențialele bazei de date ca variabile de context. Asigură-te că specifici tipul de date corespunzător pentru fiecare variabilă. Adaugă următoarele credențiale: 

  • Rând 1 – Nume: Host, Tip: String, Valoare: localhost. 
  • Rând 2 – Nume: Port, Tip: Integer, Valoare: 3306. 
  • Rând 3 – Nume: Database, Tip: String, Valoare: training. 
  • Rând 4 – Nume: Username, Tip: String, Valoare: <nume_utilizator>. 
  • Rând 5-  Nume: Password, Tip: String, Valoare: <parola_aleasă>. 

→ Grup de Context pentru Logare 

Un tabel numit job_log a fost deja creat în schema training din baza de date MySQL. Acest tabel conține următoarele coloane: id, job_name, purpose, schema_name, job_start_dt, job_end_dt, job_duration, job_status, row_count_exported. Coloana id este definită ca secvență, așa că nu o vom seta explicit ca variabilă de context, deoarece valoarea sa se auto-incrementează. 

În Repository, apasă clic dreapta pe Contexts și selectează Create context group. 

În fereastra Create/Edit a context group (Pasul 1 din 2), introdu numele Logging. Opțional, poți adăuga un scop și o descriere, dacă este necesar. 

În fereastra Create/Edit a context group (Pasul 2 din 2), apasă clic pe pictograma “+” din partea dreaptă. Apare fereastra Configure Contexts, cu un context implicit afișat. Selectează-l și apasă clic pe Edit. În fereastra Rename Context, tastează DEV și apasă clic pe OK. Apoi, apasă din nou clic pe OK pentru a confirma. 

Apoi, apasă clic pe pictograma “+” din partea de jos a ferestrei Create/Edit a context group (Pasul 2 din 2) pentru a adăuga variabile de context pentru scopuri de logare. Asigură-te că specifici tipul de date corespunzător pentru fiecare variabilă. În câmpul Value, vom adăuga valori implicite pentru a evita avertismentele privind afișarea șirurilor la rulare. Aceste valori implicite vor fi suprascrise de valorile reale definite în timpul execuției. Adaugă următoarele variabile de context, corespunzând coloanelor din tabelul de logare MySQL: 

  • Rând 1 – Nume: job_start_dt, Tip: String, Valoare: 1900-01-01. 
  • Rând 2 – Nume: job_end_dt, Tip: String, Valoare: 1900-01-01. 
  • Rând 3 – Nume: job_name, Tip: String, Valoare: dummy. 
  • Rând 4 – Nume: purpose, Tip: String, Valoare: dummy. 
  • Rând 5 – Nume: schema_name, Tip: String, Valoare: dummy. 
  • Rând 6 – Nume: job_duration, Tip: Long, Valoare: 0. 
  • Rând 7 – Nume: job_status, Tip: String, Valoare: dummy. 
  • Rând 8 – Nume: row_count_exported, Tip: Integer, Valoare: 0. 
  • Rând 9 – Nume: id, Tip: Integer, Valoare: 0. 

→ Variabilă de Context Built-In pentru Numele Fișierului 

Deschide Job-ul și accesați Contexts View. 

În Contexts View, apasă clic pe pictograma “+” din partea dreaptă. Apoi, apare fereastra Configure Contexts, afișând un context implicit. Selectează-l și apasă clic pe Edit. În fereastra Rename Context, tastează DEV și apasă clic pe OK. Apoi, apasă din nou clic pe OK pentru a confirma. 

Apoi, apasă clic pe pictograma “+” din partea de jos a Contexts View pentru a adăuga o variabilă de context pentru numele fișierului. Asigură-te că selectați tipul de date corespunzător. Adaugă următoarea variabilă de context: 

→ Row 1 – Name: filePath, Tip: String, Valoare: C:/Program Files/RPM/Retail_Shop_Data.xlsx 

→ Adăugarea Grupurilor de Context în Job 

Există trei opțiuni pentru a adăuga grupurile de context în Job: 

Trage grupurile de context pe Workspace Designer. 

Trage grupurile de context în Contexts View. 

Cu Job-ul deschis, accesează Contexts View și apasă clic pe butonul din dreapta săgeții în jos din partea de jos. Apare meniul Select Context Variables. Selectează grupurile de context pe care dorești să le adaugi , apoi apasă clic pe OK. 

Pasul 3: Configurarea componentelor în fluxul Job-ului 

→ Adaugă o componentă tPreJob 

Componenta tPreJob este utilă pentru configurarea setărilor sau executarea unor sarcini preliminare de care Job-ul principal poate depinde.

→ Adaugă o componentă tJava 

Conectează această componentă la componenta tPreJob folosind un trigger de tip OnComponentOk. 

Această componentă este utilizată pentru a inițializa unele dintre variabilele de context. Când inițializezi o variabilă de context într-o componentă tJava, folosește următoarea sintaxă: context.NumeVariabila=<valoarea_de_asignat>;. Asigură-te că adaugi un punct și virgulă la sfârșitul fiecărei linii de cod. Inițializează următoarele variabile: 

  • context.job_start_dt=TalendDate.formatDate(„yyyy-MM-dd HH:mm:ss”, TalendDate.getCurrentDate()); 
  • Acest format de marcaj temporal este acceptat de MySQL și vă permite să stochezi ora de început a Job-ului în tabelul de logare. De obicei, este setat la începutul fluxului. 
  • context.job_name=”<Numele_Job-ului_Dvs>”;
    Numele ar trebui să corespundă cu cel pe care l-ai atribuit Job-ului și trebuie să fie între ghilimele duble. Acesta poate fi setat fie la începutul, fie la sfârșitul fluxului. 
  • context.purpose=„<Scopul_Job-ului>”;
    Introdu scopul Job-ului, între ghilimele duble. Acesta poate fi setat fie la începutul, fie la sfârșitul fluxului. 
  • context.schema_name=”<Numele_Schemei>”;
    Introdu numele schemei, între ghilimele duble. Acesta poate fi setat, de asemenea, fie la începutul, fie la sfârșitul fluxului. 

→ Adaugă o componentă tDBConnection 

Conectează această componentă la componenta tJava folosind un trigger de tip OnComponentOk. Componenta tDBConnection este utilizată pentru a stabili o conexiune la baza de date MySQL. Urmați acești pași de configurare: 

Apasă clic pe componentă. 

Din meniul Database de tip „drop-down, selectează MySQL și verifică dacă versiunea bazei de date este corectă. 

Configurează variabilele de context pentru conexiunea la baza de date: 

  • Host: context.Host. 
  • Port: context.Port. 
  • Database: context.Database. 
  • Username: context.Username. 
  • Password: Apasă clic pe cele trei puncte din dreapta câmpului Password, elimină orice ghilimele, introdu context.Password, apoi apasă click pe Ok. 

Accesează secțiunea Advanced Settings și activează opțiunea Auto Commit. Aceasta va asigura că datele sunt automat salvate în baza de date atunci când Job-ul este finalizat.  

→ Adaugă o componentă tFileInputExcel 

Această componentă marchează începutul fluxului principal în Job. Este utilizată pentru a citi datele zilnice pentru un anumit supermarket. 

În secțiunea Basic Settings, lângă File name/Stream, adaugă variabila de context Built-In, context.filePath. Poți face acest lucru fie introducând-o manual, fie folosind funcția de completare automată. În câmpul Sheet list, faceți clic pe semnul „+” și introdu numele foii din care citești date, în ghilimele duble. Dacă fișierul Excel conține anteturi de coloane, asigură-te că introduci 1 în secțiunea Header. 

Apasă clic pe cele trei puncte din dreapta câmpului Edit schema și adaugă numele coloanelor împreună cu tipurile lor de date corespunzătoare. În funcție de formatul fișierului Excel, poate fi necesar să activezi opțiunea Read excel2007 file format (xlsx). 

→ Adăugați o componentă tDBOutput 

Conectează această componentă la tFileInputExcel folosind un trigger de tip Main row. Componenta tDBOutput este utilizată pentru a transfera datele din fișierul Excel în tabelul din baza de date numit „Shop 1”. Acest tabel a fost creat anterior în schema „training”. Asigură-te că folosești conexiunea la baza de date definită la început, activând opțiunea Use an existing connection. Action on table trebuie să rămână la setarea implicită, iar Action on data să fie setată pe Insert. De asemenea, asigură-te că schema este sincronizată cu input-ul. În câmpul Table, introdu numele tabelului între ghilimele duble. 

→ Logică de Logare 

Dacă transferul de date este reușit: 

Adaugă o componentă tJava 

Conectează această componentă la tFileInputExcel folosind un trigger de tip OnSubJobOk. Acest lucru instruiește Talend să urmeze această ramură dacă transferul de date este finalizat cu succes. 

Definește următoarele variabile de context: 

  • context.job_end_dt=TalendDate.formatDate(„yyyy-MM-ddHH:mm:ss”,TalendDate.getCurrentDate());
    Acest format de marcaj temporal este acceptat de MySQL și permite stocarea timpului de finalizare a Job-ului în tabelul de logare. De obicei, este setat la sfârșitul fluxului. 
  • context.job_duration= 
  • TalendDate.diffDate(TalendDate.parseDate(„yyyy-MM-dd HH:mm:ss”,context.job_end_dt),TalendDate.parseDate(„yyyy-MM-dd HH:mm:ss”, context.job_start_dt), „ss”); 
  • Această expresie Talend calculează diferența de timp, în secunde, între două marcaje temporale: context.job_end_dt și context.job_start_dt. Mai întâi, convertește aceste șiruri de marcaje temporale în obiecte de tip dată folosind formatul specificat „yyyy-MM-dd HH:mm:ss”, apoi calculează diferența dintre ele folosind diffDate, cu „ss” indicând rezultatul în secunde. Aceasta este utilă pentru a urmări durata de execuție a Job-ului, ajutând la monitorizarea și optimizarea performanței. 
  • context.row_count_exported= 
  • ((Integer)globalMap.get(„tDBOutput_2_NB_LINE”));
    Variabila de sistem a componentei de output este utilizată pentru a prelua numărul total de înregistrări care au fost transferate. 
  • context.job_status=„Success”;
    Deoarece suntem pe ramura de succes, atribuim manual statusul ‘Success’ chiar înainte de a-l insera în tabelul de logare. 

→ Adaugă o componentă tDBRow 

Conecteză această componentă la componenta tJava folosind un trigger de tip OnComponentOk. Asigură-te că activezi opțiunea Use an existing connection și selectezi conexiunea definită la începutul fluxului. În secțiunea Query, introdu instrucțiunea INSERT. 

Instrucțiunea INSERT este: 

insert into job_log (job_name, purpose, schema_name, job_start_dt, job_end_dt, job_duration, job_status, row_count_exported)  

values( 

‘”+context.job_name +”‘, 

‘”+context.purpose +”‘, 

‘”+context.schema_name +”‘, 

‘”+context.job_start_dt +”‘, 

‘”+context.job_end_dt +”‘, 

‘”+context.job_duration +”‘, 

‘”+context.job_status +”‘, 

‘”+context.row_count_exported +”‘ 

); 

Adaugă o componentă tDBClose 

Conectează această componentă la componenta tDBRow folosind un trigger de tip OnComponentOk. În acest fel, te asiguri  că ai conexiunea închisă la sfârșitul fluxului și că datele sunt confirmate (committed) în baza de date. 

→  Dacă transferul de date nu este reușit: 

Adăugați o componentă tJava 

Conectează această componentă la tFileInputExcel folosind un trigger de tip OnSubJobError. Acest lucru instruiește Talend să urmeze această ramură dacă apare o eroare în timpul transferului de date. 

Definește aceleași variabile de context ca cele descrise mai sus, cu excepția context.job_status, care este definită astfel: 

context.job_status = ‘Failure’; 

Adăugați o componentă tDBRow 

Conectează această componentă la componenta tJava folosind un trigger de tip OnComponentOk. Aceleași configurări se aplică și aici, la fel ca în componenta tDBRow din cazul de succes. 

Adaugă o componentă tDBClose 

Conectează această componentă la tDBRow folosind un trigger de tip OnComponentOk. În acest fel, te asiguri că aiconexiunea închisă la sfârșitul fluxului și că datele sunt confirmate (committed) în baza de date. 

Pasul 3: Rulează jobul

Asigură-te că setările menționate în pașii 1-3 sunt aplicate. 

Rulează Jobul. 

Verifică șă nu existe erori la rulare și că Jobul se finalizează cu un Exit code de 0. 

Opțional, verifică tabelele shop1 și job_log în schema training pentru a confirma că datele au fost inserate corect. 

Aici este rezultatul în Talend:

Urmărește tutorialul video aici:


Despre  btProvider:

Echipa noastră de Data Analysts este calificată să explice și să ghideze echipele interne ale companilor în călătoria lor spre o cultură mult mai centrată în jurul datelor.

Deținem certificările tehnice necesare pentru produse:TalendTableau Desktop, Tableau Public, Tableau Server, Tableau Prep, and Tableau Data Management, VerticaSalesforceMulesoftWrite-Back.

Cu Talend – cea mai bună platformă de gestionare a datelor – poți înțelege întotdeauna mai bine datele tale. Utilizând Talend, vei lua decizii inteligente și strategice și vei integra, asigura calitatea și guverna datele tale fără efort. Vezi și alte tutoriale video #skillpill aici:

Cum să creezi un Barcode Chart

Creează un Set top N

Utilizarea numelor de măsură în acțiunile parametrice

 

Ești interesat să afli mai multe despre Talend – acceleratorul pentru soluții eficiente și cuprinzătoare de gestionare a datelor în întreaga companie.

Contactează-ne!