---
title: "Integración de datos de servicios web"
date: "2020-05-11"
categories: 
  - "data-integration"
  - "json"
  - "tools"
tags: 
  - "data-integration"
  - "data-mapping"
  - "excel-data-mapping"
  - "json-mapping"
  - "mapforce"
  - "web-services"
description: Descubra cómo integrar datos de pronóstico del tiempo provenientes de un servicio web en Excel utilizando MapForce, centrándose en las técnicas de mapeo de JSON y conversión de datos.
---
Status: #blog

Tags:  #data-integration #data-mapping #excel-data-mapping #json-mapping #mapforce #web-services

Categories: [data-integration](/blog/es/category/data-integration.md) | [json](/blog/es/category/json.md) | [tools](/blog/es/category/tools.md)
# Integración de datos de servicios web

En una [publicación anterior](https://www.altova.com/blog/analyze-json-data-in-xmlspy-grid-view/), escribimos que cada tarea de integración de datos y generación de informes debe comenzar con una comprensión clara de los datos de origen. Utilizando la vista de cuadrícula en XMLSpy, el [editor líder en la industria para XML y JSON](https://www.altova.com/es/xmlspy-xml-editor), analizamos datos JSON que contenían pronósticos del tiempo para los próximos 5 días, obtenidos de un servicio web.

Continuando con el escenario que mencionamos anteriormente, utilizaremos MapForce, la herramienta gráfica galardonada [Herramienta de mapeo de datos para la conversión e integración de cualquier formato a cualquier otro](https://www.altova.com/es/mapforce), Para crear documentos de Excel bien formateados que contengan las previsiones para una serie de importantes puertos de transporte de carga. Queremos destacar cualquier predicción de fuertes vientos o lluvias intensas que puedan causar retrasos, ya sea interfiriendo con el funcionamiento de las grúas que cargan y descargan contenedores, o ralentizando la entrada y salida de los barcos en los puertos.

![](/blog/images/containership.jpg)

<!--more-->

La solicitud REST para obtener pronósticos del tiempo acepta coordenadas de latitud y longitud para devolver un pronóstico de 5 días para cualquier ubicación del mundo. Una única configuración de mapeo en MapForce puede conectar múltiples entradas y salidas, por lo que comenzaremos el proyecto de integración de datos del servicio web creando una lista de puertos de carga y sus coordenadas.

Es muy sencillo crear la lista como un nuevo documento JSON en la vista de cuadrícula en XMLSpy. Simplemente se introduce los datos sin preocuparse por los caracteres de sintaxis de JSON. En la imagen que se muestra a continuación, hemos hecho clic en el icono de la esquina superior izquierda para mostrar la lista en formato tabular:

[![Una lista de los principales puertos de carga, presentada en formato de cuadrícula JSON, en XMLSpy](/blog/images/port-list-grid.png)](port-list-grid.png)

La vista de cuadrícula facilita mucho más la revisión y el análisis del contenido de los archivos, a diferencia de la vista de texto, que muestra todos los caracteres de sintaxis necesarios en un archivo JSON válido.

[![El mismo archivo JSON, pero mostrado en formato de texto](/blog/images/port-list-text.png)](port-list-text.png)

### Descripción general del mapeo de datos

El proyecto de integración de datos del servicio web MapForce tomará la lista de puertos como archivo de entrada, enviará una solicitud REST para cada conjunto de coordenadas y mapeará los datos JSON resultantes de cada puerto en una hoja de cálculo de Excel.

MapForce utiliza archivos de esquema JSON, siguiendo las especificaciones de [json-schema.org](http://json-schema.org), para modelar las estructuras de datos JSON que se van a mapear. MapForce puede generar automáticamente un esquema JSON a partir de una instancia JSON. Esto funcionará correctamente para el único documento port-list.json.

También necesitamos un esquema JSON para mapear los datos que devuelve el servicio web, lo cual es un poco más complejo. No tenemos un único archivo .json que contenga todas las posibles variaciones de los datos obligatorios y opcionales en la respuesta.

Afortunadamente, XMLSpy puede generar un esquema JSON basándose en múltiples documentos de ejemplo que se encuentran en una carpeta de un proyecto de XMLSpy.

[![Generar un esquema JSON a partir de múltiples archivos de ejemplo en XMLSpy](/blog/images/xmlspy-schema-gen.png)](xmlspy-schema-gen.png)

Al abrir el esquema resultante en la vista de JSON Schema, vemos que el objeto "lluvia" es opcional. Esto se debe a que al menos uno de los archivos de instancia de la predicción no preveía lluvia durante los 5 días, por lo que no se incluyeron objetos "lluvia" en la respuesta.

[![Examine el esquema en la vista de esquema de XMLSpy](/blog/images/schema-view.png)](schema-view.png)

Podemos utilizar este esquema para describir los datos de la respuesta REST en la configuración.

En la imagen que se muestra a continuación, hemos comenzado a configurar el mapeo de datos importando el archivo "post-list.json" y un nuevo servicio web. Hemos añadido la URL REST y hemos asignado las coordenadas de latitud y longitud como parámetros de entrada para construir la solicitud. Hasta ahora, el cuerpo de la respuesta no tiene una estructura definida.

[![Agregar la respuesta REST al mapeo de integración de datos del servicio web](/blog/images/port-mapping-1.png)](port-mapping-1.png)

Podemos hacer clic en el cuerpo para abrir el cuadro de diálogo "Estructura de la respuesta" y asignar el esquema que generamos en XMLSpy

[![Añadir el esquema JSON para mapear la estructura de datos de la respuesta REST](/blog/images/response-structure-dialog.png)](response-structure-dialog.png)

Una vez que se asigna el esquema, todos los elementos del cuerpo están disponibles para ser mapeados

[![Visualización de cada elemento de la respuesta REST en el mapeo de la integración de datos del servicio web](/blog/images/port-mapping-2.png)](port-mapping-2.png)

Ahora podemos añadir el archivo de Excel de destino. Se nos ha proporcionado una hoja de cálculo de ejemplo que podemos utilizar como modelo, con algunos estilos de celda, gráficos y datos de ejemplo:

[![Un modelo de hoja de cálculo para el resultado final](/blog/images/sheet-1.png)](sheet-1.png)

Podemos añadir esta hoja de cálculo al mapeo de integración de datos del servicio web como destino, pero aún necesitamos identificar las celdas que recibirán los datos

[![Añadir la hoja de cálculo al mapeo de datos](/blog/images/port-mapping-3.png)](port-mapping-3.png)

Hacer clic en el botón situado a la derecha de la entrada "Filas 1, n=dinámico" abre el cuadro de diálogo "Seleccionar rango". La fila 10 contiene los encabezados de las columnas para los datos, por lo que queremos mapear la tabla principal, comenzando en la fila 11, en las columnas A a K. Las columnas tienen diferentes tipos de datos, que en su mayoría corresponden a tipos de texto o numéricos en la fuente JSON y a formatos en Excel. El cuadro de diálogo "Seleccionar rango" nos permite definir los objetivos exactos y los tipos de datos:

[![Seleccionar el rango de celdas donde se recibirán los datos](/blog/images/select-range-dialog.png)](select-range-dialog.png)

Identificar los nombres de las columnas en el cuadro de diálogo "Seleccionar rango" las añade como etiquetas en el mapeo de la salida. A continuación, podemos crear la lógica para asignar cada pronóstico a un archivo de Excel separado, como se muestra a continuación:

[![Crear nombres de archivo únicos para cada hoja de cálculo](/blog/images/port-mapping-4.png)](port-mapping-4.png)

El nombre del archivo en la parte superior de la hoja de cálculo de Excel está establecido como "<dynamic>", lo que indica que la transformación generará nombres de archivo. Cada nombre de archivo real se construye mediante una función de concatenación que incluye el nombre de la ciudad de la lista de origen, creando nombres como "forecast-Seattle.xlsx", etc.

También necesitamos asegurarnos de que la tabla de datos principal en cada archivo comience en la fila 11. Para lograrlo, vinculamos el objeto de nivel superior del arreglo de listas al destino en las filas 10, con "n=dyn", y utilizamos una función de numeración automática para restablecer la fila de inicio cada vez que cambia el nombre del archivo.

Cada objeto de lista en la respuesta se corresponderá con una nueva fila en la hoja de cálculo de Excel. Ahora podemos vincular los elementos individuales de la respuesta a las columnas de la fila. En la imagen que se muestra a continuación, hemos conectado todos los elementos que no requieren ninguna transformación adicional.

[![Conectar los elementos de la respuesta REST con las celdas de la hoja de cálculo](/blog/images/port-mapping-5.png)](port-mapping-5.png)

Para los elementos vinculados directamente, los tipos de datos en la respuesta JSON corresponden directamente a los tipos que especificamos para las columnas en la hoja de cálculo. El campo "Temp" en los datos JSON de origen es numérico, y la columna E en el destino también es numérica. El tipo de dato para "description" en la fuente es una cadena de texto, y la columna B en el destino también es una cadena de texto, y así sucesivamente.

En el esquema JSON de la respuesta, vimos que el objeto "rain" (lluvia) era opcional. Si no existe, queremos sustituirlo por el valor cero. Esto se puede lograr fácilmente mediante la creación de una expresión que combine las funciones "exists" (existe) y "if-else" (si-entonces):

[![Introduzca el valor cero en caso de que falte un valor de precipitación.](/blog/images/port-mapping-6.png)](port-mapping-6.png)

Una limitación del formato de datos JSON es que solo incluye dos tipos de datos: cadena de texto y numérico. Tipos de datos como entero y fecha y hora, o formatos especiales de Excel como porcentajes y contabilidad, no están definidos en JSON. MapForce incluye de forma conveniente funciones integradas para transformar los datos de origen en los tipos de datos de destino deseados en el mapeo. De esta manera, podemos crear el formato de fecha y hora que queremos en la columna A de la tabla de Excel.

El elemento "main.dt_text" en los datos JSON representa la fecha y la hora como una cadena de texto, por ejemplo: 2020-05-09 06:00:00. MapForce tiene una función "parse-dateTime" que toma la cadena de texto y un modelo de formato como entrada, y proporciona un resultado de fecha y hora. Sin embargo, hay una complicación adicional: la cadena "dt-txt" está en la zona horaria GMT, no en la hora local de la ciudad para la que se realiza la predicción. El ajuste de la zona horaria local se proporciona en el elemento "city.timezone" como segundos positivos o negativos.

Para mantener la vista principal de mapeo lo más sencilla posible, hemos creado una función de usuario llamada "calc-local-time". Esta función recibe una cadena de texto y un desplazamiento, y calcula la hora local. La función de usuario se mapea de la misma manera que una función integrada:

[![](/blog/images/port-mapping-7-2.png)](port-mapping-7-2.png)

Lo último que necesitamos para completar el mapeo de la integración de datos del servicio web es combinar los nombres de la ciudad y el país, y agregarlos a la fila 1, columna C

[![Añadir la ciudad y el país en la fila 1](/blog/images/port-mapping-8.png)](port-mapping-8.png)

Aquí se muestra una vista completa del mapeo final:

[![Una visión completa del proceso de mapeo para la integración de datos de servicios web](/blog/images/port-mapping-complete.png)](port-mapping-complete.png)

Para obtener los documentos de Excel con el formato correcto para cada ciudad, necesitamos un archivo de Excel con formato preexistente que coincida con el nombre de cada archivo de destino. Un archivo por lotes es una forma rápida de crear los archivos originales, copiando repetidamente el archivo de muestra de Excel original, junto con sus estilos y fórmulas.

### Resultados de la integración de datos a través de servicios web

Hacer clic en el botón "Salida" que se encuentra en la esquina inferior izquierda de la ventana de mapeo ejecuta el proceso de mapeo y genera los archivos de salida. Si Excel está instalado en la estación de trabajo, la vista previa del resultado de Excel se mostrará en la ventana de "Salida":

[![La ventana de vista previa muestra el primer archivo de Excel generado](/blog/images/port-forecast-output-1.png)](port-forecast-output-1.png)

La fecha y la hora, así como las condiciones climáticas actuales, se muestran en la parte superior, y los resúmenes de texto que aparecen junto al gráfico de precipitaciones se generan mediante fórmulas en la hoja de cálculo de Excel. Se han generado los nueve archivos de salida, y podemos seleccionar y previsualizar cualquier archivo individual. A continuación, se muestra la lista desplegable para seleccionar el archivo y el séptimo archivo, que contiene la previsión meteorológica para Seattle:

[![El menú para previsualizar otro archivo de salida](/blog/images/port-forecast-output-2.png)](port-forecast-output-2.png)

La funcionalidad de Excel está disponible en la ventana de vista previa. Por ejemplo, esta hoja de cálculo utiliza un desplazamiento de pantalla dividido, con una sección superior bloqueada. Podemos desplazarnos hasta la parte inferior de la tabla de datos principal para ver exactamente cuánta precipitación se pronostica en el último informe. Observe los números de fila en el lado izquierdo:

[![Desplazar los datos de la salida en la ventana de vista previa](/blog/images/port-forecast-output-3.png)](port-forecast-output-3.png)

Si el resultado es satisfactorio, podemos guardar uno o todos los archivos generados:

[![Guardar los archivos de salida de la integración de datos del servicio web](/blog/images/port-forecast-output-4.png)](port-forecast-output-4.png)

### Datos intermedios

MapForce está diseñado para optimizar la eficiencia en la conversión de datos. Nunca tuvimos que guardar, gestionar ni manipular explícitamente los datos JSON intermedios provenientes de la respuesta REST. La ejecución de esta asignación de integración de datos del servicio web no guarda los datos intermedios.

Si deseamos o necesitamos guardar los datos de la respuesta JSON junto con las hojas de cálculo de Excel finales, MapForce ofrece varias opciones. Una de ellas es crear un mapeo en cadena que guarde los datos de la respuesta como un archivo JSON intermedio, basándose en el mismo esquema que la respuesta. Luego, podríamos mapear el archivo JSON para generar la salida de Excel. Un mapeo en cadena permite previsualizar y guardar los archivos intermedios, así como el resultado final. A continuación se muestra la lista de archivos de salida generada por un mapeo en cadena, con uno de los archivos JSON en vista de texto en segundo plano:

[![Una alternativa para la integración de datos de servicios web, utilizando datos intermedios](/blog/images/port-forecast-output-5.png)](port-forecast-output-5.png)

### Integración automatizada de datos de servicios web

Nuestro escenario de flujo de trabajo requeriría actualizar las previsiones diariamente. Podemos guardar la configuración como un archivo de ejecución de MapForce Server para.. [procesamiento automatizado](https://www.altova.com/es/mapforce-server) mediante MapForce Server, o bien, se puede implementar directamente en FlowForce Server para generar nuevas predicciones según un programa automatizado. Una tarea de FlowForce Server puede combinar tareas de integración de datos con múltiples acciones, incluyendo acciones del sistema como mover archivos o enviar correos electrónicos, o bien, una tarea de FlowForce Server puede.. [ejecutar flujos de trabajo complejos](https://www.altova.com/es/flowforceserver) que pueden transmitir resultados y parámetros para activar otros procesos.

Vea un video breve [demostración en video](https://www.altova.com/es/mapforce/demos) de MapForce, o [Descargue una versión de prueba gratuita](https://www.altova.com/es/mapforce/download) incluyendo tutoriales, ayuda y muchos más ejemplos para que pueda comenzar con su propio proyecto de integración de datos JSON y de servicios web, o para otras necesidades de mapeo, conversión y transformación de datos.
