El factor humano

9 06 2008

Realmente no sabía como titular este post y aún no lo sé. Esta vez la cosa no tiene que ver con cubos sino con las personas.

En esto de ser consultor muchas veces hay que decir muchas cosas… ¿cómo decir que no?¿cómo decirle a un cliente que me he equivocado o qué a lo mejor él está en un error?¿cómo debo de contestarle a un cliente?¿cuál es la mejor manera?¿cómo dar una mala noticia?¿como escuchar?¿mi proyecto está fracasando por las peleas o envidias en el equipo?¿cómo ganar una discusión?¿debo de llamarle la atención a alguien?

¿cómo debo manejar esa situaciones para los que nadie nos preparó y para las que no hay respuestas en MSDN, OTN o Google?

Conozco un libro: “Como ganar amigos e influir sobre las personas” de Dale Carnegie que a mí en lo particular me ha sido de gran ayuda para  esas situaciones. Este libro me ha enseñado (pero que no aprendido) que algunas veces es mejor comenzar la semana preguntándole al cliente como van sus pequeños en la escuela que como va el proyecto.

comoganar1 

Uno no se puede explicar por qué nadie enseña estas cosas en la escuela

Es un gran libro. Se los recomiendo.





Deshabilitando el drill down por usuario

3 06 2008

Algunas veces se requiere deshabilitar el drill down a un usuario. Podrá ver los escenarios o tableros de control pero no queremos que navegue en la información. Para hacer esto en la sección de seguridad de Artus Administrator localizamos el usuario que deseamos restringir, le damos doble click y deshabilitamos el drill down.

EnablingDrillDown

Hay que hacerlo en 2 secciones. La primera deshabilita la expansión de los renglones en las tablas. El segundo deshabilita el drill downn o análisis empresarial a nivel celda.





Notación BI

30 05 2008

Todavía existo y me la he pasado documentando.

Hay muchas cosas que podemos platicar acerca de la documentación pero de todas ellas siempre me llama la atención lo difícil que es documentar procesos en un data warehouse. Hay que describir paso por paso las cosas por ejemplo “…el presupuesto total se multiplica por el % de participación de los productos dentro de cada cliente…”, “el desglose de las ventas por cliente” o algo así (además de dibujar el respectivo diagrama para respaldar las palabras).

Confieso que soy ingeniero en otra cosa y de sistemas no estudié nada. Pero eso sí vimos matemáticas y matemáticas a lo bestia y si algo era fácil ahí era describir algo con simples símbolos. Así que para facilitarme la vida me he atrevido a proponerles estas cosas.

Para representar una métrica desglosada por una dimensión podemos usar

image

Donde el indicador es ventas y el subíndice Cliente representa la dimensión por la que se desglosa la métrica.

image

De esta forma podemos representar un porcentaje de participación. Las Ventas desglosadas por cliente dividido entre el total de ventas me dá como resultado con cuanto participa cada cliente en el total. Si el indicador no lleva subíndice representa el total de la métrica.

Mientras documentaba requería representar el % de participación que tienen los productos dentro de cada cliente.

image

Al usar un subíndice compuesto puedo representar un desglose por 2 dimensiones (lado derecho). En el lado izquierdo léase como el desglose del % de participación por producto dentro de cada cliente (que no es lo mismo que el simple % de participación por producto).

Un prorrateo donde el presupuesto se tiene a nivel región pero hay que explosionarlo a nivel producto (SKU) utilizando la historia existente en el datawarehouse me quedó:

image

Mientras más le rasco más útil me parece y más sencillo se me ha hecho documentar. Claro, hay mil cosas para donde irse …¿…como represento Ventas año pasado?¿las ventas del último periodo antes del cierre? Tampoco soy un experto y habría que resolver las distintas interpretaciones que diferentes personas les damos a a las cosas

¿ustedes que piensan?¿será útil?¿alguien conoce algún método parecido y me estoy inventado el hilo negro y complicando la vida?¿será mejor usar el método de las bolitas y de los cuadritos?

Por lo pronto creo que me urge el fin de semana… Nerd





¿Qué es una dimensión?

19 05 2008

Es aquello por lo que podemos desglosar un indicador o métrica.

Picture1

Algunas herramientas permiten crear dimensiones con múltiples niveles, otras dimensiones virtuales, otras con padres e hijos, otras de solo un nivel (etc., etc.) pero todas ellas para propósitos prácticos sirven para la misma cosa: para desglosar el indicador.

Algunos ejemplos de dimensiones pudieran ser: tienda, departamento, familia y producto si estamos hablando de un cubo de ventas supermercados. Departamento, puesto y empleado si estamos hablando de un cubo de recursos humanos. Cuenta, centro de costos y empresa para un cubo de finanzas.

