jueves, 2 de enero de 2014

CALIFICACIÓN DE CONJUNTO

Para qué sirve:
Nos permite relacionar un atributo (nivel de salida) con una Fact, además de agregar un filtro si se requiere.

Ejemplo sin Filtro:
Seleccionamos el atributo Persona (dimensión compartida con muchas facts por el campo “PK_Id_Persona”) como nivel de salida y lo relacionamos con la “Fact Nomina”. 
No se aplicó ningún filtro en este caso.



Posteriormente, creamos un indicador “Cantidad de Agentes” (también es un count de los “PK_Id_Persona” pero apuntando a la Fact de Datos Agente).
Al aplicar el filtro de calificación de conjunto, logramos que la cantidad de agentes que se contabilicen, se den bajo la condición de que las personas pertenezcan también a la Fact_Nomina.

Query SQL generado por MicroStrategy:

Select    count(distinct a11.PK_ID_PERSONA)  WJXBFS1
from    FACT_AGENTES_DATOS    a11
where    ((a11.PK_ID_PERSONA)
in    (select    r11.PK_ID_PERSONA
from    FACT_NOMINA    r11))


CALIFICACIÓN DE CONJUNTO AVANZADA


Para qué sirve:
Es exactamente el mismo propósito que la calificación de conjunto, con la salvedad de que en este caso aplicaremos filtros con opciones avanzadas.

Ejemplo con Filtro:
Muchas son las utilidades que le podemos dar a estas opciones de MicroStrategy, sin embargo en esta ocasión nos centraremos en una específica. La idea es básicamente utilizar la calificación de conjunto anteriormente diseñada como filtro de una nueva.
Esto nos permite traer una subconsulta con información filtrada por otra subsonsulta.



Viéndose con un ejemplo, necesitamos mostrar la cantidad de hijos que pertenecen a ciertos agentes que, a su vez, se encuentran en Nomina. Esto se reduce a 3 facts:

<< FACT_AGENTES_FAMILIA - FACT_AGENTES_DATOS - FACT_NOMINA >>

En base a lo aprendido anteriormente, creamos otra calificación con nivel de Persona apuntando a la Fact de Agentes.
Por último, pero extremadamente importante para mejorar la performance de la consulta y evitar un “InterSect” innecesario, en las opciones avanzadas del filtro desmarcamos la siguiente opción:


Query SQL generado por MicroStrategy:

select    count(distinct a11.PK_ID_PERSONA)  WJXBFS1
from    FACT_AGENTES_FAMILIA    a11
where    a11.PK_ID_PERSONA
 in    (select    r11.PK_ID_PERSONA
        from    FACT_AGENTES_DATOS    r11
        where    ((r11.PK_ID_PERSONA)
        in    (select    r21.PK_ID_PERSONA
               from    FACT_NOMINA    r21)))



No hay comentarios: