Enterprise Resource Planning Blogs by Members
Gain new perspectives and knowledge about enterprise resource planning in blog posts from community members. Share your own comments and ERP insights today!
cancel
Showing results for 
Search instead for 
Did you mean: 
SergioG_TX
Active Contributor
Recientemente estuve viendo como crear flowgraphs (graficas de flujo) en HANA 2 XSA SPS04. Debido a mi experiencia en XS, HANA Modeling, y SAP BODS, pensé que este seria un ejercicio facil de hacer.  Gracias por leer este blog en mi serie de blogs en HANA XSA. La version en inglés se encuentra aqui.

 

Antes de llegar a la solución, que es un flowgraph? flow graph es un diagrama que representa la ejecución de alguna lógica con 0 o mas filtros (o input parametros) en orden de obtener algún resultado.

 



 

Empezé por reusar mi proyecto  wave el cual contiene un modulo de tipo de base de datos llamado db.

Luego cree un folder flowgraphs y un objeto de tipo flow graph, FG_REP_T1, el cual usaré para replica una table existente



En el web ide, con el click derecho en el folder nuevo, luego seleccionar Flowgraph



Cuando el editor del flowgraph abrió, me dió las siguientes opciones.

Le di click en el signo de suma, y el menu de context me dio opciones para lo que quisiera hacer en este flowgraph. Sin tener mucho antecedente de las opciones que ofrece el flowgraph y con mi background en SAP BODS, pude rápidamente jugar con las opciones disponibles.

La primera operacion fue incluir un data source (donde originan mis datos) y su target (donde es el destino de mis datos). El primer ejercicio fue simplemente para tener una idea de lo que tengo que hacer para mover datos de un punto A a un punto B. Pude facilmente hacer un mapping del origen al destino de mis datos. Después, guardé mi flowgraph y luego de hacer build en el módulo db, pude ver que mi flowgraph no tenia errores. Para poder ver el output del proceso tuve que correr el data preview. Que fácil no?



 

Me gustaría que todos los casos fueran igual que mi primer ejercicio pero no es asi.  Más frequentemente tendremos que involver algún modelo de datos (el cual incluye joins, unions, projections, filtering, o crear compos calculados por ejemplo con un timestamp) para poder popular una table en el destino final. Como ya mencioné también tengo experiencia en modelos de datos entonces se me facilita entender el flujo sin tener que leer mucho la documentación, reglas, syntax, entre otras cosas.

El Segundo atentado fue modificar el mismo flowgraph. Ahora un poco mas envuelto que el primer ejercicio. Esta vez tiene 2 data sources, 1 join, 1 projection (la cual incluye 1 timestamp que es mi campo calculado) y un nodo target el cual utiliza un template table. Las template tables se usan cuando no hay una tabla pre-existente y Podemos crear una dinámicamente a la marcha. De otra manera, pudimos haber seleccionado una table existente como nuestra target.



Cada ves que actualizamos el flowgraph, debemos de guardar los cambios y hacer Build en nuestro modulo para reflejar los ultimos cambios en el Sistema de SAP HANA. Después de recibir un mensaje de que todo esta correcto, cambie mi tab en el browser hacia el SAP Web IDE y en el database explorer donde pudo seleccionar mi container schema > tables y correct un select statement. Como mi test, corrí el flowgraph varias veces para notar el cambio en el campo REC_DT (como el timestamp cada vez que corria el proceso)



A medida que corria el mismo proceso repetidamente, también pense que la mayoria de las veces, este tipo de ejemplo se correrá mediante un trabajo (XS job). Hize una pequeña busqueda en google donde encontré el syntax correcto para correr la tarea desde la consola de SQL Task.  Al ver que esta opción se puede realizar por medio del SqlScript, entonces también lo podemos poner en un stored procedure para automatizarlo.



Varias veces que corrí mi tarea con el comando Start Task podemos ver reflejado el resultado inmediatamente



Ahora, todo va bien pero que más hay que saber en las configuraciones de un flowgraph aparte de las que están de default.

