sábado, 31 de octubre de 2015

RESTful Web Servicio

Hola contactos(as)

:) día de Halloween  y no tengo dulce... Esta vez dejo un trabajo de investigación que esta siendo muy utilizado por varias empresas de desarrollo de Software en Chile.  Los famosos servicio Web RESTful [1], que permiten de una manera sencilla interactuar entre sistemas independientes. Acá dejo la teoría bien explicada, clic aquiiiiii.  

En mi caso,  lo encuentro espectacular para prestar servicios a los clientes de una empresa.

Imagínense que podamos enviar la lectura del medidor (gas, agua o electricidad) 

a través de nuestro smartphone (teléfono Inteligente), no es mala idea. Hay empresas que realizan este servicio. (en España por ejemplo). En el 2013 se me ocurrió  este idea para mi tesis, pero posterior la cambié por otro tema. Bueno, que son los servicios RESTful  (están relacionado con la idea que comento),  es un modelo de diseño para sistemas distribuidos (asociado al protocolo http) donde puedes compartir los recursos entre aplicaciones  cliente y servidor (app móviles, excelente para diseñar todas tus ideas) a través de Xml, Json [2]y otros. Ojo, los servicios web RESTful son más ligeros que los utilizados por SOAP.

Solicitudes de servicio HTTP


Los Servicios web RESTful se implementan utilizando cuatro tipos de petición (HTTP)
  • PUT: Crea un recurso en el servidor. 
  • GET: Recupera un recurso del servidor. 
  • POST: Actualiza un recurso en el servidor. 
  • DELETE: Elimina un recurso en el servidor. 
Los servicios Web Restful lo puedes diseñar en .Net, php, java, y otros.  En mi caso me fui a Java.  

Figura 1: NetBeans

De la figura 1, debes tener instalado NetBeans y al iniciar un nuevo proyecto, sigue estos pasos:

-En Netbeans con Tomcat 7 en adelante.
-Al crear un nuevo proyecto, selecciona New Project... luego en categoría selecciona java Web y proyectos selecciona aplicación web. Ver figura 2.

Figura 2: Crear nuevo proyecto en netbeans

Luego Next y crea el proyecto en la ventana nombrada New Web Application. Incorpora el nombre del proyecto que desee. En mi caso, MiServicioRestFul.

Figura 3: crear nombre proyecto

Next y selecciona en Server Apache Tomcat que tengas instalado. Al instalar NetBeans te pregunta si desea utilizar  Tomcat. Te lo recomiendo, tengo varias aplicaciones corriendo en Tomcat y son muy estables y seguras.

Figura 4: Selecciona el servidor.

Luego Next y next y finalizas. Se creará el nuevo proyecto. Figura 5.

Figura 5: Proyecto creado.

Creada la aplicación web inicial, hay que incorporar este famoso servicio RESTful. Clic botón derecho en el proyecto,  selecciona New y Resful Web Services from Patterns... Figura 6.

Figura 6: Asociar al proyecto Servicio Web Restful.


Luego en la figura 7, debes crear un nombre en Resource Package, en mi caso incorporé Servicio. Se creará en la carpeta Servicio en donde se depositarán los archivos .java.


Figura 7: Crear la carpeta para los archivos .java


En la carpeta Servicio, anda al archivo GenericResource.java y vamos a crear un método que nos permita entender un pequeño ejemplo usando servicio Restful.

Figura 8: Clase GenericResource.

Incorpora las siguientes líneas en el archivo GenericResource.java:

    @Path("/lectura/{numeroMedidor}")

    @GET
    @Produces("text/xml")
    public String getUser(@PathParam("numeroMedidor") String numeroMedidor) {
      
        if (numeroMedidor.equals("10102020")) {
            String ls_resultado;
            ls_resultado="Lectura ACEPTADA";
            return ls_resultado;
         } else {
            return "Lectura NO ACEPTADA";
      }
    }

Debe quedar como se ve en la figura 9.

Figura 9: Creando método que permite recibir datos de otro sistema.

Al finalizar, ejecuta el proyecto Run Project.
El servicio Tomcat se activa y emerge desde el navegador la página JSP con la siguiente url, http://localhost:8084/MiServicioRestFul/

Ya estas listo para llamar a @Path("/lectura/{numeroMedidor}") desde una aplicación en html, o desde tu dispositivo Android o IOS. Para ello si hay que programar el programa.  

