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.
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.
Vous pouvez utiliser le mot-clé MEASURE pour définir des champs reconnus par QlikView à un « niveau méta ». Les données réelles d'un champ MEASURE 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 un graphique.
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.
Il est possible d'employer la syntaxe NATIVE des sources de données lorsque l'utilisateur connaît la base de données interrogée 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
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"');
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 QlikView. 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 QlikView. |
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 un qualificateur JOIN appliqué à 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.
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)
|
Dans cet exemple, soit une table de base de données nommée TableName, contenant les champs Dim1, Dim2, Num1, Num2 et Num3.Les champs Dim1 et Dim2 seront chargés dans l'ensemble de données QlikView.
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. Ces champs ne peuvent pas être additionnés, mais ils peuvent être comptés : count(Dim1).
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;