• Non ci sono risultati.

5 Integrazione applicativi

5.3 Integrazione Oracle SQL – Java – Python

Come già anticipato precedentemente, nel caso della reportistica non viene definita una vera e propria integrazione. Questo perché nella giornata di redazione dei report, l’utente avvia la procedura di caricamento (REPORT_IN), al termine della quale avvia quella di scrittura (REPORT_OUT). Quest’ultima effettua una chiamata Java, passando come argomenti il nome dell’associato, l’anno e l’azione.

Il Java poi effettua una connessione a Oracle e tramite una query SELECT recupera tutte le informazioni della tabella caricata nello step precedente, per poi procedere a trascriverle sul file .xls finale.

Una volta terminato il processo di produzione dei report, Oracle SQL Developer non viene più utilizzato. A questo punto si passa all’applicativo PyCharm per eseguire lo script di controllo dei report e successivamente, a controlli terminati, si inviano i report al referente Alfa.

76

Considerazioni finali

Il progetto formativo ha fornito la possibilità di applicare in contesti reali le tematiche affrontate durante il percorso di studi.

In particolare il lavoro svolto è direttamente collegato al data warehousing, alla business intelligence e ai data analytics. Inoltre mi ha consentito di utilizzare tecnologie e applicativi avanzati, come Oracle DB, oltre che la programmazione in PL/SQL, che fornisce una ottima integrazione tra SQL e il Java language.

Il progetto Alfa mi ha permesso di partecipare attivamente all’implementazione di un simile sistema di Data Warehousing “automatizzato”.

Le soluzioni proposte circa lo sviluppo delle procedure, funzioni e tutto ciò che è stato presentato nel corso del documento, che sono alla base del processo di application maintenance, ha portato alla luce un sistema DW/BI che permette ad un qualsiasi utente, che non abbia necessariamente competenze tecniche, di poter gestire, per l’appunto, la fase ormai unica di Application Maintenance del progetto Alfa.

Come è stato possibile supporre durante la lettura di questo documento, il lavoro svolto ha ampiamente raggiunto gli obiettivi prefissati, sia nell’ambito di risposta al cliente, riuscendo a garantire la consegna di tutti i report richiesti e lo svolgimento di tutte le attività necessarie al raggiungimento di tale scopo, sia come processo di ottimizzazione interno a Value Lab, fornendo delle nuove procedure che rispondono in tempi considerevolmente minori rispetto a quelle sviluppate in un primo momento.

Analizzando singolarmente tutte le attività svolte ai fini del progetto Alfa, possiamo affermare che l’implementazione del processo ETL, grazie alle varie integrazioni tra diversi applicativi, funziona in maniera eccellente, fornendo anche un ottimo resoconto (log) sia in caso di successo che in caso di fallimento, permettendo di riuscire velocemente a risalire all’eventuale errore in modo da correggerlo. Per cui l’obiettivo è pienamente raggiunto.

Per quanto riguarda le proposte di ottimizzazione del processo possiamo affermare che:

Per quanto riguarda la procedura di generazione della reportistica, come spiegato nel corso del documento, è sempre riuscita a raggiungere il suo obiettivo, ovvero la creazione dei report, permettendo quindi la consegna dei report nei termini previsti, anche se, in un primo momento, sono state costruite sulla base delle viste, che caricano tutti i dati presenti nel DWH. Successivamente alla richiesta di ottimizzazione e dopo aver implementato la soluzione proposta, siamo riusciti a fare in modo che si carichino solo gli scontrini necessari ai fini della reportistica, velocizzando in maniera considerevole l’intera procedura. Ricordiamo che con la nuova soluzione si è riusciti a ridurre il tempo totale di un ordine di grandezza, passando da una decina di migliaia di secondi ad una migliaia. Quindi anche in questo caso è stato pienamente raggiunto l’obiettivo prefissato.

Per quanto riguarda l’attività di gestione dei solleciti, inizialmente svolto con un’alta presenza del fattore umano, essa poteva portare ad errori nel sollecitamento dei punti vendita con dati mancanti. Dopo l’attuazione della soluzione proposta, il fattore umano è stato decisamente ridimensionato, portando anche l’estinzione del problema suddetto, poiché, grazie alla nuova tabella creata per ospitare i record inerenti alle chiusure straordinarie (e anche ordinarie) dei punti vendita e alla sua integrazione nella procedura di creazione dei file riassuntivi circa l’invio dei dati, vengono esclusi a monte i punti vendita che risultano chiusi nei giorni dichiarati, evitando quindi la

77 loro presenza tra i punti vendita da sollecitare. Quindi, anche per quanto riguarda questa richiesta, l’obiettivo è stato raggiunto.

