Quiero que los filtros solo muestren aquellas dimensiones con movimientos.

9 09 2008

image

Por: Diana Luz Vazquez

Sí usted se preguntaba como hacerle para que Artus solo muestre en los filtros aquellos valores de las dimensiones que tengan información en la tabla de hechos, esto es de gran utilidad.

Cuando incluyo un filtro de dimensión, lo que se espera es que las opciones de valores de esa dimensión que se muestran en el filtro, sean solamente aquéllas para las que el cubo tiene datos (sobre todo para dimensiones con gran cantidad de elementos). De manera que si tengo 100 Sucursales en el CAT de ésa dimensión pero en el cubo realmente solo hay datos para 30 Sucursales, sólo quiero ver esas 30 sucursales como opción de elementos para seleccionar en el combo del filtro.

MenuCubo
Esto lo he conseguido utilizando la opción de Artus Administrador de ‘Indicador con datos para todas las dimensiones’. Para ello, lo que hago es identificar un indicador base del cubo (de entre los principales) que sabemos que siempre tiene valor. Si es un cubo de Ventas, probablemente el indicador idóneo sea ‘ImporteVta’ y así… si el cubo está distribuido, o sea que no puedo identificar 1 indicador que sé que tendrá datos para todo el cubo, lo que hago es crear uno que sea una especie de ‘Contador de Registros’ (normalmente lo incluyo directamente en la estrella como un Identity).
Finalmente lo que hago es agregar ese indicador en la definición del cubo como ‘Indicador con datos para todas las dimensiones’ (te incluyo una imagen). Lo que ocurre es que internamente en el query MDX, se valida con base en ese indicador para llenar los valores de los filtros de dimensión. Resultado: Cuando sincronices un Filtro de Dimensión con los objetos del escenario, los combos sólo mostrarán elementos de dimensión válidos (para aquellos en los que el cubo tiene datos) =D

IndDatosTodasDim
Ése indicador no tiene que ser visible en Artus Desktop, pues es sólo para uso interno

No estoy segura si también funciona para ROLAP. Lo que sí puedo decirte es que para cubos de Analysis Services, funciona muy bien y no se afecta en nada al performance de las consultas que genera el escenario.

Si, esto también funciona para los cubos ROLAP.





Creando un agregado en Artus

8 09 2008

Los agregados son tablas con la información del cubo pre-sumarizada a diferentes niveles. De esta forma cuando usted lanza una consulta la herramienta OLAP determina que es más rápido obtener la información de las tablas de agregados y no del detalle, mejorando increíblemente el tiempo de respuesta (pasando las consultas de 30 mins a 2 o 3 segs algunas veces).

Si usted está trabajando en Artus con cubos propietarios o cubos ROLAP puede utilizar los agregados propietarios de Artus.

Entremos al Administrador de Artus; dé un clic al cubo sobre el que quiere crear un agregado.

agregados

Leer el resto de esta entrada »





Como definir un cubo

5 09 2008

image

Tal vez esta sea una de las partes más complicadas sobretodo cuando uno apenas comienza. Un método que nosotros usamos bastante seguido es utilizar una matriz, por ejemplo:

Indicador/ Dimensión Tienda Producto Vendedor Ciudad
Ventas $ x x x x
Venta # x x x x
Descuentos x x x x
Nómina x   x x
Headcount x   x x

El concepto es sencillo, ponemos los indicadores en renglones y las posibles dimensiones en columnas. De esta forma visualmente tenemos la foto global de los cubos que serán necesarios construir. Normalmente aquellos indicadores que tienen exactamente las mismas dimensiones van en el mismo cubo.

