Mostrando entradas con la etiqueta Excel. Mostrar todas las entradas
Mostrando entradas con la etiqueta Excel. Mostrar todas las entradas

viernes, 31 de mayo de 2013

GeoFlow Preview para Excel 2013

Excel se está consolidando como una poderosa herramienta para consumo y análisis de datos, especialmente en el ámbito del Business Intelligence personal o Self-Service BI. En la versión 2013 ya tiene integradas de forma nativa la tecnología xVelocity, el add-in PowerPivot y Power View. Pero además  Microsoft ha hecho pública la preview de un nuevo complemento que nos permitirá representar nuestros datos posicionándolos geográficamente, en un entorno de visualización tridimensional con un interfaz de usuario que se enmarca perfectamente dentro del estilo Office. Estamos hablando de GeoFlow, aunque quizás este nombre cambie más adelante.

Este complemento utiliza mapas de Bing y renderiza los datos que pueda ubicar a través de coordenadas o nombres de ciudades estados, provincias y países y nos permitirá realizar análisis, detectar patrones, obtener una vista en forma de secuencia cinematográfica a través del tiempo, etc..

Ya puedes descargarte e instalar esta versión

Llevaba algún tiempo queriendo conocer más acerca de este producto, ya que se han ido publicando algunas cosas (http://sqlserverbiblog.wordpress.com/2013/03/05/sql-server-community-world-tour-with-geoflow/) en la red antes de que se hiciera pública esta preview.

Por fin he tenido oportunidad de instalarlo y probarlo, y ciertamente es muy sencillo de manejar para crear presentaciones realmente impresionantes.El unico requisito fundamental es contar con un rango de datos dentro de Excel que contengan información que permita posicionar los datos en un mapa, como mencionamos arriba, a través de coordenadas o nombre de la ubicación. Para hacer mis primeras pruebas con GeoFlow he utilizado un pequeño conjunto de datos con los Tweets que se han publicado desde el día 14/03/2013  y que contienen las palabras @SolidQ, @SolidQEs, @SolidQIT, #SQSummit13 y #SolidQ.

Cuando pensé en utilizar este conjunto de datos no esperaba unos resultados positivos, ya que la mayoría de los tweets no tienen una localización muy clara. Aunque muchos usuarios tienen activado el uso de la geolocalización al publicar los tweets, esta información no siempre se encuentra registrada en el tweet. De forma que la unica forma viable que encontré de poder posicionar los datos fue por la propia localización del usuario, aquella que se configura en el perfil…. y en dónde se puede poner lo que uno quiera:

image

Como se puede comprobar en las columnas TweetLatitude y TweetLongitude encontramos un hermoso 0, aunque la columna UserGeoEnabled tenga un valor TRUE. Por tanto nos quedamos con la columna UserLocation y vamos a ver que es capaz de hacer GeoFlow con esa información.

Una vez hemos descargado e instalado el complemento, en la cinta de Insertar  de Excel aparece el grupo GeoFlow, que contiene un solo botón con dos comandos: Iniciar GeoFlow y Añadir datos seleccionados a GeoFlow, e inicialmente solo aparece activado el primero:

image

 

Si lanzamos GeoFlow nos aparecerá una ventana con cuatro areas.

  • En la parte superior disponemos de la cinta Inicio, con las opciones disponibles: cambiar el tema del mapa pudiendo seleccionar un mapa geográfico o político con distintas iluminaciones, insertar gráficos o cajas de texto, añadir capas, buscar geolocalizaciones, capturar la vista mostrada, etc..
  • El panel de escenas del “tour”, situado a la izquierda. A través de este panel podemos seleccionar y configurar las distintas escenas que componen nuestro “tour”
  • El panel de tareas, desde el que podremos configurar el elemento seleccionado, ya sean las propiedades de las escenas o las distintas capas visuales que podemos añadir al mapa.
  • Y por fin el área central, dónde figura el globo terraqueo y en el que podemos visualizar los datos geo posicionados y animaciones a través del tiemp que vayamos configurando en las distintas capas.

 

image

En una misma escena podemos tener varias capas y en cada capa configurar una visualización de datos. Para mis pruebas he utilizado una sola escena con dos capas, en la primera capa muestro columnas agrupadas con número de tweets que se van produciendo a lo largo del tiempo, y para crear los grupos utilizo la palabra asociada (@SolidQ, @SolidQEs, @SolidQIT, #SQSummit13 y #SolidQ). En la segunda capa mostraré el número de usuarios que están publicando esos tweets, y el lenguaje que tienen configurado.

Por defecto nos aparecerá una capa, Layer1, a la que podemos cambiar el nombre a través del panel de tareas pulsando el botón image que encontramos en la parte superior del panel. Desde aqui podemos elegir si se muestra o no cada capa, configurarla o eliminarla. La siguiente imagen muestra una breve descripción de la función de cada botón que encontramos en el panel de tareas cuando seleccionamos la vista de capas:

 

image

 

Una vez tenemos establecido el nombre de la capa, accedemos al botón 'Configuración de datos de la capa’ y veremos la lista de campos disponibles. Esta lista de campos depende de las tablas que existan en el modelo de datos del libro Excel y que hayamos añadido a GeoFlow (desde el botón de la cinta Insertar).

Llegados a este punto debemos definir como se van a localizar los datos. Para ello en la parte inferior de la lista de campos vemos una sección con el título Geography. Es en esta sección dónde debemos arrastrar y solar los campos que demarcan ubicación. Para este ejemplo recordad que utilizaremos la columna UserLocation y la vamos a configurar de tipo City, y solo queda pulsar el botón Map it para poder continuar.

image

A continuación la lista de campos toma otro aspecto, en la parte superior (bajo el desplegable de selección de capas) aparece una sección con el nombre de Map by UserLocation (county) junto a un botón Edit y justo abajo un porcentaje:

image

Ese 25% siginifica que ha sido capaz de ubicar correctamente la cuarta parte de los registros utilizando el contenido de la columna UserLocation como identificadores para regiones de tipo City. No es mucho, así que me he creado una columna para insertar el país y asi subir el porcentaje de localizaciones de tipo ciudad hasta un 56%…

image

 

Lo siguiente es configurar la representación gráfica de datos en el mapa. Podemos elegir para cada capa entre gráficos de tipo columnas (agrupadas o apiladas), burbúja o mapa de calor, pero antes vamos a añadir datos a las distintas secciones: Height (peso), Category (categoría) y Time (tiempo).

  • Height: Asignamos la columna TweetID y se cambia la función de agregación por Count() en lugar de Sum(). Esto hará que las columnas crezcan según el número de tweets.
  • Category: Arrastrar la columna TokenWord para que por cada una de las palabras clave cree una columna.
  • Time: En esta sección añado la columna Created_at que representa la fecha de publicación del tweet. Una vez añadimos el campo a la sección aparece un menú desplegable que nos permite cambiar la unidad en que se mostrará la linea de tiempo. Además podemos cambiar la configuración de tiempo en Time Settings haciendo posible que cuando se visualicen los datos a través de la línea de tiempo, se representen de distintas formas
    • Instant: Se mostrarán los datos correspondientes a cada momento del tiempo según se avance.
    • Time Accumulation: Se mostrará un crecimiento paulatino acumulando los valores segun avance el tiempo.
    • Persist the Last:  Muestra el último valor para el periodo y avance.

image

 

Si pulsamos el botón de reproducción en la línea de tiempo, podemos observar como se representan los datos según la configuración que hayamos puesto para el tiempo. Además se puede controlar el ritmo al que avanza esta linea de tiempo y acotar los margenes entre el rango de fechas existente, a través del botón de configuración que encontramos en la mismo control de reproducción del tiempo:

image

 

Echo en falta la posibilidad de exportar los “Tour” creados en algun formato (video, PowerPoint) o incrustar escenas en una hoja de Excel junto a otras presentaciones gráficas, además de la posibilidad de profundizar en los datos… pero aún estamos con la versión Preview Sonrisa

domingo, 24 de junio de 2012

SSIS Cargando archivos Excel

 

Siempre hay quienes comienzan a hacer algo nuevo y este post está dedicado a estas personas, en concreto a Claudio. Un compañero de los foros de Integration Services en castellano que se preguntaba como podía conseguir resolver su proceso mediante paquetes ETL de SSIS.

 

Escenario

el asunto es que yo tengo una consulta, esta consulta me trae unos datos los cuales los tengo que poner en un excel con la fecha de la generacion y enviarlo a una persona, la idea es crear un paquete que permita mediante algun proceso crear el archivo excel con el nombre del dia(ejemplo ventas_19-06-2012.xls), mas que nada seria para automatizar un par de tareas que debo realizar diariamente

 

Una Solución

Por que siempre hay varios caminos para llegar al mismo sitio. Para este caso he sugerido utilizar una plantilla de libro Excel como destino de datos, que vamos a copiar con una tarea File System para generar un nuevo archivo con la fecha de la consulta que será el destino de los datos obtenidos mediante la misma (consulta)

Vamos con los detalles…

Es nuestro paquete ETL añadimos un DataFlow, con un origen OLEDB source con la consulta que vamos a realizar contra el origen de datos. Para esta entrada utilizaré la base de datos AdventureWorks para realizar esta consulta:

SELECT [ProductID],[Name],[ProductNumber],[MakeFlag],[FinishedGoodsFlag],[Color]
FROM [Production].[Product]

En el archivo Excel que vamos a utilizar como plantilla creamos las columnas necesarias para mapear con los datos de origen:

image

Hay que tener clara la versión de Excel a utilizar, dependiendo de esto podremos utilizar el componente Excel Destination (hasta Excel 2007) o nos veremos obligados a utilizar OLEDB Destination en caso de Excel 2010. En este caso la versión es 2007.

Añadimos un componente Excel Destination. Conectamos la salida de datos del OLEDB Source a la entrada del destino Excel y editamos este componente para establecer el archivo destino y el mapeo de datos.

Creamos una nueva conexión que apuntamos al archivo plantilla:

image

Una vez finalizada la conexión realizamos el mapeo de datos entre las columnas del origen de datos y el archivo Excel:

image

Y finalizamos la edición del componente de destino. Hasta ahora fácil, no hemos hecho nada especial para generar archivos dinámicamente en función de la fecha pero hemos conseguido establecer los metadatos que necesitan los componentes en el flujo de datos.

En las propiedades de este componente (en el panel de propiedades, F4 teniendo seleccionado el componente Excel Destination), hay que cambiar la propiedad ValidateExternalMetadata a false. Es importante este cambio para poder ejecutar el paquete sin que exista previamente el archivo sobre el que vamos a volcar los datos:

image

El siguiente paso es cambiar algunas propiedades en el administrador de conexión del archivo Excel, en concreto vamos a poner la atención en Delay Validation, que vamos a establecer a True. Observar la propiedad ExcelFilePath, que modificaremos más adelante mediante una variable que proporcionará el nombre de fichero para cada ejecución a través de Expressions:

image

Nos volvemos a la pestaña de ControlFlow y creamos una variable para generar el nombre del archivo en cada ejecución. Para esto hay que asegurarse de que tenemos seleccionado el lienzo y no el componente DataFlow que añadimos antes, para que el ámbito de esta variable sea del alcance de todo el paquete. Para acceder al panel de variables puede hacer clic derecho sobre el lienzo y seleccionar la opción variables. Crearemos la variable vNombreArchivo de tipo string y sin asignación de valor:

image

Seleccionamos la variable y pulsamos F4 para mostrar su panel de propiedades. En la propiedad EvaluateAsExpression seleccionamos el valor True y en Expressions vamos a añadir una expresión que conformará el valor de esta variable

image

En el editor de expresiones generamos una para construir un nombre de fichero en función de la fecha de proceso. Yo he utilizado la siguiente:

"C:\\Consultas2Excel\\Consulta_" + (DT_STR,20,1252) ( (DT_I8) (YEAR( @[System::StartTime] )) * 100000000 + MONTH(@[System::StartTime])*1000000 + DAY(@[System::StartTime]) * 10000 + datepart("hh",@[System::StartTime] ) * 100 + datepart("mi",@[System::StartTime] )   ) + ".xlsx"

image


Ya tenemos un nombre dinámico para nuestro fichero destino. Ahora solo falta que ese fichero exista y lo vamos a conseguir con una tarea File System Task que añadimos al ControlFlow y establecemos restricciones de precedencia, conectando la salida de ejecución correcta de File System Task con el DataFlow que ya teníamos:


image


Editamos la tarea File System para modificar sus propiedades. Lo primero es asegurar que la operación es Copy File. Establecemos los siguientes valores por propiedad






















PropiedadValor
OperationCopy File
IsDestinationPathVariableTrue
OverwriteDestination(evaluar la necesidad de sobreescribir el archivo de destino si existe en la operación de copia)
IsSourcePathVariableFalse
SourceConnection(Nueva conexión a nuestro archivo plantilla) c:\PlantillaDestino


image


En el panel de conexiones, buscamos la conexión a Excel que utiliza nuestro destino en el DataFlow y accedemos a las propiedades, en concreto Expressions y añadimos una expresión para la propiedad ExcelFilePath. Escribimos @[User::vNombreArchivo]


image


Y listo!


Ya tenemos un paquete que lee datos de una consulta y lo vuelca en un fichero Excel nuevo que genera en cada ejecución:








imageimage
 image


 


Conclusión


Como también vimos en la entrada SSIS Dinamizando propiedades de componentes, el uso de variables facilita en gran medida operaciones de asignación dinámica de propiedades de componentes, tareas, DataFlow, ControlFlow… Además, podríamos utilizar configuraciones de paquetes (en package deployment model) o parámetros y entornos (project deployment model) para exponer estas variables y asignarles valor previa ejecución del paquete.


Si tienes cualquier duda o quieres obtener el paquete ETL  desarrollado durante esta entrada, deja un comentario.

jueves, 2 de febrero de 2012

Excel conectado a Analysis Services y la propiedad MDX Missing Member Mode (introducción)

 

Introducción

Encontramos muchas veces Excel como herramienta que los usuarios utilizan para pre cocinar datos, crearse informes, navegar cubos… En esta entrada voy a compartir una experiencia reciente, en un escenario en el que Excel es la aplicación cliente para mostrar datos de un cubo, algo bastante común. Lo que no resulta tan común es Excel muestre un error cuando puedo ejecutar la misma consulta MDX en SQL Server Management Studio

Para los ejemplos vamos a utilizar la base de datos OLAP Adventure Works DW 2008R2 que puedes descargarte desde Codeplex y una instancia de SQL Server Analysis Services 2008R2, pero el planteamiento es válido para las versiones posteriores a SQL Server 2000.


Este artículo ha sido publicado en el blog BICorner de SolidQ. Pulsa aquí para continuar leyendo.

jueves, 21 de julio de 2011

MDX: Implementar recta de Regresión Lineal

 

Introducción

En muchos escenarios nos puede resultar útil poder predecir valores, por ejemplo la cantidad de ventas estimadas para el próximo año de un determinado producto. Hay muchos factores que pueden determinar esa estimación y la mejor forma de dar esa respuesta es el análisis de todas las variables posibles y crear un modelo de minería de datos. Pero, ¿y si la predicción que queremos realizar sobre una serie de valores sólo depende de otra variable? Digamos las ventas de un producto analizadas a través del tiempo. ¿Podemos obtener una estimación para el año que viene? Si, y sin crear modelos de minería… tan sencillo como aplicar Regresión Lineal Simple

En esta entrada vamos a ver un ejemplo en el que crearemos una medida calculada en MDX que nos devuelva los valores de la recta de regresión. También veremos cómo implementar el cálculo en un informe de Reporting Services para representar esta recta. Les resultará interesante Guiño

MDX- Implementar recta de regresión lineal simple

P.D. Este artículo se publicó completo en el blog de SolidQ: BI Corner


Entradas populares