Veamos como funciona, utilizando el programa cURL [3] que es un programa que permite transferir archivos por medio de la sintaxis URL a través desde la línea de comando.

Si usas Windows, anda a inicio y en ejecutar escribe CMD y si usas MAC ejecuta la Terminal. 
En la figura 10, se presenta lo realizado.


Figura 10: comando curl.

Se pudo entonces, a través del programa curl, enviar una solicitud al Tomcat y este a través del servicio restful entregar el resultado por medio de GET.   El resultado entregado es Lectura ACEPTADA

Otro ejemplo, crea una página JSP, anda a Web Pages, clic botón derecho y New, selecciona  JSP... incorpora estas líneas de código:


<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
 <script type='text/javascript'>
            function busca() {
                var http = new XMLHttpRequest();
                
     var url = "http://localhost:8084/MiServicioRestFul/webresources/generic/lectura/10102020"
                http.open("GET", url, true);
                http.onreadystatechange = function() {
                    if (http.readyState == 4 && http.status == 200) {
                        document.open();
                        document.write(http.responseText);
                    }
                };
                http.send();
            }
</script>


<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Prueba con JSP</title>
    </head>
    <body>
        
        <a href="javascript:busca()">Acepta</a>
        
    </body>
</html>

Graba y escribe lo siguiente en la URL de tu navegador:

http://localhost:8084/MiServicioRestFul/Prueba.jsp   (luego ENTER)

Figura 11: Prueba desde navegador.

Desde el navegador llamaremos al servicio y nos debe enviar el mismo resultado que entregó el programa CURL. Clic entonces en Acepta.

Se debe desplegar en tu navegador el mensaje Lectura ACEPTADA.

Conclusión

1.- Este servicio te permite implementar aplicaciones móviles, tanto en Android o IOS puedes llamar a un servicio RESTful por ejemplo con un servidor TOmCAT y obtener  o enviar datos a través  de una base de datos, imágenes, archivos, mapas, xml, etc.

2.-En tus aplicaciones WEB de tu empresa puedes incorporar esta arquitectura y así no tener código relevante en tus páginas (de php por ejemplo, acceso a base  de datos) que permitan ser utilizadas en forma maliciosa. 

3.- Con RestFul se puede diseñar la idea inicial que les comenté en el inicio de este artículo.

Espero que sirva y nos vemos con otro artículo la otra semana.. adiosito amigos míos... mucho grito en mi casa.. dulce o travesuras.... grgrgrgrgr


Bibliografía


[1] http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm

[2] http://www.w3schools.com/json/default.asp

[3] http://curl.haxx.se/docs/httpscripting.html
























































lunes, 19 de octubre de 2015

Una Shell de Linux bajo Windows

Hola a todos nuevamente.

Hoy les dejo un artículo, para que puedas ejecutar LINUX  bajo el sistema Operativo Windows. El objetivo es contar con este ambiente y podamos ejecutar aplicaciones en este entorno, para lo que no han experimentado bajar "Linux" en esta modalidad.  

En mi caso he bajado la aplicación Cygwin [1], te dejo el link para bajarlo. Clic aquí.

Puedes bajar  para tu plataforma Windows de 32 ó 64 bits. Cuando lo tengas en tu pc, clic en "setup-x86_64.exe", en mi caso usé el de 64 bits.

Figura 1: Inicio de la instalación

Luego en la figura 2, selecciona la Fuente de descarga, elije la opción "Install from Internet" y clic en Siguiente.

Figura 2: Fuente de la descarga

La siguiente ventana, de la figura 3, selecciona una carpeta o directorio, para instalar el programa Cygwin.

Figura 3: Instalar Cygwin en una carpeta

De la figura 4, selecciona la opción "Direct Connection" que te permite usar tu Internet local. usa esta para no configurar los otros accesos, en el caso que no estés en tu casa.


Figura 4: Selección de tu conexión


En la figura 5, selecciona un sitio que te permitirá descargar los complementos de Linux y del programa Cygwin. Selecciona el que te presento en la figura 5, en mi caso funcionó. Luego clic en Siguiente.


Figura 5: Bajar paquetes del programa


Al finalizar el proceso de la figura 5,  se listan todos los paquetes necesarios para Linux. Te recomiendo clic en Siguiente para instalar los paquetes estándar.

Figura 6:  Selección de paquetes.



Al finalizar la instalación el programa Cygwin creará el icono correspondiente en tu Escritorio. Así me quedó en mi caso:


