Diferencias entre Direct Discovery y datos en memoria
El modelo en memoria
En el modelo en memoria de Qlik Sense, todos los valores únicos de los campos seleccionados de una tabla en el script de carga se cargan en estructuras de campos, y los datos asociados se cargan en la tabla de forma simultánea. Los datos de campos y los datos asociados se hallan todos en la memoria.
Una segunda tabla relacionada cargada en la memoria compartiría un campo común y esa tabla podría añadir nuevos valores únicos al campo común, o podría compartir valores previos.
Direct Discovery
Cuando los campos de tabla se cargan con una sentencia Direct DiscoveryLOAD (Direct Query),se crea una tabla similar solo con los campos DIMENSION. Al igual que ocurre con los campos en memoria, los valores únicos de los campos DIMENSION se cargan en la memoria. Pero las asociaciones entre los campos se quedan en la base de datos.
Los valores del campo MEASURE también se quedan en la base de datos.
Una vez que se ha establecido la estructura Direct Discovery, los campos Direct Discovery se pueden usar con determinados objetos de visualización y pueden utilizarse para asociaciones con los campos en memoria. Cuando se utiliza un campo Direct Discovery, Qlik Sense crea automáticamente la consulta SQL adecuada para ejecutar en los datos externos. Cuando se efectúan selecciones, los valores de datos asociados de los campos Direct Discovery se utilizan en las condiciones WHERE de las consultas a la base de datos.
Con cada selección, las visualizaciones con los campos Direct Discovery se recalculan, y los cálculos se realizan en la tabla de la base de datos fuente ejecutando la consulta SQL creada por Qlik Sense. Se puede utilizar la funcionalidad de la condición de cálculo para especificar cuándo queremos que se recalculen las visualizaciones. Hasta que se cumpla dicha condición, Qlik Sense no envía consultas para recalcular las visualizaciones.
Diferencias de rendimiento entre campos en memoria y campos Direct Discovery
El procesamiento en memoria siempre es más rápido que el procesamiento en las bases de datos fuente. El rendimiento de Direct Discovery refleja el rendimiento del sistema que ejecuta la base de datos que procesa las consultas de Direct Discovery.
Es posible utilizar las mejores prácticas estándar de bases de datos y rendimiento de consultas en Direct Discovery. Todos los ajustes de rendimiento deberían hacerse en la base de datos fuente. Direct Discovery no proporciona soporte para el ajuste del rendimiento de las consultas desde la aplicación Qlik Sense. Pero sí podemos hacer llamadas paralelas, asíncronas, a la base de datos, empleando la función de conexión directa. La sintaxis de script de carga para configurar la capacidad de conexión directa es la siguiente:
SET DirectConnectionMax=10;
El almacenamiento en la caché de Qlik Sense también mejora la experiencia global del usuario. Vea Almacenamiento en caché y Direct Discovery más adelante.
El rendimiento de Direct Discovery con DIMENSION también puede mejorarse separando algunos de los campos de las asociaciones. Esto se hace mediante la palabra clave DETACH en DIRECT QUERY. Si bien los campos separados no se consultan en busca de asociaciones, aún forman parte de los filtros, con lo que aceleran los tiempos de selección.
Mientras que los campos en memoria de Qlik Sense y los campos Direct DiscoveryDIMENSION poseen todos sus datos en memoria, la manera en que se cargan afecta a la velocidad de carga de datos de la memoria. Los campos en memoria de Qlik Sense mantienen solo una copia de un valor de campo cuando hay múltiples instancias del mismo valor. Sin embargo, se cargan todos los datos de campo y luego los datos duplicados se clasifican.
Los campos DIMENSION también almacenan solo una copia de un valor de campo, pero los valores duplicados se clasifican y organizan en la base de datos antes de cargarse en la memoria. Cuando manejamos cantidades extensas de datos, como suele ocurrir cuando usamos Direct Discovery, los datos se cargan mucho más rápido como una carga DIRECT QUERY que con la carga SQL SELECT empleada para campos en memoria.
Diferencias entre datos en memoria y datos de bases de datos
DIRECT QUERY es sensible a mayúsculas cuando se efectúan asociaciones con datos en memoria. Direct Discovery selecciona datos de las bases de datos de origen según la distinción entre mayúsculas y minúsculas de los campos de la base de datos consultados. Si los campos de la base de datos no son sensibles a mayúsculas, una consulta Direct Discovery podría devolver datos que no devolvería una consulta en memoria. Por ejemplo, si los datos siguientes existen en una base de datos que no es sensible a mayúsculas, una consulta Direct Discovery del valor "Red" devolvería las cuatro filas.
| Columna A | Columna B |
|---|---|
| rojo | uno |
| Red | dos |
| Rojo | tres |
| Red | cuatro |
Una selección en memoria de "Red," por otra parte, devolvería solo:
Red two
Qlik Sense normaliza los datos hasta tal punto que produce correspondencias en datos seleccionados que las bases de datos no encontrarían. Como resultado, una consulta en memoria puede producir más valores de correspondencias que una consulta de Direct Discovery. Por ejemplo, en la tabla a continuación, los valores del número "1" varían según la localización de espacios en torno a ellos:
| Columna A | Columna B |
|---|---|
| ' 1' | Espacio anterior |
| '1' | sin_espacio |
| '1 ' | espacio_posterior |
| '2' | dos |
Si seleccionamos "1" en un Panel de filtrado para ColumnA, en la que los datos se hallan en la memoria estándar de Qlik Sense, las tres primeras filas se asocian:
| ColumnA | ColumnB |
|---|---|
| ' 1' | space_before |
| '1' | no_space |
| '1 ' | space_after |
Si el Panel de filtrado contiene Direct Discovery datos, la selección de "1" podría asociar únicamente "no_space". Las correspondencias que devuelven datos Direct Discovery dependen de la base de datos. Algunos devuelven solo "no_space" y algunos, como SQL Server, devuelven "no_space" y "space_after".
Almacenamiento en caché y Direct Discovery
El almacenamiento en la caché de Qlik Sense almacena los estados de selección de las consultas y los resultados de las consultas asociadas en la memoria. A medida que se van haciendo los mismos tipos de selecciones, Qlik Sense aprovecha la consulta de la caché en lugar de consultar los datos fuente. Cuando se realiza una selección diferente, se efectúa una consulta SQL en la fuente de datos. Los resultados de la caché se comparten entre usuarios.
-
El usuario aplica la selección inicial.
SQL atraviesa hasta la fuente de datos subyacente.
-
El usuario borra la selección y aplica la misma selección que la selección inicial.
El resultado de la caché es devuelto, SQL no atraviesa hasta la fuente de datos subyacente.
-
El usuario aplica otra selección distinta.
SQL atraviesa hasta la fuente de datos subyacente.
Se puede establecer un límite de tiempo en el almacenamiento en caché mediante la DirectCacheSeconds variable de sistema. Una vez alcanzado el límite de tiempo, Qlik Sense borra la caché de los Direct Discovery resultados de consulta que se generaron para las selecciones anteriores. Qlik Sense consulta entonces la fuente de datos para las selecciones y recrea la caché para el límite de tiempo designado.
El tiempo predeterminado de la caché para Direct Discovery resultados de consulta es de 30 minutos a menos que se utilice la variable de sistema DirectCacheSeconds.