Oracle Business Intelligence Foro
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.

Filtrar Información Mostrada en las Consultas, desde Oracle Administration Tool...

2 participantes

Ir abajo

Filtrar Información Mostrada en las Consultas, desde Oracle Administration Tool... Empty Filtrar Información Mostrada en las Consultas, desde Oracle Administration Tool...

Mensaje  rvalenzuela Vie 17 Jul 2009, 18:53

Buen día amigos:

Es la primera vez que participo de este foro, trabajo en la línea de BI de mi compañía y espero poder aportar a ustedes en retribución a las ayudas que pueda encontra en este foro.

en esta ocasión solicito de su colaboración para resolver el siguiente caso:

Implementamos un Data Mart que permite realizar análisis al área comercial de una compañía. Se desarrollaron una serie de consultas que deben cumplir con la siguiente regla de seguridad:

Se deben crear 5 roles (gerentes, directores comerciales, directores de oficina, directores de venta y asesores). Ya están creados.

Se debe crear en cada rol, los usuarios que accederan a dichas consultas a traés de Dashboard. Ya están creados.

Su el usuario que se conecta pertenece al rol de gerentes, debe poder ver en las consultas, únicamente la información que pertenece a este gerente y la de sus subalternos asociados (directores comerciales, directores de oficina, directores de venta y asesores).

Su el usuario que se conecta pertenece al rol de directores comerciales, debe poder ver en las consultas, únicamente la información que pertenece a este director comercial y la de sus subalternos asociados (directores de oficina, directores de venta y asesores).

Su el usuario que se conecta pertenece al rol de directores de oficina, debe poder ver en las consultas, únicamente la información que pertenece a este director de oficina y la de sus subalternos asociados (directores de venta y asesores).

Su el usuario que se conecta pertenece al rol de directores de venta, debe poder ver en las consultas, únicamente la información que pertenece a este director de venta y la de sus subalternos asociados (asesores).

Su el usuario que se conecta pertenece al rol de asesores, debe poder ver en las consultas, únicamente la información que pertenece a este asesor.

Entiendo que esto se puede hacer a través de filtros en la capa de negocio, no se si se hace con variables de repositorio o de sesión, y si es asi, no se como se implementan.

Gracias por su pronta colaboración.


Cordial Saludo,

Raúl Valenzuela.
rvalenzuela
rvalenzuela

Cantidad de envíos : 49
Edad : 52
Localización : Bogotá D.C. - Colombia
Fecha de inscripción : 17/07/2009

Volver arriba Ir abajo

Filtrar Información Mostrada en las Consultas, desde Oracle Administration Tool... Empty Re: Filtrar Información Mostrada en las Consultas, desde Oracle Administration Tool...

Mensaje  bvillamor Dom 19 Jul 2009, 21:59

Hola Raúl,
lo que necesitas es una variable de sesión con la lista de elementos a los que tiene acceso el usuario, un script que inicialice esta variable cada vez que un usuario se logue y un filtro en la capa de negocio. Lo más flexible es que puedas obtener esta información de una tabla de tu base de datos, tabla que relacione el login del usuario con los códigos de los gerentes a los que puede acceder.

Estos son los componentes que debes configurar:

un script de inicialización de sesión

  • suponemos que tenemos una tabla con las columnas usuario_id, gerente_id así que ponemos un sql del tipo:

select 'varGerentes', gerente_id from gerentes_usuarios where UPPER(usuario_id) = UPPER(:USER)

  • en la sección Variable Target, selecciona 'Row-wise initialization', esto permitirá que la variable se cargue con varios códigos de gerente si el usario aparece varias veces en la tabla de usuario y gerente.
  • las variables de tipo row-wise no necesitan ser creadas, basta con poner el nombre que quieras como primer elemento del select.


un filtro

  • en Manage -> Security -> Groups o Users seleccionas el grupo o usuario que desees, en este caso el de gerentes. En el botón Permissions entras en la pestaña Filters, botón Add
  • en la parte izquierda puedes seleccionar la capa de presentación o la de negocio, selecciona la que más te interese
  • dentro de la capa selecciona el objeto que deseas filtrar, por ejemplo, la tabla de hechos de ventas
  • en la casilla de business model filter debes escribir el filtro de esta forma:

Capa.dim_gerentes.gerente_id = VALUEOF(NQ_SESSION."varGerentes")

  • de esta forma, cuando el usuario realice una consulta de ventas siempre se añadirá a la consulta este filtro y no podrá ver los datos de gerentes a los que no tiene acceso.
  • si también quieres que al obtener una lista de gerentes vea sólo aquellos a los que puede acceder debes crear otro filtro sobre el objeto de la dimensión de gerentes pero con el mismo texto de antes

Por supuesto puedes tener varias variables como esta para todos los tipos de personal que debes controlar y en los filtros puedes añadir varias condiciones.

Espero que te sirva de ayuda.

Saludos,

Begoña.
bvillamor
bvillamor

Cantidad de envíos : 388
Localización : Madrid
Fecha de inscripción : 18/02/2009

http://www.adiante.es

Volver arriba Ir abajo

Filtrar Información Mostrada en las Consultas, desde Oracle Administration Tool... Empty Re: Filtrar Información Mostrada en las Consultas, desde Oracle Administration Tool...

Mensaje  rvalenzuela Mar 21 Jul 2009, 17:44

Buen día Begoña, antes que nada, dejame agradecer tu oportuna colaboración a mi necesidad.

Te cuento, del procedimiento para resolver mi asunto me ha quedado muy claro la manera como implementar el filtro en la capa de negocio una vez tenga la variable de sesión cargada.

Lo que no entendí muy bien es como implementar lo de la variable de sesión. Disculpa, es que nunca antes he tenido la necesidad de usar variables, por lo cual, no tengo ni idea de como se implementa, por eso, cuando me hablas de hacer un script de inicialización de variables, no se como ni en donde se hace.

Si existe una tabla en la base de datos en la que tengo los id de los gerentes y directores comerciales desde donde podría sacar la información.

Te agradecería enormemente si me das mas pistas de la implementación , por que opción entro, como la creo, etc.

Mil gracias nuevamente y quedo en espera de tu ayuda.

Cordial Saludo,


Raúl Valenzuela.
Bogotá D.C. - Colombia.
rvalenzuela
rvalenzuela

Cantidad de envíos : 49
Edad : 52
Localización : Bogotá D.C. - Colombia
Fecha de inscripción : 17/07/2009

Volver arriba Ir abajo

Filtrar Información Mostrada en las Consultas, desde Oracle Administration Tool... Empty Re: Filtrar Información Mostrada en las Consultas, desde Oracle Administration Tool...

Mensaje  bvillamor Mar 21 Jul 2009, 23:00

Hola,
las variables de sesión y los scripts de inicialización se crean en la opción de menú Manage / Variables de la herramienta de Administración.

Verás dos grandes grupos: repositorio y sesión y dentro de cada uno otros dos, scripts y variables. Una vez aquí ya puedes seguir los pasos del mensaje anterior para crear el script.

Begoña.
bvillamor
bvillamor

Cantidad de envíos : 388
Localización : Madrid
Fecha de inscripción : 18/02/2009

http://www.adiante.es

Volver arriba Ir abajo

Filtrar Información Mostrada en las Consultas, desde Oracle Administration Tool... Empty Re: Filtrar Información Mostrada en las Consultas, desde Oracle Administration Tool...

Mensaje  rvalenzuela Miér 22 Jul 2009, 00:41

Gracias Begoña, ya entendí lo que tratabas de decirme, es que estaba confundiendo el término "script de inicialización" con "Initialization Blocks", que al final son lo mismo y es ahí donde se debe crear el script.

Ya lo creé, ya probé y la variable de sesión funciona.

Peeeero, al hacer el filtro, no veo eso reflejado en las consultas de Answers.

Los pasos que he realizado son los siguientes:

1. Entro a Manage\Security\Groups del Administration Tool y seleccione el grupo de Gerentes...
2. Selecciono el botón Permissions...
3. Selecciono la vista Filters...
4. Selecciono el botón Add...
5. Selecciono de la Capa de Presentación la tabla Estructura_Comercial que contiene el campo que usaré para el filtro...
6. Completo el filtro asi: "DM - FVENTAS - ACE"."Estructura Comercial"."No.Doc.Identidad" = VALUEOF(NQ_SESSION."vsUsuario")
7. Guardo los cambios...
8. Entro al Answers con uno de los usuarios que creé en el Administration Tool, en el grupo de Gerentes...
9. Selecciono de la tabla que filtré, el nombre del gerente...
10. Me muestra todos los gerentes cuando debería mostrarme en la consulta solo uno, con el que entre.

Sin embargo, si hago una consulta en Answers, y en el criterio "No.Doc.Identidad" filtro este campo haciendolo igual a la variable de sesión, me muestra únicamente el gerente con el que me conecté.

He hecho algún paso mal?

La idea es poder filtrar esta información desde la capa de negocio del Administrator Tool, para que cuando entre a Aswers, ya este la información filtrada...

Gracias nuevamente....

Cordial Saludo,


Raúl.
rvalenzuela
rvalenzuela

Cantidad de envíos : 49
Edad : 52
Localización : Bogotá D.C. - Colombia
Fecha de inscripción : 17/07/2009

Volver arriba Ir abajo

Filtrar Información Mostrada en las Consultas, desde Oracle Administration Tool... Empty Re: Filtrar Información Mostrada en las Consultas, desde Oracle Administration Tool...

