[SOLUCIONADO] Problema con la implementación de un perfil de datos

Hola!
Estuve mirando la documentación, y aplicando todo lo escrito (y lo poco que recordaba de un problema similar que tuve oportunamente, pero que luego no se utilizó).

Esta es la consulta (en principio), que debería ser filtrada, por un perfil de datos definido en base a un valor de la tabla Sedes.

	function get_listado()
	{
		$sql = "SELECT 		cd.id,
							COALESCE(c.abreviatura, c.nombre)||' ['||c.id_guarani||'] - '||cp.plan||'.'||cp.version AS carrera_plan,
							s.nombre AS sede, ft.nombre||' - '||COALESCE(f.abreviatura, f.nombre) AS facultad,
							cd.anio_inicio, cd.encuestable,
							COALESCE(p.abreviatura, p.nombre) AS periodo_lectivo_inicio,
                                                        COALESCE(p.abreviatura, p.nombre)||'/'||cd.anio_inicio as inicio
				FROM 		carreras_dictadas	            cd
				INNER JOIN  carreras.carreras_planes 	    cp	ON (cd.id_carrera_plan = cp.id)
				INNER JOIN  carreras.carreras			    c	ON (cp.id_carrera = c.id)
				INNER JOIN  sedes							s	ON (cd.id_sede = s.id)
				INNER JOIN  transversal.periodos_lectivos 	p	ON (cd.id_periodo_lectivo_inicio = p.id)
				LEFT  JOIN  academica.facultades			f	ON (cp.id_facultad = f.id)
				LEFT  JOIN	academica.unidades_academicas	    ft	ON (f.id_unidad_academica = ft.id)
				ORDER BY 	c.nombre, cp.plan DESC, cp.version DESC, cd.anio_inicio, p.nombre
				";
		$sql = toba::perfil_de_datos()->filtrar($sql);
		return toba::db('cargos_funciones')->consultar($sql);
	}

Más abajo en las imágenes, detallo la definición, tanto de la relación entre las tablas en la fuente de datos (según entiendo requerido), más la definición de la dimensión, y el perfil de datos.
Este perfil de datos, lo aplico a un usuario creado en el momento, con un perfil funcional también recientemente creado, y la asociación a ese perfil de datos.
Hasta ahí, todo bien.
Sin embargo, cuando ingreso, la consulta no se encuentra filtrada, y me muestra todas la carreras_dictadas, de cualquier sede.

Es algo que se me está escapando, pero no encuentro que puede ser…

Estoy trabajando con la versión de toba 2.1 revisión 5345.

Mil gracias (y felicidades a todos!!!)


definicion_de_relaciones_en_la_fuente.JPG

definicion_de_relaciones_en_la_fuente.JPG_thumb.png

dimension_definicion.JPG

dimension_definicion.JPG_thumb.png

perfil_de_datos.JPG

perfil_de_datos.JPG_thumb.png

Hola Martin,

vos estas ejecutando el listado desde el editor (previsualizacion) o directamente accedes al sistema propiamente dicho?.
Por otro lado, hay una forma mas sencilla de probar el perfil de datos, en la imagen te adjunto algo que podes hacer desde la pestaña de Datos.

En la fuente del proyecto donde tenes definidas las dimensiones, te aparece un primer icono que te permite definir una serie de consultas las cuales podes ejecutar para verificar como funciona el perfil de datos.
Pega la SQL en esa operacion y fijate, probaste dejando nada mas que las 2 tablas involucradas?, digo… con eso deberia funcionar si o si.

Saludos


Editor Toba_1325771943483.png

Editor Toba_1325771943483.png

Me tira este error cuando hago click en el icono.
“No hay posicionado un cursor en la tabla, no es posible determinar la fila actual”
Hay algo que no tengo bien definido. Te adjunto la definición de los datos tabla involucrados.
Yo ya no puedo pescar donde puede estar el error en la definición.


carreras_dictadas.JPG

carreras_dictadas.JPG_thumb.png

sedes.jpg

sedes.png

Hola Martin,

me parece que se te esta mezclando algo, la definicion de 2 objetos datos_tabla no tiene nada que ver con la SQL que vos armas para llenar el listado.
Una cosa es definir una relacion en la fuente de datos y otra distinta es definir un objeto datos_relacion… son 2 cosas separadas.
Si estas llenando el listado desde una SQL esos DT no tienen nada que hacer en la operacion.

Lo que yo te estaba planteando era que verificaras que la SQL era correctamente reconocida y se encontraban los gatillos de la manera adecuada.
Eso lo podias hacer de manera manual desde donde te indique, comproba eso por favor.

Saludos

Si, está claro, pero el tema es que cuando quiero acceder a probarlo, me tira el error que te mencionaba antes (al presionar el icono que aparece en la fuente a la que se aplica la dimensión).
No puedo llegar a probar la dimensión, como vos me decís.


error.jpg

error.png

Hola Martin,

estuve probando con distintas situaciones en toba 2.1.0, 2.1.1, 2.1.2 y finalmente en la rama de desarrollo y en ningun caso pude hacer saltar el error que vos mencionas.
Mirando el codigo lo unico que se me ocurre es que no se este cargando efectivamente la zona… pero desde aca no puedo decirte mucho mas, lo unico que se me ocurre es que la URL no este pasando todos los parametros.
Te mande un PM.

Saludos

Richard! Gracias como siempre!

Había 2 problemas en la resolución de la dimensión y el filtro que la misma aplicaba.

El primero y que originó esta consulta, el hecho de que no filtraba, era por un problema mucho más trivial que el que luego se resolvió.
Para aplicar el filtro del perfil_de_datos, hay que hacer una llamada a toba::perfil_de_datos()->filtrar();

Por defecto en las pruebas que hice anteriores, ya que es la primer ves que debo aplicar una dimensión, quedó en mi mente un solo parámetro para esta función, y la llamaba

$sql = toba::perfil_de_datos()->filtrar($sql);

Sin embargo, en el proyecto actual, tengo varias fuentes de datos accediendo a diferentes esquemas de la misma base de datos, y es lo que faltaba… aclarar la fuente de datos sobre la que se aplica el perfil_de_datos.

$sql = toba::perfil_de_datos()->filtrar($sql, 'nombre_fuente_datos');

El problema que hizo larga la solución, fue algo que nada tenía que ver con el problema real de la falla del filtro, sino con la prueba del mismo.
No se podía acceder a la operación de prueba de dimensiones que aparece en la fuente de datos luego de crear la dimensión. Esto es muy útil para probar que la misma esté generando el resultado esperado sobre la consulta que uno piensa filtrar.
Resumiendo, tengo 2 proyectos que trabajan sobre la misma base de datos, y ambos comparten varios de los esquemas de dicha base de datos. En consecuencia, y por una decisión de consistencia que se tomó, las fuentes de datos, los datos tabla, los datos relación y sus ID, son los mismos en ambos proyectos.
El problema era que el editor, al querer probar la dimensión, no sabía decidir sobre cual fuente de datos de que proyecto se estaba trabajando y generaba el error que arriba se detallaba.
Esto fue solucionado por Richard en la revisión 5367 de la rama 2.1 de desarrollo.

Inmediatamente cuando esto se corrigió, resurgió el problema original, la consulta filtró sin problemas en la prueba de la dimensión, aunque no lo hacía en el proyecto, se chequeó y entonces apareció la solución al mismo.

Mil gracias, nuevamente!!!