Skip to main content
Woohoo! Qlik Community has won “Best in Class Community” in the 2024 Khoros Kudos awards!
Announcements
Nov. 20th, Qlik Insider - Lakehouses: Driving the Future of Data & AI - PICK A SESSION
cancel
Showing results for 
Search instead for 
Did you mean: 
bertinabel
Creator
Creator

¿Consumir Web Service desde Qlik?

Buenos Días,

     Necesito consultar desde Qlik View un Web Service que recibe parámetros de entrada que devuelve la respuesta en XML. Necesito tomar la respuesta para poder almacenarla como tabla en Qlik View.

     ¿Alguien conoce alguna forma de poder hacer esto?.

Saludos.

4 Replies
alexis_garcia
Creator II
Creator II

Hola Bertín,

En el script, en "Ficheros Planos" puedes leer de un XML y estructurarlo en una tabla, si es a lo que te refieres.

Saludos.

bertinabel
Creator
Creator
Author

Buen Día,

     Alexis, gracias por responder.

     Si, pero como consumo el Web Service desde Qlik View.

     Es decir primero necesito hacer la consulta al Web Service desde Qlik y cachar la respuesta para poder almacenar los datos.

No se si me explique correctamente.

Saludos

amonjaras
Partner - Creator II
Partner - Creator II

Hola Bertín,

Para un web service, puedes usar el asistente de conexión a archivos web; en el Archivo de Internet pones la URL completa de tu web service, incluyendo credenciales si son necesarias.

Al pulsar siguiente, se hará la consulta al servicio, y si es exitosa, QlikView identificará la respuesta correctamente como XML y presentará los datos en forma de tabla (o tablas). El siguiente paso es insertar el script resultante.

Algunos consejos:

- Siempre prueba la URL en tu navegador antes de usarla en QlikView.

- Si puedes controlar la cantidad de datos mediante fechas o algún otro parámetro, incluye pocos durante tus pruebas y posteriormente cambia el parámetro directamente en el script para cargar todo el volumen deseado.

Ejemplo con un web service real:

https://www.ncdc.noaa.gov/swdiws/xml/warn/20170301:20170323

Este servicio devuelve dos tablas; el script resultante es:

// Start of [20170301:20170323] LOAD statements
result:
LOAD ztime_start,
    
ztime_end,
    
id,
    
warningtype,
    
issuewfo,
    
messageid,
    
shape
FROM [https://www.ncdc.noaa.gov/swdiws/xml/warn/20170301:20170323] (XmlSimple, Table is [swdiXmlResponse/result]);

summary:
LOAD count,
    
totalTimeInSeconds,
    
%Key_summary_5E8F5DBC0CB9E383    // Key for this table: swdiXmlResponse/summary
FROM [https://www.ncdc.noaa.gov/swdiws/xml/warn/20170301:20170323] (XmlSimple, Table is [swdiXmlResponse/summary]);
// End of [20170301:20170323] LOAD statements

Una vez que puedes cargar las tablas, puedes almacenar los datos localmente en forma de QVD con una sentencia STORE.

Espero que esto te sea útil.

hector_munoz
Specialist
Specialist

Hola Bertin,

Por si te sirve de ayuda porque sea un caso similar al tuyo, esto es lo que hice en su día para leer un web service que me devolvía los tipos de cambio de Bloomberg:

Estos serían los pasos:

  1. Crear una función en el editor de módulo (macros) de QlikView. Esta función se invoca desde el script en la recarga de la aplicación.
    1. A esta función se le pasaba como parámetro el texto del XML con la petición al web service. La definición de este XML la provee el creador o propietario del web service.
    2. La función por dentro hace la conexión a la URL donde se encuentra el web service, envía la petición XML del parámetro y recibe la respuesta del web service.
  2. En el script se crea la petición de XML. En mi caso creo recordar que lo que se construía era el XML con el mes y el listado de las duplas de divisas para las que queríamos obtener el tipo de cambio.
  3. Se invoca a la función y se almacena en una variable el resultado que esta arroja.
  4. Por último se parseaba el XML devuelto. Aquí otra opción sería almacenar en un fichero XML el resultado obtenido y luego cargarlo con QlikView como han indicado en este hilo.

No tengo a mano el ejemplo que hice en su día pero si con lo que te he puesto arriba no tienes suficiente, lo busco.

Saludos,

H