Es importante que para este método usemos la dimensionalidad que técnicamente puede existir y no la funcional. Por ejemplo, para el caso de la nómina si tomamos el headcount a nivel vendedor el valor en dicho cruce será de 1 (el headcount es el # de personas que trabajan en la empresa) por lo que pareciera fácil decir que no tiene sentido el cruce y no la pondríamos, pero técnicamente es posible así que la ponemos….es más fácil hacer el cubo y en Artus esconder la dimension vendedor para el headcount que hacer un cubo con diferente dimensionalidad entre los indicadores y meterse a empatar dimensiones

Entonces, terminada la matriz, solo ponga en el mismo cubo todos aquellos indicadores que comparten las dimensiones.





¿por qué no me salen todos los valores posibles en el filtro de dimensión?

1 09 2008

image

Varias veces un usuario nos ha preguntado por qué no salen todos los valores en los filtros de dimensión.

—..solo salen los clientes hasta la letra b, faltan muchos.

Las respuesta es bien simple. Artus está programado para cargar por defecto solo los primeros 1000 valores de una dimensión en el filtro. Usted puede cambiar a su entera conveniencia dicho comportamiento pero ese es el default.

Piense ahora en un cubo de supermercados con una dimensión producto compuesta por 100,000 productos diferentes, los productos actuales mas los productos que ya no se venden pero que tienen que estar ahí por propósitos de la historia. Dado que artus trataría llenar el filtro con todos los valores posibles se tardaría bastante en leer los 100,000 productos. Además una vez que lo llene imagínese lo difícil que es buscar un producto “Jitomates Saladet” en una lista que mide 1 pulgada de alta. Al mover la barra de scroll o desplazamiento 3 milímetros pasaría de la letra h a la m.

Esta es la razón por la que solo se cargan 1000 valores, performance. De nuevo, es más rápido cargar 1000 valores que 100,000; y al usuario le es más fácil buscar un valor en 1000 valores que entre 100,000

Para cambiar el # de valores que Artus carga por defecto, vaya a Artus Administrador, localice el cubo y haga doble click en la dimensión cuyo comportamiento desee cambiar

image

Le saldrá la pantalla anterior donde podrá cambiar el 1000 por el # que quiera.

Yo en lo personal no hago esto por que se me hace impráctico y lento. Prefiero resolverlo de una manera más sencilla, funcional y práctica: poniendo los filtros en cascada.

image

Añado varios filtros y los sincronizo entre ellos. De esta manera departamento sincroniza a familia y familia a producto. Así podré seleccionar un departamento y en las familias solo me aparecerán las categorías comprendidas en ese departamento. Cuando seleccione una categoría de productos entonces me saldrán los productos que pertenecen a dicha categoría. De esta manera los filtros se cargarán rápido dado que solo cargan 1000 valores, y será mucho más fácil de encontrar lo que estoy buscando.

Si no le parece el filtrado automático puede usar la opción aplicar filtros del enlazador

image

De esta manera hasta que le dé click al enlazador Artus aplicará los filtros.

Si todo lo anterior no es suficiente entonces utilice el filtro multinivel

image

Fácil ¿nó?





Noticias

30 07 2008

uanio

¡¡Hola!!

Ha sido un mes muy pesado y he tenido muy poco tiempo para escribir. Pero hoy les tengo noticias.

  • ¡¡Este blog cumple un año!!

Hace un año que empecé a escribir. El tiempo se ha pasado volando. Ha sido maravilloso poder compartir con todos ustedes en este espacio los temas que más les apasionan y que todos ocupamos. No siempre ha sido fácil, a veces he tenido días difíciles pero siempre ha sido hecho con gusto. Quiero agradecer a todos y cada uno de ustedes que con sus comentarios me han hecho seguir adelante. Mil gracias a todos, tenganme paciencia y prometo contestar los comentarios que están pendientes.

¿Y eso que tiene que ver? Tiene muchas implicaciones.

Finalmente se me concedió volver a la tierra que tanto extrañaba (o sea que soy Yucateco! ) así que los fines de semana me esperaran la playa Island with a palm tree, el sol Cool, unas cañas de pescar, las pirámides de chichen itza …je,je,je, es para darles envidia :D .

Ya, en serio, en serio: Ahora formo parte de BITAM LA y desde Yucatán estaré apoyando a nuestro canal de distribución y clientes en latinoamerica. No ha sido fácil, después de 13 años en BITAM Monterrey he dejado muchos amigos maravillosos que me han enseñado todo lo que sé. Muchos son lectores de este blog. Reciban todos ustedes mi agradecimiento por todos estos años que hemos compartido juntos, por las anécdotas, los buenos y momentos. Un abrazo a todos.

  • ¡¡visita a Brasil!!

La siguiente semana estaremos en Sao Paulo, Brasil. Es la primera etapa de mi nuevo rol el cual pinta ser emocionante y excitante. Les aseguro que pondré todo de mi parte para que dicho entrenamiento sea un éxito!! Así que si alguien se anima a tomar una cerveza en Sao Paulo por las tardes y platicar de cubos y BI ya saben.

Finalmente las disculpas, pero entenderán que ha sido un mes pesado, cambiarme de área, entregar los zapatos y cambiar de ciudad no ha sido fácil. Les reitero mis disculpas y se las pido de nuevo por anticipado ya que no creo poder escribir estos días… tengo que echarle muchas ganas a mi curso rápido de portugués.

un saludo.





¿Qué va en una dimensión?

30 06 2008

image

Varias veces me ha ocurrido que al trabajar con un data warehouse me encuentro con que en la dimensión producto viene todo lo imaginariamente posible. Por ejemplo, si estamos hablando que si la información viene de un sistema de dulcería, en el catálogo de productos vienen todos los productos vendibles en ella: paletas, dulces, refrescos, palomitas o rosetas de maíz, chocolates, etc.

… pero también vienen escobas, el detergente para lavar los pisos, el aceite para el maíz inflado, los vasos desechables y hasta el papel higiénico del baño.

¿Qué sucede? Pues que el sistema sirve tanto para vender que como sistema de inventarios o almacén. Así que el catálogo de producto almacena todo.

Pregunta ¿entonces en un modelo de ventas de dulcería, la dimensión de productos deberá tener todos estos artículos aunque no se vendan?

Yo creo que nó.

Creo que lo correcto es crear 2 dimensiones: productos y materias primas. Los 2 se llenarán a partir del único catálogo de productos. Debemos extraer solo aquello que tiene que ver con ventas y depositarlo en el modelo de ventas. Lo otro irá al modelo de inventario o almacén.

Recuerden que a la información de un data warehouse o cubo “se le habrán aplicado procesos de transformación y limpieza”.





Llaves surrogadas o sustitutas.

12 06 2008

image

Esta es una de las buenas prácticas que a mi juicio muchas veces se omiten en el diseño de un data warehouse. Las llaves surrogadas o sustitutas son una llave generada artificialmente y que viene a sustituir el campo llave de la dimensión.

Para ponerlo en bits y bytes, lo que hacemos es diseñamos la tabla de tal forma que la llave primara sea un campo con un tipo de dato entero y que además tenga la propiedad “autoincrement” ( o identity, o lo que sea, todo depende de la base de datos utilizada). En la tabla existe un campo que servirá para almacenar la llave original. Al llenar la tabla se generarán valores numéricos que usaremos en vez del campo clave original.

Las ventajas son muchas. Para mí la principal es mejorar el tiempo de respuesta de la base de datos ya que buscar entre números enteros es lo que menos trabajo le cuesta a la base de datos; pero también hay otras, por ejemplo, si estamos juntando en un data warehouse información de sistemas transaccionales diferentes y cada uno de ellos tienen llaves que no se parecen en nada la una de la otro, las llaves surrogadas o sustitutas nos permitirán tener una llave homogénea para ambos sistemas.

Nos permite también resolver cosas como por ejemplo mantener la historia en el tiempo y a la vez separarla. Por ejemplo si queremos que un vendedor que ahora pertenece a otra región, su historia se conserve en el data warehouse en la región original, lo que hacemos es crear un nuevo registro en la tabla de vendedores con una nueva llave sustituta para ese vendedor y usamos esa nueva llave para almacenar las ventas de ese cliente a partir de la fecha que el movimiento ocurre. De esta forma en el data warehouse tendremos las 2 cosas.

IdVendedor CveVendedor Vendedor Región
2345 A00X456 Miguel Gutierrez Norte
 
5467 A00X456 Miguel Gutierrez Centro

Si queremos la historia del vendedor podemos hacer la consulta por el # de Vendedor lo cual abarcará a las 2 llaves (la nueva y la antigua).

select sum(ventas)
from HechosVentas A
join DimVendedores B on a.idVendedor = b.IdVendedor
where b.CveVendedor = ‘A00X456′

Si queremos las ventas de cada región:

select region, sum(ventas)
from HechosVentas A
join DimVendedores B on a.idVendedor = b.IdVendedor
group by region

El modelo por sí solo lo resolverá.

Surrogadas

Por cierto, en el modelo arriba mostrado (que no tiene nada que ver con el ejemplo de regiones y vendedores que les daba) pueden ver que yo por ejemplo a todas las llaves usrrogadas las identifico por el sufijo “ID” y para los campos llaves originales reservo todos los campos con el sufijo “cve”.

¿implica más trabajo? Si, así es. Muchas veces por falta de tiempo yo en mi caso las omito. También en cierto que hay diferentes maneras de generarlas por ejemplo con algún ETL. Los beneficios son muchos así que cada vez que diseñe un modelo, ponga en la balanza los beneficios que le pueda traer el incluir dichas llaves.

Por cierto, si vá a utilizar el “count distinct” estas llaves sustitutas les vienen como anillo al dedo.








Seguir

Get every new post delivered to your Inbox.