Al nivel flowgraph Podemos ver el tipo de comportamiento del flujo:

  • Batch task * Este fue el que usé en mi ejercicio como vieron corrí el ejemplo manualmente, luego con SqlScript

  • Realtime * representa un ejemplo mas real en los negocios, pues los cambios son hechos a casi tiempo real

  • Transactional – estas operaciones son ejecutadas en demanda

  • Procedure  -- cuando involvemos stored procedures


https://help.sap.com/viewer/71c4a6e6b4dc4a5ab3e17bb1d7e98104/2.0_SPS04/en-US/ed5bc86bb5b049d09704e00...



El Segundo tab muestra las variables – es semejante a los input parameters en un modelo de datos de tipo calculation view.

Si le damos click en a parte derecha (arriba del grid) Podemos crear variables para usarse como filtros en los nodos de tipo join/projection, etc.



No hize nada en el area de partitions debido a que mi ejemplo era fácil, sin embargo, por propósitos del blog, el area de partitions se refiera a cuando tenemos volúmens grandes de datos

https://help.sap.com/viewer/6b94445c94ae495c83a19646e7c3fd56/2.0.00/en-US/84ae946d2496414bb2062d8e7d...



 

Dentro de mi nodo join, Nota que seleccionamos el lado izquiero del join y Tambien el lado derecho. De nuevo, muy semejante a un calculation view donde tenemos que seleccionar el tipo de join y la condición del mismo.

Joins:



En Filters: seleccionamos las columnas presents y comparamos contra las variables que usamos como filtros usando syntax de SQLScript con operadores >, <, >-=, <=, =



 

Que significan los íconos en cada nodo?



 

Inspect:  Información general

Configure: mappings, filters, join information, calc columns?

Preview: data preview

 

In the target node:



Target:

Estructura de mis columnas

Settings:

Truncate: append vs re-load

data operations: upsert, insert, update

Logical keys:   applica a la estructura en context

 

Otras preguntas que alomejor tienes (si tus respuestas son diferentes, por favor comparte tus respuestas y/o preguntas)

  • Por qué usamos un flowgraph y no SAP BODS (herramienta de ETL)?


Ambas herramientas se pudieron haber usado aquí, sin embargo, la herramienta de ETL también se puede usar cuando se requieren datos de plataformas/ambientes externos a SAP HANA. En mi ejemplo yo simplemente tengo flowgrapghs en esta plataforma XSA para ver como se usan y hacer saber de este feature dentro de XSA. La misma función esta disponible en HANA 1 XSC usando el Web Workbench. LA herramienta en si se ve diferente pero la funcionalidad es la misma. Como ya saben, la herramienta nueva puede ofrecer cierta funcionalidad que no está disponible en versions anteriores.  Añadiendo al tema, los objectos flowgraph son nativos en el XSA, mientras que si usamos SAP BODS, tendriamos que tener un usuario diferente en ese ambiente de SAP BODS, crear un data store, usar workflows y data flows, y luego correr un BODS job externo a HANA.

 

  • Encontré algun problem cuando estaba desarrollando estos ejemplos? O me espero encontrar problemas en ejemplos mas complejos como known issues?


En mi ejemplo simple no encontré nada alarmante ni con accesos pues el flograph pertenecía a mi container y la tabla También venia del mismo container. Les menciono que si hubiera tenido que usar una tabla o view de otro container lo mas Seguro hay que tener todo los sinonimos y acceso asignado antes de poder usar esos objetos requeridos por la base de datos para poder ejecutar upsert statements contra las tablas.

 

Desde el punto de funcionalidad, ona cosa que si ocurrió fue de que un par de veces cuando le di click a los iconos varias veces, la pantalla se puso en blanco. No se recuperó hasta que cerre el tab y lo volvi a abrir. Alomejor fue un known issue?

 

  • Se pueden programar los flows para que corran en algun horario y como?


Si se pueden. Tendrian que estar programadas dentro de un stored proc y/o ejecutarse desde un XS Job.

 

Otras???

 

Gracias nuevamente por leer este blog en flowgraphs en XSA (H2SP04). Por favor, hagan preguntas o comentarios y también compartan sus experiencias.

 

 
Labels in this area