Por desglosar no me refiero a por ejemplo desglosar el Margen en Ventas – Costo – Gastos (ventas menos costo menos gasto). NO, eso es descomponer un indicador o métrica en otros indicadores. Más bien se refiere a los cortes o agrupaciones en la información para dicha métrica.





Optimizando el tiempo de respuesta de Microsoft Analysis Services con Artus

7 05 2008

Hoy por la mañana revisábamos un indicador en Microsoft Analysis Services (AS) cuyo tiempo de respuesta al desglosarlo a nivel cliente era de varios minutos; finalmente lo dejamos en segundos.

La fórmula de dicho indicador era como esta:

iif( [Measures].[Ventas] = 0,0,1- ([Measures].[Ventas]/[Measures].[Costo])

La fórmula regresa un cero para todo aquello cuyo costo es cero. Cuando Artus lee el resul set que mostrará, por default se trae todos los valores NON_EMPTY (así es como le solicita los registros a AS: NON EMPTY). Para la fórmula anterior si el costo es cero la fórmula devuelve un cero; cero es NON_EMPTY por lo tanto AS lo incluye en el result set y Artus lo lee.

Por otra parte, Artus por default solo muestra aquellos valores del indicador que no son cero, hay que en propiedades de la tabla activar Mostrar Ceros.

¿Qué es lo que estaba pasando? Que el indicador tenía miles de registros con valor cero que como quiera se estaban calculando y además Artus los estaba leyendo, como por default no los mostraba (los ceros) nunca nos dábamos cuenta.

Dándonos cuenta de lo que estaba pasando, modificamos el indicador:

iif( [Measures].[Ventas] = 0,NULL,1- ([Measures].[Ventas]/[Measures].[Costo])

Al devolver un NULL, los AS toman este valor como EMPTY  por lo que no se incluye en el result set y además Artus no lo lee. Resultado, ahora AS preparaba un result set mucho más pequeño (lo que le toma menos tiempo y menos memoria) y Artus solo lee los 10 o 20 registros con valor.

El tiempo de respuesta quedó en segundos.

Otro método para obtener lo mismo, es clic derecho sobre el cubo y en preferencias activar excluir ceros y nulos. Este método de “por la fuerza bruta” activa esto a nivel cubo.

ExcluirCeros

Es mejor el primer método que este segundo. Por que este es global y ocultaría los ceros para todos los indicadores.





¿lo pongo en la tabla de hechos?

6 05 2008

image

Muy a menudo las personas se hacen esta pregunta al tratar de decidir que es más rápido y/o conveniente para los indicadores calculados, por ejemplo para el siguiente indicador:

Precio Promedio = Ventas / Unidades

No hay que perder de vista que si ponemos un indicador en la tabla de hechos, tendremos que usar una fórmula de agregación para obtener el valor. En el caso de las ventas tendríamos:

select sum(ventas) from HechosVentas

Si el precio promedio lo calculo y lo almaceno en la tabla de hechos para leer su resultado tendría que usar una fórmula de agregación. El precio promedio es un indicador que me dice en promedio a cuanto vendí cada unidad por lo que si quiero obtener el precio promedio global debiera utilizar:

select avg(PrecioPromedio) from HechosVentas

El average es el promedio aritmético y tiene el problema que le da el mismo peso a las ventas pequeñitas que a las grandes, en otros palabras el valor se distorsiona demasiado. Lo mejor sería usar:

select sum(ventas)/sum(unidades) from HechosVentas

Así como ven, guardar este indicador en la base de datos hace que se distorsione mucho el valor por lo que no es conveniente calcularlo y almacenarlo en la base de datos. Hay otros tipos de calculos en donde si es posible y hasta conveniente almacenarlo. Tome en cuenta todas estas posibilidadades al momento de decidir si materializará físicamente el indicador en una columna de la tabla de hechos o le conviene más crear un indicador lógico.





Ejecutando un análisis empresarial con un enlazador

5 05 2008

Es posible mandar a llamar un análisis empresarial o navegación flotante desde un enlazador. Primero necesitamos obtener la navegación flotante por ejemplo esta:

Enlazador1

Una vez que la tenemos en la pantalla ahora ponemos un enlazador en el escenario (no cierre la consulta, solo muévala ade lugar un poco mientras coloca en enlazador en el escenario); dé click derecho sobre en enlazador

Enlazador2

y seleccione “guardar análisis empresarial”

Enlazador3

Oprima aceptar y listo. Ahora en enlazador abrirá la consulta al darle un click. Recuerde que en el diseñador tiene que darle 2 click para que funcione no así en Artus Desktop. Si desea que la consulta reciba como parámetro el filtro de tiempo o los filtros de dimensión que están en el escenario, estos filtros deben de sincronizar al enlazador








Seguir

Get every new post delivered to your Inbox.