Nel caso dell’attività di gestione del problema di disallineamento tra i punti vendita presenti in anagrafica e i punti vendita di cui si ricevono i dati di venduto, in questo caso c’è stata una duplice miglioria, riguardante la riduzione del fattore umano e la riduzione dei tempi di estrazione dei punti vendita di cui notificare l’invio delle anagrafiche. Attuando la soluzione proposta, mediante l’esecuzione della procedura creata per il controllo, otteniamo in breve tempo la lista dei punti vendita da notificare e le informazioni riguardo il range di date a cui i dati presenti nel Data Warehouse fanno riferimento. L’obiettivo per cui è ampiamente raggiunto anche in questa circostanza.

Infine, per l’ultima ottimizzazione, ovvero quella riguardante il controllo e la validazione dei report generati, è stato creato lo script Python che effettui i controlli sulle somme risultanti dai report, riducendo quindi il tempo che sarebbe stato necessario per svolgerli manualmente dall’utente. Attualmente, l’unica attività rimasta da svolgere semi-manualmente, quindi, è la gestione dei solleciti. Sarebbe interessante, come prossimo step, implementare una procedura ed un insieme di funzioni che riescano in maniera autonoma ad assicurare la correttezza dei dati ed a contattare autonomamente i referenti degli associati per l’integrazione dei dati.

Questo è possibile, grazie al linguaggio Java ed alle potenzialità di Oracle che, unito ad alcuni script in Python, possono riuscire a gestire anche questo processo autonomamente, riducendo praticamente a zero la componente umana dell’intero processo, la quale dovrebbe solo occuparsi di controllare che l’intero processo sia partito e sia terminato correttamente.

Inoltre, sono attualmente in fase di analisi preliminare le attività di anonimizzazione dei dati, che può essere raggiunta grazie alle funzionalità di Oracle e del suo package “DBMS_CRYPTO”, che permette di attuare un crypting mediante algoritmo AES dei dati sensibili. Questa sarebbe una nuova opportunità di comprendere anche il contesto della gestione della privacy, ormai un argomento che è sempre più un punto critico nelle attività di Data Warehousing.

78

Elenco delle figure

Figura 1: Report ControlloEanPromo ... 20

Figura 2: Report AGS ... 21

Figura 3: Report Pro ... 21

Figura 4: Report Loc ... 21

Figura 5: Report PromoSel ... 22

Figura 6: Architettura DWH e Processi ... 23

Figura 7: Livelli ETL ... 27

Figura 8: Package ETL_AGS ... 27

Figura 9: Package Body ETL_AGS ... 27

Figura 10: Petri Net processo ETL ... 28

Figura 11: Esempio scontrino doppio ... 32

Figura 12: Report Arrivi ... 33

Figura 13: Scrittura missing Report Arrivi ... 34

Figura 14: Esempio file Solleciti - invio incompleto dei dati ... 35

Figura 15: Esempio file Solleciti - chiusura straordinaria PDV... 35

Figura 16: Esempio file Solleciti - invio completo dei dati... 36

Figura 17: File FIDFEE ... 37

Figura 18: File PDV ... 38

Figura 19: Associato Beta11 - canali 1 e 2: prima ... 45

Figura 20: Associato Beta5 - canali 1 e 2: prima ... 45

Figura 21: Associato Beta11 - dopo ... 46

Figura 22: Associato Beta5 - dopo ... 46

Figura 23: Settimane coinvolte tra l’inizio e la fine delle rilevazioni ... 51

Figura 24: Settimane coinvolte in caso di cambio anno ... 51

Figura 25: Report AGS: Associato Beta11 - azioni 22 e 23 - prima ... 53

Figura 26: Report AGS: Associato Beta11 - azioni 22 e 23 - dopo ... 53

Figura 27: Report AGS: Associato Beta2 - azioni 22 e 23 - prima ... 54

Figura 28: Report AGS: Associato Beta2 - azioni 22 e 23 - dopo ... 54

Figura 29: Report PRO: Associato Beta11 - azioni 22 e 23 - prima ... 54

Figura 30: Report PRO: Associato Beta11 - azioni 22 e 23 - dopo ... 54

Figura 31: Report PRO: Associato Beta2 - azioni 22 e 23 - prima ... 55

Figura 32: Report PRO: Associato Beta2 - azioni 22 e 23 - dopo ... 55

Figura 33: Report LOC: Associato Beta11 - azioni 22 e 23 - prima ... 55

Figura 34: Report LOC: Associato Beta11 - azioni 22 e 23 - dopo ... 55

Figura 35: Report LOC: Associato Beta2 - azioni 22 e 23 - prima ... 56

Figura 36: Report LOC: Associato Beta2 - azioni 22 e 23 - dopo ... 56

Figura 37: Report CONEANPROMO: Associato Beta11 - azioni 22 e 23 - prima ... 56

Figura 38: Report CONEANPROMO: Associato Beta11 - azioni 22 e 23 - dopo ... 56

Figura 39: Report CONEANPROMO: Associato Beta2 - azioni 22 e 23 - prima ... 57

