Direct Query

L'instruction DIRECT QUERY vous permet d'accéder à des tables par le biais d'une connexion ODBC ou OLE DB au moyen de la fonction Direct Discovery.

Remarque: Cette fonctionnalité n'est pas disponible sous Kubernetes.

Syntax:  

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

[WHERE where_clause]

 

Les mots-clés DIMENSION, MEASURE et DETAIL peuvent être utilisés dans n'importe quel ordre.

Les clauses des mots-clés DIMENSION et FROM sont obligatoires pour toutes les instructions DIRECT QUERY. Le mot-clé FROM doit figurer après le mot-clé DIMENSION.

Les champs spécifiés directement après le mot-clé DIMENSION sont chargés en mémoire ; ils peuvent être utilisés pour créer des associations entre les données en mémoire et les données Direct Discovery.

Remarque: L'instruction DIRECT QUERY ne peut pas contenir de clauses DISTINCT ou GROUP BY.

Vous pouvez utiliser le mot-clé MEASURE pour définir des champs reconnus par Qlik Sense à un « niveau méta ». Les données réelles d'un champ de mesure résident uniquement dans la base de données lors du processus de chargement et sont récupérées de manière ad hoc d'après les expressions de graphique utilisées dans une visualisation.

En général, les champs dotés de valeurs discrètes utilisées comme dimensions sont à charger à l'aide du mot-clé DIMENSION tandis que les nombres exclusivement employés dans les agrégations doivent être sélectionnés à l'aide du mot-clé MEASURE.

Les champs de type DETAIL fournissent des informations ou des détails, par exemple des champs de commentaire, que les utilisateurs peuvent souhaiter afficher dans une zone table présentant plusieurs niveaux de détail. Il n'est pas possible d'utiliser des champs de type DETAIL dans des expressions de graphique.

De par sa conception, l'instruction DIRECT QUERY est neutre vis-à-vis des sources de données prenant en charge le langage SQL. C'est pour cette raison qu'il est possible d'utiliser la même instruction DIRECT QUERY pour différentes bases de données SQL sans modification. Direct Discovery génère des requêtes adaptées à la base de données en fonction des besoins.

La syntaxe native des sources de données peut s'utiliser lorsque l'utilisateur connaît la base de données soumise aux requêtes et qu'il souhaite exploiter des extensions propres à la base de données pour SQL. La syntaxe native des sources de données est prise en charge :

  • Sous forme d'expressions de champ dans les clauses DIMENSION et MEASURE
  • Sous forme de contenu de la clause WHERE

Exemples :

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"')
Remarque: Les termes suivants sont utilisés comme des mots-clés et ne peuvent donc pas servir de noms de champ ou de colonne sans être placés entre guillemets : . and, as, detach, detail, dimension, distinct, from, in, is, like, measure, native, not, or, where

Arguments:  

Argument Description
fieldlist

Liste de spécifications de champs séparées par des virgules, fieldname {, fieldname}. Une spécification de champ peut correspondre à un nom de champ, auquel cas le même nom est utilisé pour le nom de colonne dans la base de données et le nom de champ Qlik Sense. Une spécification de champ peut également désigner un « alias de champ », auquel cas un nom de colonne ou d'expression de base de données se voit attribuer un nom de champ Qlik Sense.

Listes de champs Direct Discovery

tablelist

Liste des noms des tables ou des vues de la base de données à partir desquelles les données seront chargées. En général, il s'agit de vues contenant une JOINTURE réalisée sur la base de données.

where_clause

La syntaxe complète des clauses WHERE de base de données sort du cadre de cette rubrique, mais la plupart des « expressions relationnelles » SQL sont autorisées, y compris l'emploi des appels de fonction, l'opérateur LIKE pour les chaînes, IS NULL et IS NOT NULL ; IN. BETWEEN n'est pas inclus.

NOT est un opérateur unaire, par opposition à un modificateur de certains mots-clés.

Exemples :

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)

Il n'est pas possible d'écrire le dernier exemple de la manière suivante :

WHERE X NOT in (1,2,3)

Example:  

Dans cet exemple, une table de base de données, intitulée TableName, contient les champs Dim1, Dim2, Num1, Num2 et Num3.Dim1 et Dim2 seront chargés dans l'ensemble de donnée Qlik Sense.

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

Dim1 et Dim2 seront disponibles pour être utilisés comme dimensions. Num1, Num2 et Num3 seront disponibles pour les agrégations. Dim1 et Dim2 sont également disponibles pour les agrégations. Le type d'agrégation pour lequel les champs Dim1 et Dim2 peuvent être utilisés dépend du type de leurs données. Par exemple, dans de nombreux cas, les champs DIMENSION contiennent des données de chaîne telles que des noms ou des numéros de compte. Il est impossible d'additionner ces champs, mais pas de les compter : count(Dim1).

Remarque: Les instructions DIRECT QUERY sont directement rédigées dans l'éditeur de script. Afin de simplifier la construction des instructions DIRECT QUERY, vous pouvez générer une instruction SELECT à partir d'une connexion de données, puis modifier le script résultant en vue de le convertir en instruction DIRECT QUERY.
Par exemple, il est possible de modifier l'instruction SELECT

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


pour obtenir l'instruction DIRECT QUERY suivante :

DIRECT QUERY
DIMENSION
SalesOrderID,
RevisionNumber

MEASURE
SubTotal,
TaxAmt

DETAIL
OrderDate

FROM MyDB.Sales.SalesOrderHeader;