¿Hay alguna forma de evitar, en tiempo de ejecución, la generación de una faceta?
Si bien existe la opción para hacer depender una faceta de otra (y con eso se lograría lo que busco) APEX igual genera la faceta, sólo que no la muestra. En mi caso, eso hace que la aplicación sea innecesariamente lenta.
Explicación larga:
Armé un caso de ejemplo en apex.oracle.com que tiene una tabla de documentos con una columna para el título, una columna para un código de tema y una de tipo de documento. Por otro lado, está la tabla de temas, con una columna para el código y otra para la descripción.
La tabla de documentos tiene 25000 filas y la tabla de temas, 8000. Por cómo está armado el ejemplo, cada tema tiene un máximo de 15 documentos asociados. Y cada documento tiene dos tipos posibles (la distribución es 50% y 50% de cada tipo)
Armé una búsqueda facetada que tiene el campo de búsqueda por título y una faceta de tipo y todo funciona bien. El problema está al agregar la faceta de tema.
Armé la faceta con una lista de valores basada en la consulta de la tabla tema. El primer problema es claro: con 8000 temas distintos, no se puede armar una faceta. Entonces, usé la opción "Depende de" poniendo que el campo de búsqueda sea NOT NULL (para que sólo se arme la faceta si se hizo primero una búsqueda). De esta forma, la búsqueda facetada anda casi siempre bien... salvo en el primer acceso o cuando se restablece la consulta.
En ese caso, en que el campo de búsqueda es NULL, la página tarda más en aparecer y, cuando aparece, sólo muestra la faceta de TIPO, por lo que se podría pensar que no se armó la de tema. Pero si se ve el código fuente de la página, aparecen los 8000 temas (que, por otro lado, ni siquiera se podrían mostrar, porque APEX limita a 2000 los valores posibles para una faceta).
El problema con esto es que la página se vuelve mucho más lenta innecesariamente (quizás en apex.oracle.com la demora no es tan notable por lo simple del caso y el hardware disponible, pero en mi caso real, con varias facetas y más complejas, la demora es casi inaceptable y, de nuevo, innecesaria).
Y acá vuelvo a la consulta original: ¿hay una forma real de evitar que se genere una faceta hasta que se cumpla una condición? (y no sólo no mostrarla como entiendo que está haciendo el "Depende de")
Armé una prueba pública en https://apex.oracle.com/pls/apex/r/apex_bcn/prueba-facetas/documentos