---
title: "Validazione e correzione degli errori nelle trasformazioni dei dati"
date: "2022-11-30"
categories: 
  - "data-integration"
  - "tools"
tags: 
  - "data-integration"
  - "data-mapping"
  - "data-mapping-debugger"
  - "data-mapping-validation"
  - "mapforce"
description: Scoprite come validare e risolvere i problemi delle trasformazioni dei dati utilizzando MapForce. Questo articolo esplora le tecniche per garantire la precisione nella mappatura e nell'integrazione dei dati.
---
Status: #blog

Tags:  #data-integration #data-mapping #data-mapping-debugger #data-mapping-validation #mapforce

Categories: [data-integration](/blog/it/category/data-integration.md) | [etl](/blog/it/category/etl.md)
# 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](https://www.altova.com/blog/web-service-data-integration/), 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.

![Un programmatore che lavora a un computer](/blog/images/Mapforce_debug_blog_1.jpg)

<!--more-->

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.

[![Una funzione definita dall'utente per calcolare l'ora locale all'interno di un progetto di trasformazione dei dati](/blog/images/data-mapping-1-2.png)](data-mapping-1-2.png)

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

[![Le operazioni incluse nella funzione utente per il calcolo dell'ora locale](/blog/images/calc-local-time-1.png)](calc-local-time-1.png)

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](https://www.altova.com/it/mapforce#data_mapping_debugger) 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:

[![Verificare la trasformazione dei dati utilizzando un punto di interruzione nel debugger](/blog/images/debug-1.png)](debug-1.png)

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:

[![Il processo di debug della trasformazione dei dati si interrompe al punto di interruzione](/blog/images/debug-2.png)](debug-2.png)

Offriamo diverse opzioni per proseguire l'esecuzione. L'opzione "Passo minimo" offre la visualizzazione più dettagliata di ogni fase della trasformazione dei dati.

[![Opzioni di avanzamento del debugger nella barra degli strumenti di MapForce](/blog/images/debug-3.png)](debug-3.png)

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

[![Esecuzione passo dopo passo della funzione definita dall'utente](/blog/images/debug-4.png)](debug-4.png)

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:

[![Continuare a premere per visualizzare il risultato della funzione](/blog/images/debug-5.png)](debug-5.png)

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.

[![Visualizzazione dell'elenco delle città da inserire nel file di mappatura dei dati del servizio Eb](/blog/images/port-list-grid-1.png)](port-list-grid-1.png)

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à:

[![Modificare le proprietà del punto di interruzione](/blog/images/breakpoint-props-1.png)](breakpoint-props-1.png)

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:

[![Finestra di dialogo delle proprietà del punto di interruzione per la convalida delle trasformazioni dei dati](/blog/images/breakpoint-props-2.png)](breakpoint-props-2.png)

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.

[![La condizione del punto di interruzione viene raggiunta e l'esecuzione si interrompe](/blog/images/debug-6.png)](debug-6.png)

Utilizzando la stessa tecnica di analisi descritta in precedenza, possiamo seguire l'evoluzione del valore negativo durante l'elaborazione della funzione calc-local-time.

[![Validare la trasformazione dei dati tracciando l'esecuzione con un valore di input negativo](/blog/images/debug-7.png)](debug-7.png)

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](https://www.altova.com/it/mapforce#data_mapping_debugger) 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](https://www.altova.com/it/mapforce/demos) di MapForce, oppure [scaricare una versione di prova gratuita](https://www.altova.com/it/mapforce/download) 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!
