martes, 27 de junio de 2017

Envió 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 lo desarrollé en una empresa, con el fin de que avise a los usuarios que su contraseña de los sistemas va a caducar.

Uso de NetBeans.

Baja la libreria mail.jar de la siguiente url:
https://drive.google.com/file/d/0B0pUPc4ofcySR2hEZGwxVkFyUjg/view?usp=sharing

No te preocupes, es seguro, ya que lo dejé en Google Drive.
De la figura 1, crea un proyecto en Netbeans categoría Java, proyecto Java Application. En mi caso, lo nombré "controlAutentificacion"

Figura 1: Crear proyecto

Figura 2: Librería mail.jar


En la figura 2, se menciona incorporar la librería.

Luego, debes crear las clases correspondientes para así conformar el proceso del programa.

Creando una clase llamada Correo.java

En el código fuente incorpora lo siguiente:

import java.io.File;
import java.io.IOException;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.Multipart;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMultipart;

Luego, crea un método por ejemplo, llamado "correoEnvia" y hazlo como te indico acá:

 public String correoEnvia (String as_correoUsuario) {

               //as_correoUsuario, esta variable recibe el correo del usuario destinatario

        final String username = "nombreUsuariodeTuCorreo";
      final String password = "contraseñadeTuCorreo";

        correoUsuario.trim();

        String ls_mensajeFinal="";
       Properties props = new Properties();
        props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.host", "Incorpora la dirección IP de tu servidor de correo");
        props.put("mail.smtp.port", 25);

Session session = Session.getInstance(props,  new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
 });

try {

Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("incorpora el correo que verá el destinatario, ejemplo aviso@rrr.cl"));
                        //La siguiente linea permite enviar el mensaje al destinatario
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(as_correoUsuario));
                        // Mensaje que va en el asunto del correo 
message.setSubject("CAMBIO CONTRASEÑA SISTEMAS");
                        ls_mensajeFinal = "Estimado(a) " + "\n\n";
                        ls_mensajeFinal = ls_mensajeFinal + " Usted debe cambiar su contraseña..... \n";
                        ls_mensajeFinal = ls_mensajeFinal + " \n";
                        // variable que contiene el mensaje que se incluye en el correo.
                        message.setText(ls_mensajeFinal);
Transport.send(message);
System.out.println("Enviado");
                        props.clear();
} catch (MessagingException e) {
throw new RuntimeException(e);
          }
       return "ok";
  }


En la clase "Main", puede hacer esto:

import java.sql.*;
 public class Main {
    public static void main(String[] args) {
       
         String ls_correo;
         Correo email;
         email = new Correo();

         // Acá incluye el método que te permita leer los registros o filas de una tabla asociada cierto
         // en la base de datos y obtener el correo de un usuario.
         // ls_correo = buscaCorreo.ObtieneCorreo();
         email.correoEnvia(ls_correo);
         try {
                Thread.sleep(2000);
                } catch(InterruptedException e) {
         }
    }
}


Espero que les sirva
Saludos















domingo, 24 de enero de 2016

Una Ciudad Inteligente

Hola Estimados

Hoy en día hay varios proyectos asociados al estudio de soluciones en Tecnologías de Información hacia ciudades inteligentes, las cuales promueven la sostenibilidad tanto social como ambiental y ya hace rato que hay un grupo de científicos y colaboradores que desarrollan investigaciones de aplicaciones inteligentes para estas futuras ciudades inteligentes. Las aplicaciones móviles y redes sociales permiten que podamos controlar nuestro entorno de vida. En Chile hay varias aplicaciones móviles desarrolladas, cercanas a las tres mil o más, y de seguro que se puede disponer de un grupo de ellas para las futuras ciudades inteligentes, abarcando eficiencia energética de comunicaciones inalámbricas, detecciones sociales y físicas, base de datos comerciales, análisis visual, tráfico, protección y control.

Ejemplos de Proyectos

Visualización de la ciudad

Simular, planear y modelar basado en sensores que permita a los diseñadores o profesionales simular el nivel de ruido, consumo de energía o las actividades humanadas que permitan evaluar el éxito de un futuro restaurante en una lugar determinado.

Figura 1: Ciudades inteligentes 

Los  proyectos de investigación se basan en http://www.di.ens.fr/willow/

Secuencias de las actividades humanas en los entornos de una ciudad como se ilustra en la siguiente figura:

Figura 2: Secuencias de fotos actividades humanas


Urbano Educación Cívica

Si cada uno aportara con datos que permitan cuantificar y evaluar las molestias urbanas que impactan a cada uno de nosotros, podemos entonces promover acciones sociales y políticas para mitigarlas. 

Figura 3: App móvil Sound City

SoundCity es una app móvil dedicada a la conciencia de la contaminación acústica. La aplicación proporciona conocimientos directos en su exposición al ruido a través de cada hora, cada día, y los gráficos de ruidos mensuales, además de información de salud proporcionada por los bio-sensores que detectan valores de frecuencia cardíaca y permiten a la aplicación calcular los niveles de estrés.


Arquitectura de Red Inalámbrica de Sensores para un Monitoreo Intersección confiable

Un controlador de semáforo toma como entrada una estimación del número de vehículos que entran en la intersección y produce como salida un tráfico moderado, con el objetivo de reducir los atascos de tráfico. La calidad de la estimación del tráfico de entrada, es una consideración clave en el rendimiento del controlador de semáforo. El advenimiento de las redes inalámbricas de sensores, con su operación relativamente baja, condujo al desarrollo de varias arquitecturas basadas en sensores. Estos Sistemas se denominan Sistemas Inteligentes de Transporte (ITS).


Figura 4: Arquitectura basada en la Calidad del Enlace para el control de semáforo

De la figura 4, se tiene la solución basada en la Calidad del Enlace,  los vehículos se detectan usando sensores, y los repetidores a lo largo del borde de la carretera pueden ser utilizados para mejorar la fiabilidad de la obtención de datos, los autores proponen una arquitectura WSN para la estimación del tráfico basado en el seguimiento de la calidad de los enlaces de radio, donde no se utilizan sensores de monitoreo dedicados (ver Figura 4). La idea principal de esta solución es que el flujo de vehículos influye en la calidad del enlace de radio entre el transmisor (TX) y su asociado receptor (RX). Ambos están instalados en los dos lados de la carretera a una altura de 0,5 m. Recibida la  intensidad de la señal Indicador (RSSI) medida entre TX y RX se utiliza para clasificar la condición del tráfico como flujo libre o congestionado.


Breve artículo, pero interesante lo que les dejo.

Saludos a todos.





















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

Envió 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...