Direct Query

La sentencia DIRECT QUERY permite enlazar tablas mediante una conexión ODBC u OLE DB, usando la función Direct Discovery.

Syntax:  

DIRECT QUERY DIMENSION fieldlist [MEASURE fieldlist[DETAIL fieldlist] FROM tablelist

[WHERE where_clause]

 

Las palabras clave DIMENSION, MEASURE y DETAIL pueden utilizarse en cualquier orden.

Las palabras clave DIMENSION y FROM son obligatorias en todas las sentencias DIRECT QUERY. La palabra clave FROM debe aparecer después de la palabra clave DIMENSION.

Los campos especificados directamente tras la palabra clave DIMENSION se cargan en la memoria y pueden utilizarse para crear asociaciones entre los datos en memoria y los datos de Direct Discovery.

Nota: La sentencia DIRECT QUERY no puede contener cláusulas DISTINCT o GROUP BY.

Utilizando la palabra clave MEASURE puede definir campos de los que Qlik Sense es consciente a un “nivel meta”. Los datos reales de un campo de medida residen solo en la base de datos durante el proceso de carga de datos, y se recuperan conforme a las expresiones de gráfico que se utilicen en una visualización.

Normalmente, los campos con valores discretos que se emplearán como dimensiones deberían cargarse con la palabra clave DIMENSION, mientras que los datos numéricos que se utilizarán solo en las agregaciones, deberían seleccionarse con la palabra clave MEASURE.

Los campos DETAIL ofrecen información o detalles, como campos de comentario, que un usuario puede querer mostrar en un cuadro de tabla que descienda a los detalles. Los campos DETAIL no pueden utilizarse en expresiones de gráfico.

Por diseño, la sentencia DIRECT QUERY es neutra en cuanto a la fuente de datos para fuentes de datos que admiten SQL. Por esa razón, la misma sentencia DIRECT QUERY puede utilizarse en distintas bases de datos SQL sin cambiar. Direct Discovery genera consultas adecuadas para la base de datos según se necesiten.

Se puede emplear la sintaxis nativa de la fuente de datos cuando el usuario conozca la base de datos que desea consultar y desee explotar extensiones específicas de la base de datos en SQL. La sintaxis nativa que admite la fuente de datos:

  • Como expresiones de campos en cláusulas DIMENSION y MEASURE
  • Como el contenido de la cláusula WHERE

Ejemplos:

DIRECT QUERY
DIMENSION Dim1, Dim2
MEASURE
NATIVE ('X % Y') AS X_MOD_Y
FROM TableName
DIRECT QUERY
DIMENSION Dim1, Dim2
MEASURE X, Y
FROM TableName
WHERE NATIVE ('EMAIL MATCHES "\*.EDU"')
Nota: Los siguientes términos se utilizan como palabras clave y por lo tanto no pueden utilizarse como nombres de columnas o campos sin ir entre comillas: and, as, detach, detail, dimension, distinct, from, in, is, like, measure, native, not, or, where

Arguments:  

Argumento Descripción
fieldlist

Una lista separada por comas de especificaciones de campo, fieldname {, fieldname}. Una especificación de campo puede ser un nombre de campo, en cuyo caso se utiliza el mismo nombre para el nombre de la columna de la base de datos y el nombre del campo Qlik Sense. O una especificación de campo puede ser un "campo alias," en cuyo caso se da un nombre de campo Qlik Sense a una expresión de base de datos o nombre de columna.

Listas de campos en Direct Discovery

tablelist

es el nombre de una tabla o vista de la base de datos desde la que se cargan los datos. Por lo general se trata de vistas que contienen un JOIN efectuado en la base de datos.

where_clause

La sintaxis completa de las cláusulas WHERE de bases de datos no se define aquí, pero se permiten la mayoría de "expresiones relacionales" de SQL, incluido el uso de llamadas a funciones, el operador LIKE de cadenas, IS NULL e IS NOT NULL, e IN. BETWEEN no se incluye.

NOT es un operador unario, a diferencia de un modificador o determinadas palabras clave.

Ejemplos:

WHERE x > 100 AND "Region Code" IN ('south', 'west')
WHERE Code IS NOT NULL and Code LIKE '%prospect'
WHERE NOT X in (1,2,3)

Este último ejemplo no puede escribirse como:

WHERE X NOT in (1,2,3)

Example:  

En este ejemplo se usa tabla de base de datos denominada TableName, que contiene los campos Dim1, Dim2, Num1, Num2 y Num3.Dim1 y Dim2 se cargarán en el conjunto de datos de Qlik Sense.

DIRECT QUERY DIMENSTION Dim1, Dim2 MEASURE Num1, Num2, Num3 FROM TableName ;
 

Dim1 y Dim2 estarán disponibles para su uso como dimensiones. Num1, Num2 y Num3 estarán disponibles para agregaciones. Dim1 y Dim2 estarán también disponibles para agregaciones. El tipo de agregaciones para el que se pueden utilizar Dim1 y Dim2 depende de sus tipos de datos. Por ejemplo, en muchos casos los campos DIMENSION contienen datos de cadenas como nombres o números de cuenta. Dichos campos no pueden sumarse pero sí contarse: count(Dim1): count(Dim1).

Nota: Las sentencias DIRECT QUERY se escriben directamente en el editor de script. Para simplificar la construcción de sentencias DIRECT QUERY, podemos generar una sentencia SELECT desde una conexión de datos, y a continuación editar el script generado para cambiarlo a una sentencia DIRECT QUERY.
Por ejemplo, la sentencia SELECT:

SQL SELECT
SalesOrderID,
RevisionNumber,
OrderDate,
SubTotal,
TaxAmt
FROM MyDB.Sales.SalesOrderHeader;


podría cambiarse por la siguiente sentencia DIRECT QUERY:

DIRECT QUERY
DIMENSION
SalesOrderID,
RevisionNumber

MEASURE
SubTotal,
TaxAmt

DETAIL
OrderDate

FROM MyDB.Sales.SalesOrderHeader;