Hola, quería saber como podía relacionar una vista de la bdd en postgre con un datos_tabla.
Básicamente, es una tabla de solo lectura, pero no encontré la forma de relacionarla.
Aparece en la lista de tablas de la fuente de datos, pero no aparece en la lista de seleccionables de los datos tabla. Solo en la de dimensiones…
Hay alguna API de toba_db que me permita recuperar las filas que lleva esa vista?
En particular, la necesito para resolver una consulta con muchos outer join que tarda bastante en resolverse por esa condición… incluso, pese a que su resultado son 15 columnas, agrupadas, cuelga el proceso de exportación a pdf (la única consulta que me lo hace en todo el proyecto).
Por ahora, la tengo definida en forma estática (no como datos_tabla, específico), sino como PHP y llamo a esa función para recuperar los datos.
Para que se den una idea, para devolver 32 filas demora entre 23 y 35 segundos… en mi pc, y accediendo a localhost (con a lo sumo 50 registros interviniendo en la relacion)… será impracticable en estas condiciones en producción.
Actualmente, basándome en un email que recibí hace mucho como parte de la comunidad:
Marcelo Azcurra escribió: Hola a todosTengo la siguiente duda a estoy utilizando el toba 1.3.1 y tengo que hacer algunas consultas en sql, puedo utilizar la palabra LEFT JOIN e INNER JOIN en mis consultas o puede acarrear algun problema con respecto a los perfiles funcionales para los usuarios donde se definen restriciones
Cordialmente
Marcelo Azcurra
Hola Marcelo,
Actualmente los perfiles de datos sólo encuentran correctamente las tablas si el join se hace implícito. Por ejemploSELECT
…
FROM
tabla_a a,
tabla_a b
WHERE
a.id = b.idPor lo que tus consultas no se van a filtrar automáticamente al pasar por toba::perfil_de_datos()->filtrar($sql).
De todas formas el filtrado automático es opcional, tenés la posibilidad de usar una API de más bajo nivel, perdile los valores a filtrar y concaternarlos manualmente a la SQL. De esta forma te aseguras que las cosas se filtran cuando y cómo vos quieras. Por ejemplo si tuvieras una dimensión dependencias:$dependencias = toba::perfil_de_datos()->get_restricciones_dimension('mi_fuente', 'dependencias'); $valores_posibles = implode(', ', $dependencias); $sql = "SELECT ... FROM ... WHERE x.dependencia IN ($valores_posibles); ";
Saludos,
Seba
No utilizo los JOINS sino que los resuelvo en forma directa = (b.id es NULL) o (b.id = a.id), parafraseando el ejemplo de la cita. Quizá esto esté resuelto (estoy usando la versión 1.4.x, y migraremos a la 1.5) y el uso de los JOINs me permita de alguna forma optimizar la consulta.
Apreciando cualquier ayuda en este contexto, les envio saludos a todos!