---
title: "Processar vários ficheiros de entrada num único mapeamento de dados"
date: "2013-01-29"
categories: 
  - "applications"
  - "data-integration"
tags: 
  - "data-mapping"
  - "mapforce"
description: Descubra como processar de forma eficiente vários ficheiros de entrada para mapeamento de dados utilizando o Altova MapForce. Este guia aborda o uso de caracteres curinga, funções de caminho de ficheiro e técnicas de filtragem.
---
Status: #blog

Tags:  #data-mapping #mapforce

Categories: [ETL](/blog/pt/category/etl.md) | [data-integration](/blog/pt/category/data-integration.md)
# Processar vários ficheiros de entrada num único mapeamento de dados

As tarefas típicas de conversão de dados exigem o processamento de numerosos ficheiros de entrada que chegam em lotes. O [Altova MapForce](https://www.altova.com/pt/mapforce.html) inclui funcionalidades que permitem gerir grupos de ficheiros com o mínimo de intervenção. Por exemplo, recentemente copiámos um conjunto de ficheiros do cartão de memória de uma câmara digital com suporte GPS. Cada ficheiro .LOG é um ficheiro CSV que contém as coordenadas GPS de uma determinada rota.

![Lista de diretórios com os ficheiros de origem para a conversão de dados](https://lh4.ggpht.com/-Y_WZhryIjkY/UPl5wriQH7I/AAAAAAAAA9Q/EsluCIUq068/clip_image001%25255B3%25255D.png?imgmax=800 "Directory list of source files for data conversion")

Desenvolvemos rapidamente um sistema de conversão para transformar os dados CSV para o formato .gpx, baseado em XML, e processámos todos os três ficheiros para gerar três ficheiros de saída numa única execução:

![Lista de ficheiros de saída gerados automaticamente](https://lh3.ggpht.com/-_QzOFmBto78/UPl5xBjlsjI/AAAAAAAAA9Y/DIJBSZ6AdMw/clip_image002%25255B3%25255D.png?imgmax=800 "List of automatically generated output files")

<!--more-->

Primeiramente, utilizamos um caractere curinga no nome do ficheiro de entrada, na caixa de diálogo de propriedades, para o componente de entrada da mapeamento. Isto instrui o MapForce a processar individualmente cada ficheiro no diretório de trabalho que corresponda ao caractere curinga.

![Utilizar um caractere curinga para o ficheiro de entrada de mapeamento](https://lh3.ggpht.com/-iqz0XDhHvLQ/UPl5xo-viaI/AAAAAAAAA9g/TO9klug7KLc/clip_image003%25255B3%25255D.png?imgmax=800 "Using a wildcard for the mapping input file")

Se estiver a criar uma conversão complexa, ou se os ficheiros de entrada forem muito grandes, pode usar um único nome de ficheiro para desenvolver o mapeamento, e depois alterar para um caractere curinga quando estiver satisfeito com o resultado do mapeamento.

**Funções de caminho de ficheiro**

A biblioteca de funções integrada do MapForce inclui funções de caminho de ficheiro que podemos utilizar para gerir os nomes dos ficheiros de saída. Se definirmos um único ficheiro de saída, este será atualizado com novos dados a cada vez que processarmos um ficheiro de entrada.

![Funções de caminho de ficheiro na biblioteca de funções do MapForce](https://lh5.ggpht.com/-JxIKHZXrzEo/UPl5xzHgSnI/AAAAAAAAA9o/6APxltAkffU/clip_image004%25255B3%25255D.png?imgmax=800 "File path functions in the MapForce function library")

Pode combinar as funções de caminho de ficheiro com outras funções de texto para ter controlo total sobre os nomes e localizações dos ficheiros de saída. Decidimos manter os ficheiros de saída no mesmo diretório dos ficheiros de entrada, mas criamos nomes de ficheiros mais descritivos e utilizamos a extensão de ficheiro .gpx.

A parte do mapeamento mostrada abaixo utiliza a função de concatenação de strings, juntamente com funções de caminho de ficheiro, para gerar o ficheiro de saída "1211190converted.gpx" a partir do ficheiro "1211190.LOG", e assim por diante.

![Utilizar funções de caminho com uma função de texto](https://lh4.ggpht.com/-l6ypssdA9Mg/UPl5ydkZBjI/AAAAAAAAA9w/2IfnpeT0TDY/clip_image005%25255B3%25255D.png?imgmax=800 "Using path functions with a string function")

Também pode utilizar funções de caminho de ficheiro para gerar strings e inseri-las como saída. O esquema XML para ficheiros .gpx contém um elemento de descrição de metadados. Decidimos inserir o nome do ficheiro de entrada nos metadados para associar explicitamente o ficheiro de saída aos dados originais. Esta estratégia torna o ficheiro de saída autoexplicativo e pode ajudar na depuração, caso seja necessário rastrear uma saída inesperada até a fonte original.

A parte do mapeamento mostrada abaixo insere o nome do ficheiro de origem numa cadeia de caracteres e associa essa cadeia de caracteres aos metadados `<desc>` elemento:

![Mapear o nome do ficheiro como dados de saída](https://lh4.ggpht.com/-_NjzoK77594/UPl5zLiSFyI/AAAAAAAAA94/3E_Qvk6srt8/clip_image006%25255B3%25255D.png?imgmax=800 "Mapping the file name as output data")

A descrição resultante encontra-se na linha 4 do documento [Visualização prévia do mapeamento](https://www.altova.com/pt/mapforce/mapping-output.html):

**[Imagem de pré-visualização dos dados de saída, com o nome do ficheiro]**

**Filtragem de dados de entrada**

O elemento central deste mapeamento de dados exigiu a aplicação de um filtro ao ficheiro de entrada. Os ficheiros de registo GPS da câmara são gravados de acordo com a especificação da National Marine Electronics Association (NMEA). Uma parte de um dos ficheiros de entrada é apresentada abaixo:

![Amostra de dados do registo GPS da câmara](https://lh6.ggpht.com/-My1iWbnP1Fs/UPl5z4xF7tI/AAAAAAAAA-I/dmH9bWwphCI/clip_image008%25255B3%25255D.png?imgmax=800 "Sample data from the camera GPS log")

Após a primeira linha, cada ponto registado é descrito por duas frases NMEA, onde o tipo de frase é identificado no primeiro campo. Cada frase GGA inclui a hora, a latitude, a longitude, a altitude e dados adicionais sobre a qualidade da localização. Cada frase RMC contém a hora, a latitude, a longitude e a data.

Uma frase RMC contém os dados mínimos necessários para gerar um ficheiro .gpx `<trkpt>` elemento, para que possamos usar um filtro para selecionar apenas as linhas relevantes dos dados de entrada, como demonstrado aqui:

![Filtrar os dados de entrada para extrair as linhas](https://lh5.ggpht.com/-u3MGw07n5Jg/UPl50MRDs2I/AAAAAAAAA-M/Jdm8sOiyLko/clip_image009%25255B3%25255D.png?imgmax=800 "Filtering the input data to extract rows")

Se o tipo de mensagem no primeiro campo de uma linha contiver "$GPRMC", essa linha é processada. Caso contrário, a linha é ignorada.

Os dados reais presentes no ficheiro de entrada também exigiram alguma manipulação. Para cada latitude e longitude, tivemos de combinar vários campos da fonte que definem graus, minutos e segundos, e convertê-los para graus decimais. Foi necessário combinar os campos de data e hora e registar o resultado no formato ISO 8601, conforme exigido pelo formato .gpx, como, por exemplo, 2012-11-19T20:43:23Z. Definimos cada uma dessas conversões como funções de utilizador, para encapsular a sua complexidade e separá-las da lógica principal de mapeamento.

Esta aplicação também oferece a oportunidade de reutilizar a função de utilizador "getElevationUS" que definimos na publicação anterior "[Esteja Preparado para o Inesperado - O Altova MissionKit Resolve um Mistério de Formato Numérico](https://www.altova.com/blog/2013/01/expect-unexpected-altova-missionkit.html). Desta vez, arredondamos os dados de altitude para três casas decimais, representando o milímetro mais próximo.

A secção principal do mapeamento de dados do Camerlog para o formato GPX, com funções personalizadas, tem a seguinte estrutura:

![O cerne do mapeamento de dados reside na utilização de funções definidas pelo utilizador](https://lh6.ggpht.com/-2HVaK82dfyo/UPl50fC_aHI/AAAAAAAAA-Y/1rMavSy31hM/clip_image010%25255B3%25255D.png?imgmax=800 "Core of the data mapping with user functions")

E aqui está um dos ficheiros de saída que mostra um elemento `<trk>`, um elemento `<trkseg>` e vários elementos `<trkpt>`.

![Dados de exemplo de saída](https://lh6.ggpht.com/-HQudomQ_V9o/UPl51JbUgXI/AAAAAAAAA-g/OH2DiYSvrZU/clip_image011%25255B3%25255D.png?imgmax=800 "Sample output data")

O menu "Saída" do MapForce oferece uma opção que permite validar os ficheiros de saída em relação ao esquema XML .gpx:

![Resultados da validação](https://lh6.ggpht.com/-9PvYWtWIYh0/UPl51dQrWfI/AAAAAAAAA-o/1NI8SHJzfLg/clip_image012%25255B3%25255D.png?imgmax=800 "Validation results")

**Se pretende utilizar** [**o Altova MapForce**](https://www.altova.com/pt/download-trial.html) **para processar ficheiros de entrada em lote e realizar as suas próprias mapeações de dados,** [**clique aqui para descarregar uma versão de avaliação gratuita**](https://www.altova.com/pt/download-trial.html).**.**
