Validazione e correzione degli errori nelle trasformazioni dei dati

Gli sviluppatori di software e altri professionisti del settore dati spesso devono trasformare i dati da un formato all'altro. Queste trasformazioni possono essere semplici conversioni dirette o richiedere manipolazioni più complesse. Ad esempio, è necessario generare relazioni quando si importano file CSV in un database, oppure i dati di origine potrebbero dover essere suddivisi per adattarsi al formato di destinazione, come nel caso del nome completo rispetto a nome, secondo nome, cognome e eventuale suffisso. La validazione delle trasformazioni dei dati è fondamentale per prevenire la perdita o la corruzione dei dati.

In un precedente articolo su l'integrazione dei dati dei servizi web, abbiamo combinato un valore di testo che rappresenta l'ora GMT con un valore numerico che indica lo scostamento in secondi, per generare l'ora locale utilizzata nelle previsioni meteorologiche. Abbiamo creato una funzione personalizzata che esegue tutti i passaggi necessari per completare questa operazione. MapForce include un potente strumento di debug interattivo per la mappatura dei dati, che consente di tracciare e validare facilmente questa trasformazione. Vediamo come funziona.

Ecco la visualizzazione della funzione utente "calc-local-time" nel nostro progetto di trasformazione dei dati. Come potete vedere, MapForce supporta la mappatura dei dati senza la necessità di scrivere codice, grazie a un'interfaccia visiva e intuitiva, basata sul trascinamento e rilascio degli elementi.

La funzione accetta dt_txt, che è una stringa contenente una data e un'ora nel formato "2020-02-22 18:00:00", e il valore numerico del fuso orario, che rappresenta lo scostamento rispetto al GMT per la località per cui si effettua la previsione, espresso in secondi.

Una volta che i dati sono stati trasformati, il risultato della funzione viene inserito nella colonna A di un foglio di calcolo Excel. All'interno del foglio di calcolo, il formato della colonna A è definito come "Data", e questo formato include anche l'ora, come nell'esempio 20/5/2020, 16:00.

Fare doppio clic sull'intestazione della funzione utente la espande, mostrando le singole operazioni

I due valori di input si trovano a destra, mentre il risultato finale, etichettato come "A", si trova all'estrema sinistra. In parole semplici, la funzione aggiunge i secondi relativi al fuso orario alla data e all'ora contenute nella variabile "dt_txt" per calcolare l'ora locale. MapForce include una funzione integrata per l'aggiunta di date e orari che esegue questa operazione, come mostrato nell'immagine sopra, immediatamente a sinistra del valore di output "A". Ma, come spesso accade, la realtà è più complessa! I valori di input ricevuti dal servizio web possono essere in formati diversi e devono essere adattati al formato e alla sintassi della funzione di aggiunta di date e orari.

Validare la trasformazione dei dati utilizzando il debugger di MapForce

Possiamo utilizzare MapForce strumento di debug per la trasformazione dei dati per seguire l'esecuzione della funzione dell'utente e verificare che produca il risultato desiderato. Innanzitutto, impostiamo un punto di interruzione per il debug: cliccando con il tasto destro sull'input relativo al fuso orario:

Vengono aperte diverse finestre di supporto per il debug, e il processo di trasformazione continua fino a raggiungere il punto di interruzione. Il valore elaborato al punto di interruzione viene evidenziato:

Offriamo diverse opzioni per proseguire l'esecuzione. L'opzione "Passo minimo" offre la visualizzazione più dettagliata di ogni fase della trasformazione dei dati.

Questo comando suddivide un passaggio e, in genere, si interrompe due volte per ogni connessione: una volta quando la sua sorgente produce un valore e una volta quando la sua destinazione lo consuma. Cliccando ripetutamente su "Passo minimo", l'esecuzione della trasformazione continua e ci permette di osservare esattamente cosa accade mentre la funzione calc-local-time elabora i dati

Man mano che l'esecuzione procede, i valori presenti in ciascun collegamento vengono aggiunti alla finestra.

La funzione integrata "datetime-add" richiede un valore di tipo data e ora come primo input e una stringa che specifica il periodo di tempo da aggiungere come secondo input. Nell'immagine sottostante, abbiamo seguito passo dopo passo l'intero processo fino alla generazione del valore di output. Sono evidenziati gli input forniti alla funzione "datetime-add" e il risultato finale prodotto:

Il valore di offset originale per i secondi è di 28.800 secondi, che equivalgono a otto ore. Il risultato ottenuto è di otto ore successivo all'ora di riferimento dt_txt, quindi l'output è valido.

Considerando altri casi

La differenza rispetto all'ora del Meridiano di Greenwich (GMT) sarà positiva solo per le località situate a est del GMT. Le località situate a ovest del GMT dovrebbero avere una differenza negativa. In altre parole, New York si trova a ovest di Londra, quindi l'ora locale è precedente. Pechino si trova a est del GMT, quindi l'ora locale è successiva.

Dobbiamo verificare la funzione "calc-local-time" in un caso in cui lo scostamento del fuso orario è negativo.

Ci sono diversi modi per farlo. La nostra lista di località contiene alcuni luoghi a est del fuso orario GMT e altri a ovest. Potremmo continuare l'esecuzione passo dopo passo finché non incontriamo una località con un fuso orario negativo.

Il servizio web restituisce 40 previsioni per ogni città, quindi esaminare tutte le previsioni per le prime quattro città sarebbe un'operazione noiosa.

Potremmo modificare l'elenco delle città per inserire una nuova città proveniente dall'emisfero occidentale in cima all'elenco, oppure potremmo creare un nuovo file di input per un caso di test. In molte situazioni, questa è una strategia di test ragionevole.

Oppure, possiamo impostare una condizione per il punto di interruzione. Se riusciamo a impostare il punto di interruzione in modo che l'esecuzione si interrompa solo quando il valore rilevato è negativo, possiamo continuare con il nostro file di input originale. Questo sarà il modo più rapido per arrivare a una conclusione definitiva.

Per tornare alla mappatura dei dati, facciamo clic con il tasto destro sul punto di interruzione per modificarne le proprietà:

Questo apre una finestra di dialogo in cui è possibile impostare una proprietà per rendere il punto di interruzione condizionale. Nell'immagine sottostante è mostrata la condizione che interrompe l'esecuzione se il valore del fuso orario è negativo:

Ora possiamo rieseguire la mappatura in modalità di debug. Le prime città presenti nella lista di input, che si trovano tutte a est del meridiano di Greenwich, vengono elaborate. Quando viene rilevato il primo valore di fuso orario negativo, il punto di interruzione viene attivato e l'esecuzione si interrompe.

Utilizzando la stessa tecnica di analisi descritta in precedenza, possiamo seguire l'evoluzione del valore negativo durante l'elaborazione della funzione calc-local-time.

Il valore del fuso orario, pari a -25.200 secondi, viene convertito in una stringa. Successivamente, la funzione di concatenazione integrata aggiunge caratteri all'inizio e alla fine per creare la stringa che rappresenta la durata, utilizzata dalla funzione "datetime-add".

Aggiungere un valore negativo equivale alla sottrazione, ma in questo momento la sintassi per la durata non è ancora del tutto corretta. Il segno meno (trattino) deve essere il primo carattere della stringa che rappresenta la durata, quindi la funzione di sostituzione cerca la stringa alla ricerca di "PT-" e, se lo trova, lo sostituisce con "-PT".

Il valore di 25.200 secondi corrisponde a sette ore. Sottraendo sette ore dal valore di input 2020-05-23T00:00:00, otteniamo 2020-05-22T17:00:00, ovvero il 22 maggio 2020 alle 17:00. Abbiamo ora verificato la funzione utente per i casi con valori di offset positivi e negativi.

Che si tratti di verificare l'accuratezza delle trasformazioni dei dati o di individuare un risultato inatteso, il processo di debug delle conversioni e delle trasformazioni dei dati in MapForce offre una profonda comprensione del funzionamento interno dei progetti di integrazione dati e ETL, in un modo che prima non era possibile, nemmeno con prodotti di mappatura dati molto più costosi.

Guarda un breve video dimostrativo di MapForce, oppure scaricare una versione di prova gratuita inclusi tutorial, guide e numerosi esempi per iniziare il vostro progetto di integrazione di dati JSON e di servizi web, oppure per altre esigenze di mappatura, conversione e trasformazione dei dati!