Estimados, tengo un problema con perfiles de datos.
Resulta que en un proyecto definimos un perfil de datos, le asociamos usuarios, sometemos la sentencia sql al método que le aplica las restricciones de dicho perfil, y todo funcionó bien.
Luego de probado, agregamos otro perfil cumpliendo con todos los pasos y requisitos para su buen funcionamiento, y a partir de allí no funcionó más nada en lo referente al perfil de datos.
Mirando la devolución del método toba::perfil_de_datos()->filtrar($sql,‘mifuente’) vemos que no le agrega nada, mientras que antes sí lo hacía.
Ya nos pasó antes en otro proyecto que ya no se usa, por eso no insistí más sobre el tema. Pero ahora vuelvo a necesitarlo.
si mal no recuerdo te referis a este hilo, el problema es que no determinamos que estaba pasando.
En ese caso vos nos contabas que no te estaba recuperando ninguna restriccion desde la fuente.
Te pido un favor, podrias ejecutar la siguiente consulta directamente en la instancia de Toba que tiene ese proyecto?
SELECT d.usuario_perfil_datos as perfil_datos,
d.dimension as dimension,
d.clave as clave,
di.fuente_datos as fuente_datos
FROM apex_usuario_perfil_datos_dims d,
apex_dimension di
WHERE d.dimension = di.dimension
ANd d.proyecto = di.proyecto
AND d.usuario_perfil_datos = $perfil
AND d.proyecto = $proyecto
Para ver si no te esta recuperando restricciones o si es que las mismas luego no son correctamente identificadas en el filtrado de la SQL.
Tene en cuenta que si la SQL a filtrar tiene subqueries, es posible que convenga filtrarlas individualmente y luego pegarlas.
estuve probando definiendo la tabla, la dimension y el perfil de datos. No estoy teniendo inconveniente para que se filtre correctamente la SQL que me pasaste.
Podrias probar la misma dentro de toba_editor, en el apartado para la prueba de dimensiones?, es el primer icono desde donde editas la fuente de datos, ahi pega la SQL y luego dale a guardar, asi te agrega la pestaña de testing.
hice lo que me dijiste, aparentemente funciona bien (te adjunto las capturas). Pero en el sistema no. Calculo q le puede estar faltando un dato, pero no se donde, ni cual.
Esta es la consulta que uso para invocar al perfil
$sql = “SELECT tipos_transporte.tipo_transporte, tipos_transporte.descripcion
FROM transp.tipos_transporte”;
$sql_filtrado = toba::perfil_de_datos(‘transporte’)->filtrar($sql, ‘tractas’);
$datos = toba::db()->consultar($sql_filtrado);
//ei_arbol($datos); -------------->aca me muestra todo el array, y debería mostrar solo el habilitado
return $datos;
te hago una consulta, podrias verificar en toba_usuarios que dicho usuario de pruebas tenga el perfil de datos correcto?.
Lo mismo te voy a pedir que hagas desde la configuracion de previsualizacion del proyecto, ahi tambien hay que asignarle el perfil de datos al usuario.
Confirmame esto por favor, pareciera que no se esta levantando correctamente el perfil del usuario… pero cuando lo hace filtra correctamente la SQL, por eso quiero ver como esta esa asociacion.
Buenas noticias
El usuario ya tenia cargado los perfiles de datos. Solo le incluimos en la previsualización y funciono perfecto.
Ahora una duda si tenemos 100 usuarios para algunos sistemas, hay que configurar la previsualización 1 a 1 de todos los usuarios?, o hay otra manera de hacerlo?? La verdad no nos habíamos fijado que en la previsualización había que colocar eso, ya que en el toba_usuarios estaban completos los datos.
Desde ya muchas gracias. Saludos
la previsualizacion es un entorno de prueba dentro de toba_editor, con lo cual solamente tenes que asignarle el perfil que queres probar. Dudo que quieras probar cada uno de los 100 usuarios del sistema, que seria el caso en que deberias ir y cambiar el parametro antes de cada prueba.
Si realizas las pruebas directamente contra el sistema en lugar de usar la previsualizacion, con que configures los perfiles en toba_usuarios alcanza.