Utilizar subconsultas con Direct Discovery
Si la cardinalidad del campo clave que une la tabla es alta, es decir, contiene una gran cantidad de valores distintos, una selección en Qlik Sense podría generar una sentencia
Para ilustrar esto, usamos un ejemplo donde una tabla de productos (
Creamos un gráfico con
Escenario 1: Baja cardinalidad
En este escenario, la tabla de productos contiene un número reducido de productos distintos, 266. Si hacemos una selección en
El
Escenario 2: Utilizar subconsultas
Si el mismo ejemplo contiene una gran cantidad de productos distintos, por ejemplo 20.000, la selección de un filtro de dimensión, por ejemplo
La solución está en permitir que Qlik Sense cree subconsultas en vez, configurando DirectEnableSubquery como verdadero. La sentencia
El tamaño de la cláusula WHERE ProductID IN ya no depende del número de claves resultantes de la selección.
Al utilizar subconsultas hemos de tener en cuenta las siguientes limitaciones:
- Sólo debemos invocar la sintaxis de subconsultas cuando seleccionemos datos que impliquen filtrar un gráfico usando datos de otra tabla.
- La cantidad de datos dentro de las claves es el factor determinante, no el número de claves.
- Las subconsultas sólo se invocan si todas las tablas implicadas están en modo Direct Discovery. Si filtramos el gráfico utilizando datos de una tabla incluida en el modo de memoria, se generará una cláusula IN.