Mira, la figura 7, al doble clic en el icono del escritorio.  Ya estamos en el ambiente LINUX. yupiiiii

Figura 7: Shell Cygwin


Si no estas familiarizado con este ambiente, acá es el momento para que puedas aprender los comandos básicos. Acá dejo un acceso para conocer las tareas básicas para nuevos usuarios de Linux.

Bueno estimados(as), en posteriores artículos usaremos este ambiente sobre temas que creo que serán útiles para tu empresa o en tu departamento de Sistemas (Informática), etc. Las empresas  tales como Spotify,  LinkedIn y Netflix usan algunas plataformas básicas, lo dejo hasta acá....

Nos vemos, buena semana a todos.


Bibliografía

[1]  https://cygwin.com/





















































miércoles, 14 de octubre de 2015

3/3 Desarrollo de Cubo OLAP para EXCEL con Business Intelligence de Visual Studio Microsoft

Hola a todos, por fin la última parte de este trabajo realizado para ustedes. 

Que nos queda, crear el cubo de gestión OLAP que permite servirse de la base de datos DMABC a través del ETL.

-Recordemos que lo realizado fue crear una base de datos multidimensional a partir de los datos fuentes . Luego se programó el  ETL iniciales por medio de SSIS. Ahora que viene:
-Crear las dimensiones, cubo y presentar la información por medio de Microsoft EXCEL.

Crear proyecto Cubo


Abre SQL Server Business Intelligence Development Studio y vamos a File - New - Project.
En tipo proyecto selecciona Business Intelligence Projects. En templates, selecciona Analysis Services Project. En Name registra el nombre del proyecto, en mi caso es "DM_Despacho". En la figura 1 queda la solución.  

Figura 1: Explorador de solucciones

Antes de seguir, recordemos:

Modelo Multidimensional
El modelo multidimensional se utiliza para modelar bases de datos, la información se representa como matrices multidimensionales, en donde cada una de estas matrices se denomina cubo. La idea de almacenar la información en estas matrices, es que la base de datos es visualizada como un cubo de tres o más dimensiones, y así es más fácil para el usuario visualizar la relación que existe entre los componentes e imaginarse la forma de obtener la información deseada. En el modelo multidimensional  los ejes corresponden a las dimensiones y a los datos que se representan en la matriz se les llama medida. 

Componentes del Modelo Multidimensional 
Los componentes del modelo multidimensional son dos: los esquemas y las tablas. Las tablas que se representan en el modelo multidimensional se dividen en dos tipos:

Tablas de hechos: Son el objeto a analizar, es la tabla central en un esquema dimensional, contienen datos sobre las actividades principales de la organización. Cada tupla de la tabla se compone de datos observables de cada actividad y de las referencias a las dimensiones que los caracterizan[1] .  

Tablas de dimensiones: Son las tablas que alimentan a la tabla de hechos, estas almacenan valores relacionados a una dimensión particular. Son los elementos que determinan la estructura de las dimensiones. Representan cada uno de los ejes en un espacio multidimensional, poseen atributos llamados dimensión o clasificación. Las dimensiones poseen jerarquías, que son varios atributos unidos mediante una relación de tipo jerárquico[1] .


En la figura 1, lo primero es definir la fuente de datos, botón derecho en Data Sources, luego New Data source, luego next y en la ventana nombrada Data Source Wizard selecciona la base de datos DMABC, esta es la que posee los datos transformados y cargados por el ETL. Next y selecciona "use the service account", Next y quedamos con el nombre fuente DMABC. Lo puedes cambiar si lo deseas.

Guiándonos por la figura 1, debemos seleccionar ahora Data Source View, esto permite seleccionar un conjunto de tablas que provienen de tu Data Source. Repite el mismo paso anterior y selecciona en "Relational data sources",  DMABC y luego Next, Next, en la ventana nombrada Data Source View Wizard, donde se lista las tablas de tu base datos DMABC, debes seleccionar las tablas que te permitirán alimentar tu CUBO. En mi caso la selecciono todas. Mira la figura 2.

Figura 2: Selección de tablas o vistas

En mi caso selecciono todas las tablas, y las dejo en Included objects. Luego NEXT y me queda lo siguiente en la figura 3:


Figura 3: Tablas completadas para el CUBO  a definir.

Como va quedando esto en Solution Explorer


Figura 4: Diagrama del Data Source View

Entonces en Data Source View te permite definir los DataMart que necesitas. Hecho esto, falta solamente definir las dimesiones y el cubo.  Yesssss :)

En la figura 4, el esquema nos queda Estrella.

Esquema estrella (star join): Este esquema esta formado por una tabla central y un conjunto de tablas de dimensiones unidas a ella. Su nombre se deriva ya que su diagrama forma una estrella, con puntos radiales desde el centro. Las tablas de dimensiones tienen conexión a la tabla central y a ninguna más. 

Esquema copo de nieve (snowflake): Este modelo se basa en el modelo estrella, pero aquí las tablas están normalizadas. Cada tabla de dimensiones contiene solo el nivel que es clave primaria en la tabla y la foreign key de su parentesco del nivel más cercano del diagrama.

Dimensiones

Las dimensiones son los criterios de análisis de los datos de tu empresa, son el objeto del problema, representan variables independientes y se alojan en los ejes del cubo. Una característica de las dimensiones es que si tienen más de un nivel, entonces los miembros de la dimensión, pueden ser representadas mediante una o más jerarquías. La ventaja de almacenar la información en un modelo jerárquico es que nos permite organizarla de forma detallada como sea necesario, y así poder analizarla en distintos niveles[1] .


En la figura 1, debes seleccionar Dimensions, clic botón derecho, luego selecciona New Dimensión... mira la figura 5.


Figura 5: Método de selección.

No voy a profundizar en detalle de cada opción que te presenta esta ventana, solo selecciona la opción "Use an existing table", luego NEXT.  En resumen para crear las dimensiones las seleccionaré de las tablas definidas en "Data Source Wizard".


Figura 6: Especificar Dimensión D_CALLE

En la figura 6, se especifica el nacimiento de la dimensión D_CALLE, mira en Name column: seleccioné "id_calle", ya que será la columna que me permite caracterizar la jerarquía y es la relación que hay entre D_CALLE y la tabla de Hecho.


Figura 7: Especifica los atributos a listar.

Luego de la figura 7, selecciona DES_CALLE y clic en Next.


Figura 8: Dimensión y su jerarquía

En figura 8, finaliza y la dimensión D_CALLE queda grabada.


Figura 9: Procesar Dimensión.

La dimensión creada se procesa, esto permite obtener los datos de la fuente en Data Source View y almacenar los datos en la base de datos Dimensional del tipo OLAP. No es una base de datos relacional.

Figura 10: Carga de datos

Los datos quedan registrados en la dimensión D_CALLE. Al salir de esta ventana puedes listar los datos, así quedan en la siguiente figura:

Figura 11: Lista dimensión D_CALLE


Ahora repite los mismo para D_COMUNA, D_PRODUCTO, D_TPCLIENTE Y D_TIEMPO.

En la dimensión D_TIEMPO puedes crear jerarquías de varios niveles. Mira la figura 12

Figura 12: Jerarquía en D_TIEMPO

Al crear la Dimensión, puedes crear jerarquías, solo debes pasar los atributos de menor a mayor en el lado donde dice "hierarchy"



Figura 13: Dimensiones


Vamos a crear el CUBO, en la figura 13, clic en Cubes y clic botón derecho, luego New Cube... selecciona Use Existing tables y Next.


Recuerda que el cubo siempre es la tabla de HECHO, en este caso H_DESPACHO. La tabla de hecho posee las medidas que son los valores de análisis de los datos, además los campos claves están asociados a las dimensiones. Son variables dependientes y variables en la intersección de las dimensiones. Luego Next y mira la figura 14.


Figura 14: Medidas incluidas en el cubo.

De la tabla de Hecho en la figura 14, las medidas disponibles; valor cobrado, Cantidad y H DESPACHO Count. Este último es presentado en caso que no tengas la medida de cantidad de registros. 


Figura 15: Dimensiones asociadas al cubo.

En la figura 15, las dimensiones están todas seleccionadas, fueron creadas anteriormente.  Luego NEXT y finaliza. Luego procesa el cubo, figura 16, carga las dimensiones y la tabla de HECHO. Este proceso se alimenta de la base de datos relacional DMABC, Al final el cubo queda con los datos basado en un modelo multidimensional, en el cual la información se encuentra organizada  por temas dándoles alguna orientación, para ayudar a los usuarios a realizar análisis dinámicos de los datos. 



Figura 16: Procesa Cubo OLAP


 Mira la figura 17, como queda el cubo con sus dimensiones relacionadas.

