Списки полей Direct Discovery

Список полей — это список спецификаций поля, разделенных запятыми: fieldname {, fieldname}. Спецификация поля может быть именем поля. В этом случае такое же имя используется для имени столбца базы данных и имени поля. Также спецификация поля может быть «полем alias». В этом случае выражению базы данных или имени столбца задается имя поля Qlik Sense.

Имена полей могут быть простыми именами или заключенными в кавычки. Простое имя начинается с буквенного символа Юникода и состоит из комбинации букв, цифр и знаков подчеркивания. Имена в кавычках начинаются с двойной кавычки и содержат любую последовательность символов. Если имя, заключенное в кавычки, содержит двойные кавычки, эти кавычки представляются в виде двух смежных двойных кавычек.

Имена полей Qlik Sense используются с учетом регистра. Имена полей базы данных могут учитывать или не учитывать регистр, в зависимости от базы данных. Запрос Direct Discovery сохраняет регистр всех идентификаторов полей и псевдонимов. В следующем примере псевдоним "MyState" используется для внутренних целей для сохранения данных из столбца базы данных "STATEID".

DIRECT QUERY Dimension STATEID as MyState Measure AMOUNT from SALES_TABLE;
 

Это отличается от результата использования оператора SQL Select с псевдонимом. Если псевдоним не заключен в кавычки, результат будет содержать регистр по умолчанию столбца, возвращенного целевой базой данных. В следующем примере оператор SQL Select для базы данных Oracle создает "MYSTATE," со всеми буквами в верхнем регистре, как и внутренний псевдоним Qlik Sense, даже если в псевдониме используются символы в разном регистре. Оператор SQL Select использует имя столбца, возвращенное базой данных, которое в случае Oracle состоит из всех символов в верхнем регистре.

SQL Select STATEID as MyState, STATENAME from STATE_TABLE;
 

Чтобы избежать такого поведения, для указания псевдонима используйте оператор LOAD.

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

В данном примере столбец "STATEID" сохраняется Qlik Sense для внутренних целей в качестве "MyState".

Большинство скалярных выражений базы данных разрешено использовать в качестве спецификаций поля. Вызовы функций также можно использовать в качестве спецификаций поля. Выражения могут содержать константы: булевы, числовые или строки, заключенные в одиночные кавычки (встроенные одинарные кавычки представляются в виде двух смежных одинарных кавычек.).

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;

Direct Discovery не поддерживает использование агрегирования в операторах LOAD. При использовании агрегирования результат может быть непредсказуемым. Оператор LOAD не следует использовать следующим образом:

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

SUM не следует использовать в операторе LOAD.

Direct Discovery также не поддерживает функции Qlik Sense в операторах Direct Query. Например, использование следующей спецификации для поля DIMENSION приведет к возникновению ошибки, когда поле "Mth" будет использоваться в качестве измерения в визуализации:

month(ModifiedDate) as Mth