Monday, October 19, 2015

Julia, la hermana pequeña del Análisis de Datos...conoce a SAP HANA

Este post fué posteado originalmente en Julia, data analysis’s little sister...meets SAP HANA.


Julia ya no es tan joven…puesto que apareció por primera vez en el 2012 -:) Es un lenguaje de programación dinámico de alto nivel diseñado para manejar los requerimientos de computación científica y de algo performance númerico siendo al mismo tiempo efectivo para programación de propósito general.


Woaw! Esa fué una descripción bastante larga…así que...por qué debería interesárnos? Bueno…quizás porque Julia fué diseñado para ser el lenguage de programación que domine a todos…un lenguaje que puede ser utilizádo en cualquier situación que se nos presente…y sin tener que parar para decir si esto es verdad o no…debo decir que…Julia es realmente impresionante-:)

Así que…ninguna demostración estaría completa si la enlazaramos con SAP HANA, so? Así que…vamos a hacerlo -;)

Primero, debemos crear un objeto Join y asociar la tabla por MANDT y CARRID. De ahí, seleccionar los siguientes campos como output MANDT, CARRID, CARRNAME, PRICE y CURRENCY.

Luego crear un objeto Aggregation seleccionándo los campos CARRNAME, PRICE (Como columnas agregadas) y CURRENCY. Debemos filtrar el campo CURRENCY por ‘USD’.

Luego, debemos crear un objeto Projection y seleccionar solo PRICE y CARRNAME.

En el objeto Semantics asegúrense de marcar  “CROSS CLIENT” como cliente por defecto.


Ahora, cambiemos a la vista SAP HANA Development y creemos un nuevo repositorio. Lo llamaremos“Flights”.

Creamos un proyecto “XS Engine” y también lo llamamos “Flights”. Lo enlazamos con el repositorio “Flights”.

Creamos un archivo vacio llamado “.xsapp”.

Creamos un archivo llamado “.xsaccess” con el siguente código.

.xsaccess
{
          "exposed" : true,
          "authentication" : [ { "method" : "Basic" } ]
}

Finalmente creamos un archivo llamado “flights.xsodata” con el siguiente código

flights.xsodata
service {
          "Blag/FLIGHTS_BY_CARRIER.calculationview" as "FLIGHTS" keys 
                                                        generate local "Id";
}

Activamos el proyecto y lanzamos nuestro browser...deberíamos ver algo como esto…


La parte de SAP HANA está lista…así que ahora podemos pasar a la parte de Julia…

Tenemos que ir a nuestro entorno de Julia e instalar los siguientes paquetes
  • HTTPClient
  • Codecs
  • LightXML
Solo debemos hacer Pkg.add(“PackageName”) por cada uno de ellos.

Luego, debemos crear un archivo llamado Julia_HANA_XML.jl en nuestro editor favorito y copiar y pegar el siguente código...

Julia_HANA_XML.jl
using HTTPClient.HTTPC
using Codecs
using LightXML

credentials=encode(Base64,"SYSTEM:YourPassword")
Auth = bytestring(credentials)
Auth = "Basic " * Auth

flights=HTTPC.get("http://YourServer:8000/Flights/flights.xsodata/FLIGHTS",RequestOptions(headers=[("Authorization",Auth)]))

raw_text = takebuf_string(flights.body)
xdoc = parse_string(raw_text)
xroot = root(xdoc)

entry = get_elements_by_tagname(xroot,"entry")

for flights in entry
 print(content(find_element(find_element(find_element(flights,"content"),"properties"),"CARRNAME")),": ",
    content(find_element(find_element(find_element(flights,"content"),"properties"),"PRICE")),"\n")
end

Para ejecutar esta aplicación, simplemente debemos ir a Julia y escribir

Include(“Julia_HANA_XML.jl”)


Si se están preguntándo…porque no utilicé JSON en vez de XML? Bueno…Hay una explicacion muy sencilla para eso -:) De algún modo…el paquete HTTPClient tenía un problema al utilizar ?$format=json así que me vi forzado a utilizar XML…

Saludos,

Blag.
Development Culture.

No comments: