Open Business Intelligence

La red del Business Intelligence

Mondrian - filtrar dimensión por usuario (variable session)

Amigos(as),

 

Utilizo el Pentaho 3.7.  Lo sé como filtrar una dimensión con el uso de "role". Pero, ahora, necesito filtrar la dimensión por el usuario que está conectado al BI.

 

Ejemplo:

 

Dimensión Vendedor tiene los campos ID_VENDEDOR, COD_VENDEDOR, NOMBRE_VENDEDOR.

 

El vendedor 000005 solo puede ver las informaciones de él. Por cierto, necesito que en la dimensión VENDEDOR solo aparezca él disponible.

 

He leído por la web algo como "utilizar variable de sesión en el xaction" para filtrar la dimensión. Pero, ningún ejemplo disponible.

 

Alguién puede dar un ejemplo simples de como hacer este xAction para una análise de Mondrian  (PivotViewComponent) . Lo sé que necessita poner en la TAG input del xAction el seguiente:

 

<user type="string">        <session>name</session>      </user>

Intenté, sin suceso, la query así:

 

<query><![CDATA[select NON EMPTY {[Measures].[realizado_tbruta]} ON COLUMNS,  NON EMPTY Crossjoin(Hierarchize({([vendedores].[XXXXXX], [tempo.mensal].[Total])}), {[clientes.cliente].[Clientes]}) ON ROWSfrom [Realizado]]]></query>

donde he cambiado XXXXXX por: 

000005 (único donde obtuve suceso)

PREPARE:{user}

{user}

y

${user}

 

Gracias desde ya por la atención,

 

Vicente de Paula :)

Visitas: 579

Responde a esto

Respuestas a esta discusión

Buenas.

 

Con solo reemplazar XXXXX por {user} debería funcionarte.

Prueba de establecerle a "user" algún valor por defecto a ver si funciona.

 

Saludos.

Hola Bernabeu,

 

Gracias por la atención. Obtuve suceso con:

 

En la tag <inputs>:

<user type="string">
<sources>
<security>principalName</security>
</sources>
</user>

En la tag <action-inputs>: <user type="string"/>

Y en la tag <query> se quedó:

<query><![CDATA[select NON EMPTY {[Measures].[realizado_valor]} ON COLUMNS, NON
EMPTY {([vendedores].[{user}], [tempo.mensal].[Total])} ON ROWS
from [Realizado]
]]></query>

 

Cuando llamada esta xAction, ya funciona perfectamente, con el filtro en la dimensión vendedores. Pero, si el usuario utiliza el navegador olap, podrá mirar las informaciones de los demás de esta dimensión vendedores. 


Pregunto: ? como en este xAction puedo permitir el uso del navegador olap ( <cube-nav/> ), pero en la dimenión vendedores el usuário no conseguirá mirar los otros vendedores?  ? O sea, en esta dimensión solo habrá su vendedor = {user}. ? 

 

Vicente de Paula :)

Buenas. Antes que nada gracias por compartir la solución.

 

Respondo: realizando ese tipo de filtrado, es decir, reemplazando valores por variables en la query, la única forma que tienes para que un determinado user no vea la información de los otros users, es quitar del análisis las opciones "cube-nav" y "mdx-edit" (aquí hay un lindo tutorial...). Sino lo que te queda es configurar Roles en tu schema.

 

Saludos.

! Gracias, Bernabeu ! 

 

? Por casualidad (jejeje :D) , sabes si es posible, en este xaction mantener "cube-nav" pero quitar "mdx-edit" y la dimensión vendedores, pero manteniendo el filtro para esta dimensión ?  Crees que es posible la utilizacion del "SecureFilterComponent" con "PivotViewComponent" para llegar a este objetivo ? Intenté sin suceso, pues no

supe como hacer la relación entre esos componentes.

 

Vicente :)

 


 

Buenas Vicente, te respondo.

 

>>   es posible, en este xaction mantener "cube-nav" pero quitar "mdx-edit" y la dimensión vendedores, pero manteniendo el filtro para esta dimensión ?

Si creas un rol que le niegue al user acceder a la dimensión vendedores, este user visualizará esta dimensión con el "cube-nav", pero tampoco podrá utilizarse esa dimensión para realizar ningún filtro (ya que tiene negado el acceso). Así que por mi parte te diría que NO se puede.

 

>>   crees que es posible la utilizacion del "SecureFilterComponent" con "PivotViewComponent" para llegar a este objetivo ?

Como la respuesta anterior fue NO, esta pregunta también sería otro NO. Pero, si se tratase de otro caso, claro que puedes hacer interactuar esos dos process actions. Un ejemplo sería:

* creas un input (string) llamado "día".

* creas un input (string-list) llamado "listDias", en donde cargas a mano los días de la semana.

* añades SecureFilterComponent y lo configuras de la siguiente manera:

  • Prompt For = dia
  • Source Of Choice = listDias

* añades PivotViewComponent y en la consulta MDX ya puedes utilizar {dia}.

 

Saludos.

!Gracias, Bernabeu!

 

 

 

Responder a debate

RSS

Distintivo

Cargando…

© 2019   Creado por Emilio.   Tecnología de

Emblemas  |  Reportar un problema  |  Términos de servicio