Figura 17: Estructura del cubo.

Enla figura 17, selecciona la opción "Browse" para navegar por los datos, mira la figura 18.


Figura 18: Navegación de los datos

Esto es igual que trabajar en una tabla dinámica en EXCEL. Entonces al usuario final debe usar EXCEL así el está familiarizado con EXCEL, lo usará, si le pasas otro programa para navegar en un cubo OLAP te aseguro que no lo usará.


Herramientas OLAP

Las herramientas OLAP tienen sus operadores de refinamiento o manipulación de consultas[1] :

Drill (Disgregación): Permite introducir un nuevo criterio de agrupación en el análisis, agregando los grupos actuales. 

Roll (Agregación): Permite eliminar un criterio de análisis, agregando los grupos actuales.

Slice & Dice: Permite seleccionar y proyectar datos en el informe.

Pívot: Permite la reorientación de las dimensiones.


Vista del cubo usando EXCEL

Abre tu EXCEL y ve a DATOS (en el menú principal), selecciona Desde Analysis Services, luego te pide el nombre del servidor donde reside el cubo anterior, en mi caso locahost. Mira la figura 19.


Figura 19: Conexión al cubo OLAP

Selecciona tu cubo "DM_DESPACHO" en mi caso y Siguiente y Finalizar.

Figura 20: Conexión a EXCEL

De la figura 20, esto debes tener. En la lista de campos debes realizar lo siguiente:

-Etiqueta de fila: Siempre incorpora las Dimensiones con su atributo, por ejemplo "des_comuna". (D_COMUNA)
-Etiqueta de columna: Siempre incorpora las Dimensiones con su atributo, por ejemplos"tipo cliente". (D_TPCLIENTE)
-En Valores, siempre utilizar las medidas, por ejemplo "cantidad" (H_DESPACHO)
-Filtro de informe: Siempre incorpora las Dimensiones con su atributo, por ejemplo "agno" (D_TIEMPO). 

Mira las figuras 21,22, 23,24 y 25, como el usuario final puede ver los datos y realizar análisis cuando el lo desee. Te recomiendo que debes tener un procedimiento explícito con los acuerdos y responsabilidades de las actualizaciones de tus ETLs hacia el o los usuarios. .:)
Con esto el o los usuarios finales pueden explorar los datos  a través de EXCEL fácil y útil.


Figura 21: Datos en EXCEL


Figura 22: Manipulación de consulta


Figura 23: Generar gráfico

Figura 24: Listar Detalle


Ventaja en uso de la herramienta OLAP con EXCEL.

-El usuario no puede eliminar los datos que están en tu cubo y en el EXCEL. Solo  puede cambiar los filtros o seleccionar otras dimensiones.
-Puede guardar esta consulta y la puede llamar cuántas veces lo desea.
-Generar gráficos.
-Puede rotar la información utilizando los conceptos DRILL, ROLL, SLICE & DICE y PIVOT.
-En la figura 24 se lista el detalle de los datos que está en la figura 22, en la medida 3 (fila 6, columna C). Te posicionas y clic botón derecho y clic en Mostrar detalle (figura 25). Se lista la figura 24 en otra Hoja dentro de tu archivo Excel. Es espectacular el uso de OLAP con EXCEL. Te lo recomiendo.

Figura 25



Espero que lo realicen y dudas o consultas a lpizarrofx@gmail.com. Se van hacer famososssssssss en la empresa..... 

Que nos faltó: uffff toy cansado.....

Saber dónde apoyar tu empresa con proyectos de Inteligencia de Negocios.
Saber cómo apoyar tu empresa con Inteligencia de Negocios.
Desarrollar Jerarquías, MDX  y  KPI, [2]
Procesar Cubos OLAP, MOLAP, ROLAP

Bibliografía

[1]  Proyecto título Cubo de Gestión. Gislaine Valenzuela Zañartu. UCSC
[2]  Tecnología Microsoft. https://msdn.microsoft.com/es-es/library/hh230953(v=sql.120).aspx

sábado, 10 de octubre de 2015

2/3 Desarrollo de Cubo OLAP para EXCEL con Business Intelligence de Visual Studio Microsoft

Hola a todos

La segunda parte de este artículo es continuar con el desarrollo del CUBO OLAP en tu empresa. Teniendo el modelo multidmensional, vamos a  crear los procesos necesarios para cargar los datos fuentes a  través de Microsoft SQL Server Integration Services (SSIS).



Figura 1: Modelo Multidimensional 

De la figura 1, debes crear este modelo en SQL Server Management Studio. Te dejo aquí el enlace para crear las tablas.  Nombre de la base de datos de la figura 1, es DMABC

Figura 2: Base de datos

En la figura 2, se tiene la base datos BDABC que es la fuente de datos y la base de datos DMABC que creamos recién, la cual nos sirve para depositar los datos fuentes BDABC ---> DMABC que posterior se servirá nuestro cubo OLAP. A diferencia del modelo relacional, el modelo multidimensional te permite analizar la información mediante cubos OLAP, otra de las razones, que resulta adecuado para el estudio de los datos de la base de datos BDABC pero transformado en un DATAMART. (DMABC)

Veamos lo que hemos realizado:

-Preguntas de gestión.
-Conocer las fuentes de datos que estén alineadas con las preguntas de gestión.
-Disponer de las fuentes, en este caso base de datos relacional BDABC.
-Crear base de datos multi dimensional DMABC. (esquema estrella)

Ahora lo principal está sobre los ETL’s como primer componente de las fuentes desde donde se extrae la información necesaria para poblar la base de datos DMABC, en la figura 1 del modelo destino. 

La extracción, transformación y carga se basa en:

Transforma los datos de acuerdo al modelo de datos. (figura 1)
Limpiar los datos para corregir errores que pueden contener las fuentes.
Integrar los datos para formar la base de datos donde va a residir la información.
Lectura de datos transaccionales, se trata de obtener, mediante consultas SQL la información que se necesita de la base de datos transaccional. La primera carga de datos, suele ser la más "difícil" ya  que los datos pueden encontrarse en distintos formatos.
Integración de datos, consiste en la unión de datos de distintas fuentes, detectar cuándo  representan  los  mismos  objetos  y  generar  las  referencias  y  restricciones adecuadas para conectar la información y proporcionar la integridad de referencias.

A veces necesitarás crear tablas de paso o intermedias para cubrir los datos fuentes o destino, veamos la figura 3 y 4:


Figura 3: Vista del área del STAGE en el lado de la fuente u origen.



Figura 4: Vista del área del STAGE en el lado destino.

En la figura 3, puedes a veces necesitar mantener una tabla intermedia que te permita solucionar algunos temas en los datos origen para posterior cargar al destino. Por ejemplo, tabla intermedia para cargar fechas.

En la figura 4, al contar con la tabla intermedia se aprovecha en las cargas iniciales, otro STAGE que permitirá carga los datos intermedio  origen al destino en otra tabla intermedia en modelo dimensional (DM). Luego transformas los datos de la tabla intermedia del STAGE DM (destino) cargando los datos a la dimensión correspondiente, por ejemplo, D_TIEMPO, con sus transformaciones correspondiente.


Integration Services en Business Intelligence Development Studio

Business Intelligence Development Studio es el entorno que utilizaré para desarrollar los paquetes para la extracción, transformación y carga (ETL) de datos sobre el proyecto Integration Services.

Primer paso crear el proyecto, File - New - Project (figura 5)

Figura 5: Crear el proyecto

Después, en tipo proyecto, selecciona Business Intelligence Projects y se lista los Templates, selecciona Integration Services Project, crear un nombre del proyecto. En mi caso "ETL_ABC".


Figura 6: Vista de la solución

En SSIS Packages  se crean los paquetes, en este caso, la carga inicial del ETL. Donde dice Package.dtsx, renombrar por ETLInicial.dtsx


Figura 7: Vista de diseño

En la vista de diseño, en la parte inferior de tu ventana, se tiene el administrador de conexiones a las fuentes de datos. Hace un clic con el botón derecho de tu mouse y selecciona New OLE DB Connection... luego elije "Data connections", selecciona tu fuente de datos, en este caso "localHost.BDABC". Repite lo mismo para base destino DMABC. En la figura 8, debe quedar lo explicado.

Figura 8: Conexiones creadas


En la figura 9, la vista de diseño inicia con Control Flow:

Figura 9: Vista de diseño


En la lista de flujo de control (Toolbox), se listan varios Ítems, selecciona "Data Flow Task" y arrastrar a la vista de diseño. (figura 10)

Figura 10: Vista creada del flujo de control, fuente de datos.