Figura 40: Report CONEANPROMO: Associato Beta2 - azioni 22 e 23 - dopo ... 57

Figura 41: Report PROMOSEL: Associato Beta11 - azioni 22 e 23 - prima ... 57

Figura 42: Report PROMOSEL: Associato Beta11 - azioni 22 e 23 – dopo ... 57

Figura 43: Report PROMOSEL: Associato Beta2 - azioni 22 e 23 - prima ... 58

Figura 44: Report PROMOSEL: Associato Beta2 - azioni 22 e 23 - dopo ... 58

Figura 45: REPORT_IN - tempo di completamento prima la ottimizzazione ... 58

79

Figura 47: Esempio output controlli report ... 60

Figura 48: Interfaccia Oracle SQL Developer ... 61

Figura 49: Connessioni configurate in SQL Developer ... 61

Figura 50: Configurazione di nuova connessione ... 62

Figura 51: Navigazione tra le componenti del DB ... 62

Figura 52: Creazione di una tabella da interfaccia ... 63

Figura 53: Definizione di una nuova tabella da interfaccia ... 63

Figura 54: Inserimento di un record ... 64

Figura 55: Eliminazione di un record ... 64

Figura 56: Modifica di un record... 64

Figura 57: Operazioni eseguibili in linguaggio SQL... 64

Figura 58: Processo di integrazione tra gli applicativi ... 69

Figura 59: Integrazione applicativi per reportistica ... 70

Elenco delle tabelle

Tabella 1: Formato righe PromoSel ... 22

Tabella 2: Struttura tabelle F_SCONTRINI ... 30

Tabella 3: Struttura tabelle F_SCONTRINI_R... 30

Tabella 4: Struttura tabella DM_AGS_ARRIVI ... 31

Tabella 5: Struttura tabella MOTIVI_DI_SCARTO ... 31

Tabella 6: Struttura tabella TRANSATO_ALOG_AGS_SCARTI ... 32

Tabella 7: Struttura CHECK_PDV_NOT_IN_ANAGRAFICA ... 44

Tabella 8: External table ELENCA_FILE_AGS ... 73

80

Sitografia

1) Oracle PL/SQL:

https://docs.oracle.com/cd/B19306_01/appdev.102/b14261.pdf

2) Oracle Official Site:

https://www.oracle.com/it/database/index.html

3) Batch Script Guide:

https://www.tutorialspoint.com/batch_script/batch_script_tutorial.pdf

4) Python excel:

https://www.datacamp.com/community/tutorials/python-excel-tutorial

5) WinSCP Official Site:

81

Ringraziamenti

Il primo ringraziamento è dovuto alla mia famiglia, che mi ha sempre sostenuto in tutto ciò che deciso durante il mio percorso, sia in ambito accademico che in questo inizio di percorso professionale.

In primis, ai miei genitori, che hanno reso possibile tutto questo, senza mai precludermi nulla e aiutandomi costantemente in ogni momento, dai più felici ai più bui. Tutto quello che sta accadendo ora, e che accadrà in futuro, è solo grazie a loro.

A mio fratello che mi ha sempre supportato nelle mie scelte ed è sempre stato al mio fianco. Alla mia piccola cucciola/sorellina, che ho perso proprio a metà percorso, e alla quale penso in ogni momento e mi manca da morire.

Alle mie nonne, che da sempre mi viziano e che mi sono sempre state accanto.

Alla mia ragazza che è stata la mia spalla quando ho avuto bisogno di sfogarmi e che mi ha spinto a dare sempre di più e che sicuramente sarà felice quanto me per il conseguimento del titolo.

Al mio caro amico Mattia, che nonostante la lontananza dovuta all’intero percorso universitario, è sempre stato un punto fermo della mia vita, non un fratello di sangue, ma un fratello nell’animo. Ai miei coinquilini in quel di Pisa, con i quali ho convissuto in questi due anni.

Un particolare ringraziamento anche a Giacinto, che mi ha aiutato in diversi momenti particolari e su cui so di poter sempre contare.

Ai miei cugini, zii e tutti i familiari, che chi in un modo e chi nell’altro mi sono sempre stati accanto. Ai miei nonni che, ahimè, non ho avuto la fortuna di averli qui con me, e che sicuramente sarebbero stati più felici anche di me stesso per questo traguardo, ma sono sempre nei miei pensieri.

Un ringraziamento caloroso ai miei colleghi di Value Lab, per l’accoglienza che mi hanno riservato e per il sostegno dimostrato.

Un particolare ringraziamento a Giacomo di VL, che mi ha preso sotto la sua ala insegnandomi i trucchi del mestiere e fornendomi numerosi consigli utili.

Un ultimo, ma non ultimo, pensiero al relatore per i suoi consigli, per la disponibilità e per la stima che ha riposto per me.

Documenti correlati