Listes de champs Direct Discovery

Une liste de champs est une liste dont les spécifications de champ sont 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. 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.

Les noms de champ peuvent correspondre soit à de simples noms soit à des noms placés entre guillemets. Un nom simple commence par un caractère Unicode alphabétique suivi d'une combinaison quelconque de caractères alphabétiques ou numériques, ou de traits de soulignement. Les noms placés entre guillemets commencent par un guillemet double et contiennent n'importe quelle séquence de caractères. Si un nom entre guillemets contient des guillemets doubles, ces guillemets sont représentés à l'aide de deux guillemets doubles adjacents.

Les noms des champs Qlik Sense respectent la casse des caractères. La sensibilité à la casse des noms des champs de base de données varie en fonction de la base de données utilisée. La fonction de requête Direct Discovery préserve la casse de tous les alias et identificateurs de champ. Dans l'exemple suivant, l'alias "MyState" st utilisé en interne pour stocker les données provenant de la colonne de base de données "STATEID".

DIRECT QUERY Dimension STATEID as MyState Measure AMOUNT from SALES_TABLE;
 

Cet exemple diffère du résultat d'une instruction SQL Select comportant un alias. Si l'alias n'est pas placé entre guillemets de manière explicite, le résultat applique la casse de colonne par défaut renvoyée par la base de données cible. Dans l'exemple suivant, l'instruction SQL Select adressée à une base de données Oracle crée "MYSTATE,", tout en majuscules, comme alias Qlik Sense interne, même si l'alias est spécifié comme étant de casse mixte. L'instruction SQL Select utilise le nom de colonne renvoyé par la base de données, ce qui, dans le cas d'Oracle, signifie un nom en majuscules.

SQL Select STATEID as MyState, STATENAME from STATE_TABLE;
 

Afin d'éviter ce comportement, utilisez l'instruction LOAD pour spécifier l'alias.

Load STATEID as MyState, STATENAME;
SQL Select STATEID, STATEMENT from STATE_TABLE;
 

Dans cet exemple, la colonne "STATEID" est stockée en interne par Qlik Sense sous la forme "MyState".

La plupart des expressions scalaires de base de données sont autorisées en tant que spécifications de champ. Les appels de fonction peuvent aussi être utilisés dans les spécifications de champ. Les expressions peuvent contenir des constantes de type booléen, numérique ou chaîne placée entre guillemets simples (les guillemets simples incorporés sont représentés par des guillemets simples adjacents).

Examples:  

DIRECT QUERY
DIMENSION
SalesOrderID, RevisionNumber
MEASURE
SubTotal AS "Sub Total"
FROM AdventureWorks.Sales.SalesOrderHeader;

 

DIRECT QUERY
DIMENSION
"SalesOrderID" AS "Sales Order ID"
MEASURE
SubTotal,TaxAmt,(SubTotal-TaxAmt) AS "Net Total"
FROM AdventureWorks.Sales.SalesOrderHeader;

 

DIRECT QUERY
DIMENSION
(2*Radius*3.14159) AS Circumference,
Molecules/6.02e23 AS Moles
MEASURE
Num1 AS numA
FROM TableName;

 

DIRECT QUERY
DIMENSION
concat(region, 'code') AS region_code
MEASURE
Num1 AS NumA
FROM TableName;

La fonction Direct Discovery ne prend pas en charge l'utilisation d'agrégations dans les instructions LOAD. Si des agrégations sont employées, les résultats seront imprévisibles. Il est vivement déconseillé d'utiliser une instruction LOAD de ce type :

DIRECT QUERY DIMENSION stateid, SUM(amount*7) AS MultiFirst MEASURE amount FROM sales_table;

SUM ne devrait pas figurer dans l'instruction LOAD.

Direct Discovery ne prend pas non plus en charge les fonctions Qlik Sense dans les instructions Direct Query. Par exemple, la spécification suivante définie pour un champ de type DIMENSION se solde par un échec lorsque le champ "Mth" est utilisé comme dimension dans une visualisation :

month(ModifiedDate) as Mth