Mensaje  bvillamor Jue 23 Jul 2009, 00:32

Hola,
en principio parece que lo tienes todo bien pero podría ser un problema de caché y que te esté mostrando los resultados de la consulta previos a la aplicación del filtro.

Borra la caché de cursores de la web (Configuración / Administración / Administrar Sesiones / Cerrar todos los cursores) y vuelve a crear la consulta de los nombres de gerentes.

Para comprobar si está poniendo el filtro en el sql generado puedes consultar el log de tu sesión. Lo primero es poner el nivel de log de tu usuario en 2 o superior y luego en Configuración / Administración / Administrar Sesiones buscas la consulta y ves el detalle.

Begoña.
bvillamor
bvillamor

Cantidad de envíos : 388
Localización : Madrid
Fecha de inscripción : 18/02/2009

http://www.adiante.es

Volver arriba Ir abajo

Filtrar Información Mostrada en las Consultas, desde Oracle Administration Tool... Empty Re: Filtrar Información Mostrada en las Consultas, desde Oracle Administration Tool...

Mensaje  rvalenzuela Jue 23 Jul 2009, 01:45

Hola Begoña, seguí tus recomendaciones y esto es lo que genera el log, no veo en la condición Where la variable de sesión que estoy utilizando, que debe ser "vsUsuario".
+++79387415:2a0000:2a0006:----2009/07/22 17:43:44

##############################################
-------------------- SQL Request:
SET VARIABLE QUERY_SRC_CD='Report';SELECT Gerente."Cod.Gerente" saw_0, Gerente."Nom.Gerente" saw_1, Gerente."Apell.Gerente" saw_2 FROM "Producción Pólizas - ACE" ORDER BY saw_0, saw_1, saw_2


+++79387415:2a0000:2a0006:----2009/07/22 17:43:44

-------------------- General Query Info:
Repository: Star, Subject Area: DM - FVENTAS - ACE, Presentation: Producción Pólizas - ACE


+++79387415:2a0000:2a0006:----2009/07/22 17:43:44

-------------------- Sending query to database named DMVENTAS_DESA (id: <<18976>>):

select distinct T103.DECO_CODIGO_GERENTE as c1,
T103.DECO_NOMBRE_GERENTE as c2,
T103.DECO_APELLIDO_GERENTE as c3
from
DV_D_ESTRUCTURA_COMERCIAL T103
where ( T103.DECO_CODIGO_CANAL = 'ACE' )
order by c1, c2, c3



+++79387415:2a0000:2a0006:----2009/07/22 17:43:44

-------------------- Query Status: Successful Completion


+++79387415:2a0000:2a0006:----2009/07/22 17:43:44

-------------------- Rows 5, bytes 1360 retrieved from database query id: <<18976>>


+++79387415:2a0000:2a0006:----2009/07/22 17:43:44

-------------------- Physical query response time 0 (seconds), id <<18976>>


+++79387415:2a0000:2a0006:----2009/07/22 17:43:44

-------------------- Physical Query Summary Stats: Number of physical queries 1, Cumulative time 0, DB-connect time 0 (seconds)


+++79387415:2a0000:2a0006:----2009/07/22 17:43:44

-------------------- Rows returned to Client 5


+++79387415:2a0000:2a0006:----2009/07/22 17:43:44

-------------------- Logical Query Summary Stats: Elapsed time 0, Response time 0, Compilation time 0 (seconds)

Gracias, Raúl.
rvalenzuela
rvalenzuela

Cantidad de envíos : 49
Edad : 52
Localización : Bogotá D.C. - Colombia
Fecha de inscripción : 17/07/2009

Volver arriba Ir abajo

Filtrar Información Mostrada en las Consultas, desde Oracle Administration Tool... Empty Re: Filtrar Información Mostrada en las Consultas, desde Oracle Administration Tool...

Mensaje  bvillamor Lun 31 Ago 2009, 14:44

Hola Raúl,
¿has solucionado el problema del filtrado de gerentes? Revisando los mensajes he visto que tu consulta se hacía sobre la tabla de presentación 'Gerentes' pero decías que el filtro lo habías hecho sobre la tabla de presentación 'Estructura Comercial', esto explicaría el error de funcionamiento.
Otra cosa que puede pasar es que el filtro lo hayas hecho sobre un campo de la tabla de presentación, no sobre la tabla completa. De ser así, el filtro sólo se aplicará cuando la columna filtrada esté presente en la consulta.

Saludos,

Begoña.
bvillamor
bvillamor

Cantidad de envíos : 388
Localización : Madrid
Fecha de inscripción : 18/02/2009

http://www.adiante.es

Volver arriba Ir abajo

Filtrar Información Mostrada en las Consultas, desde Oracle Administration Tool... Empty Re: Filtrar Información Mostrada en las Consultas, desde Oracle Administration Tool...

Mensaje  Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.