En Data Flow Task, doble clic y cambia el nombre, en mi caso "Carga Comuna". Luego seleccionado el control de flujo, botón derecho y "Edit", se cambia a Data Flow, Ver figura 11.

Figura 11: Data Flow Task - Transformación de flujo de datos

Estando en Data Flow y la tarea de flujo de datos seleccionada "Carga Comuna", debes seleccionar en Data Flow Sources, OLE DB Source y arrastrar a la vista de diseño en Data flow, explico en la figura 12.

Figura 12: Definiendo fuente origen tabla comuna.

-Se selecciona "OLE DB source" en ToolBox y se arrastra a la vista de diseño en Data Flow.
-Clic botón derecho en "OLE DB Source" en Data Flow y en la ventana nombrada como "OLE DB Souce Editor", debes seleccionar en "OLE DB connection manager" tu fuente de datos, en este caso es BDABC, en caso que no se liste ninguna, hace clic en NEW... para crear tu origen de datos. Pero recuerda que se hizo, ver figura 8.

En "Data access mode" selecciona "SQL Command". En este caso es necesario ya que en la fuente de datos no tenemos la tabla comuna, solo los datos están contenidos en la tabla CLI y ENVIODESPACHO. Explico:

El siguiente SQL permite buscar las comunas y su código asociado registradas en la tabla ENVIODESPACHO y CLI. Ver figura 6 del artículo anterior. (1/3)

SELECT DISTINCT enviodespacho.id_comuna, cli.des_comuna
FROM  CLI, ENVIODESPACHO
WHERE CLI.ID_CLIENTE = ENVIODESPACHO.ID_CLIENTE

Clic en Preview para validar los datos fuentes. Figura 11.

Figura 11: Lista previa de los datos fuentes


Realizado esto, debes ir a ToolBox y busca la tarea nombrada "Data Conversion", este permite convertir o transformar los datos fuentes a los datos destino. Mira  la figura 12, 13 y 14.


Figura 12: Crear en Data Flow Transformation..

En la figura 12, seleccionado "Data Conversion" y arrástralo a la vista de diseño.
Figura 13, realiza las conexiones entre ambos objetos, debes seleccionar la flecha verde y arrastrarla hasta llegar a "Data Conversion". El resultado debe quedar como se visualiza en la figura 12.

Figura 13: Crear las relaciones entre ambos objetos.

Figura 14: Data Conversion se configura.

Selecciona entonces DATA CONVERSION y clic botón derecho, luego clic en EDIT, se abre la ventana de la figura 14, se seleccionan las columnas deseadas, en este caso todas (id_columna y des_comuna). Esta estructura nace de la salida generada en "OLE DB Source" de SQL Commands. Seleccionadas, automáticamente se incorporan en el detalle de la ventaba "Data Conversion Transformation Editor". Los tipos de datos deben ser del mismo tipo que la tabla de destino que recibirá estos datos de la fuente. Debes seleccionar el tipo correspondiente en la columna "Data Type" y valida en la columna Length el largo del atributo fuente con el atributo del destino. Es decir des_comuna destino el largo debe ser mayor o igual al largo del atributo des_comuna origen.

El siguiente control recibirá los datos fuentes mapeados en Data Conversion. Selecciona desde ToolBox, en Data Flow Destination y OLE DB Destination y arrastra a la vista de diseño, colocar debajo de Data Conversion. En OLE DB Destination del objeto recién ubicado, clic botón derecho y clic en EDIT. Ver figura 15


Figura 15: Creando flujo dato destino.

Selecciona en "OLE DB Connection manager" la fuente destino, en este caso DMABC. Luego selecciona en modo de acceso de la tabla, Table or view - fat load. Se listarán todas las tablas asociadas DMABC. En este caso selecciono D_COMUNA. Esto permite que los datos de origen se almacenarán en el destino D_COMUNA. Luego clic en "MAPPINGS", ver figura 16.

Figura 16: Creando flujo dato destino.

Debe seleccionar de las columnas de entradas disponibles las nombradas que están registrada en DATA CONVERSION, en este caso, Copy of id_comuna y Copy_of des_comuna. Arrástrala en  cada una a las columnas destino donde corresponda. Esto proviene de la figura 14.

Terminado esto, ejecutemos la primera depuración a la  carga origen al destino, para ello hace clic en "Star Debugging". Al iniciar el proceso ETL, los controles deben cambiar de blanco a amarillo y quedar en color verde y si hay uno en rojo, hubo una incidencia. Ver figura 17.

Figura 17: Estado de la ejecución del flujo trabajo "Carga Comuna"


Realiza el mismo paso para todos los demás flujos de control. Como tienes la Carga Comuna creada, debes crear Carga CALLE y luego crear la relación, solo hace clic en la flecha verde y arrástrala hasta el control Carga CALLE, entre Carga COMUNA, y Carga CALLE y así sucesivamente para el resto.Ver figura 18


Figura 18: Se crean los flujos de control para cada tabla fuente.

Finalizado todo y validado que esté todo ok, ejecuta  todo el ETL Inicial desde "Star Debugging".
Cada control cambia de color pasando de blanco a amarillo (ejecutándose)  a verde (listo) y si uno queda en rojo es porque hubo una incidencia. Todos deben quedar en color verde.
Debes revisar tus datos destino versus los datos fuentes. Esto lo puedes hacer contando los registros fuentes y destino o en la depuración de cada control, te muestra la cantidad de registros procesados en el origen y luego los registros cargados en el destino. Te deben quedar con la misma cantidad.


Te dejo, los comandos SQL que me quedaron en el EtlInicial.dtsx origen correspondientes:

Origen de las calles: carga destino D_CALLE
SELECT   DISTINCT  enviodespacho.id_calle, cli.des_calle
FROM  CLI, ENVIODESPACHO
WHERE cli.id_cliente = enviodespacho.id_cliente

Origen Tipo Cliente: carga destino D_TPCLIENTE
SELECT  id_tp_cliente, des_tp_cliente
FROM tipo_cliente

Origen Producto: carga destino D_PRODUCTO
SELECT DISTINCT    id_pro, des_prod
FROM producto

Origen Fecha o Periodo o Tiempo: carga destino D_TIEMPO
SELECT DISTINCT rank() over (order by fecha_despacho desc) as Secuencia  
, fecha_despacho AS Fecha_Despacho, YEAR(fecha_despacho) AS ANO,
MONTH(fecha_despacho) as MES, DAY(fecha_despacho) as DIA
FROM         enviodespacho
GROUP BY fecha_despacho

En la siguiente figura en Data Conversion, como me ha quedado la transformación hacia la tabla destino D_TIEMPO.


Mira como me quedó en el OLE DB Destino en el mapeo.




Origen Despacho:  carga destino H_DESPACHO
SELECT p.id_pro,c.id_tp_cliente,f.id_tpo,e.id_comuna,e.id_calle,e.id_cliente,e.valor_cobrado,1 as cantidad
FROM CLI C, ENVIODESPACHO E, producto p, tipo_cliente t, envioproduco ep, 
     dmabc.dbo.d_tiempo f
where c.id_cliente = e.id_cliente and
      ep.codigo_cliente = e.id_cliente and
      e.fecha_despacho = ep.fecha_despacho and
      ep.id_pro = p.id_pro and
      c.id_tp_cliente = t.id_tp_cliente and
      e.fecha_despacho = f.fecha_despacho

Mira como me quedó en el OLE DB Destino en el mapeo.




Revisando los datos destino en la base de datos DMABC, han quedado registrado en forma correcta. En la siguiente figura, se observa desde SQL Server Management Studio el listado de datos de cada tabla.

-select * from d_calle
-select * from d_comuna
-select * from d_producto
-select * from d_tiempo
-select * from d_tpcliente
-select * from h_despacho


Lo que hice fue crear el ETLInicial, falta el ETLIncrementar, eso lo veremos en otro artículo de investigación. Acá tenemos el Inicial.

Resumen de lo visto en la Carga Inicial.

La preparación se realiza para cada fuente y consiste en:

-la extracción de datos
-limpieza de datos
-conversión de datos
-el almacenamiento de datos

Integración de datos consiste en:
-la reconciliación de datos provenientes de fuentes heterogéneas
-la generación de las relaciones

Las cargas Incrementales no deben afectar la integridad de los datos presentes.

Que nos queda para finalizar, crear nuestro CUBO OLAP.  Como hoy es sábado y el día está espectacular debo salir :)

Pronto subo el último artículo de este trabajo. Nos vemos... y gracias por sus comentarios y sugerencias.

Dudas a lpizarrofx@gmail.com


































































































































Enviar mensaje por Correo en forma secuencial

Hola estimados(as) Hoy les dejo un código en Java que permite enviar correos, usando una base de datos, por ejemplo Mysql. Lo que adjunto...