Direct Query

Оператор DIRECT QUERY обеспечивает доступ к таблицам через подключение ODBC или OLE DB с помощью функции Direct Discovery.

Syntax:  

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

[WHERE where_clause]

 

Ключевые слова DIMENSION, MEASURE и DETAIL можно использовать в любом порядке.

Предложения ключевых слов DIMENSION и FROM требуются во всех операторах DIRECT QUERY. Ключевое слово FROM должно стоять после ключевого слова DIMENSION.

Поля, указанные сразу после ключевого слова DIMENSION, загружаются в память и могут использоваться для создания связей между данными в памяти и данными Direct Discovery.

Примечание: Оператор DIRECT QUERY не может содержать предложения DISTINCT или GROUP BY.

С помощью ключевого слова MEASURE можно определить поля, которые Qlik Sense будет распознавать на «уровне метаданных». Фактические данные поля measure находятся только в базе данных во время процесса загрузки данных. Они извлекаются через прямое подключение с помощью выражений диаграммы, используемых в визуализации.

Обычно поля с дискретными значениями, которые используются в качестве измерений, загружаются с ключевым словом DIMENSION, тогда как числа, используемые только при агрегировании, должны быть выбраны с ключевым словом MEASURE.

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

Оператор DIRECT QUERY не зависит от источника данных для источников, поддерживающих SQL. Поэтому один и тот же оператор DIRECT QUERY можно использовать для разных баз данных SQL без внесения изменений. Direct Discovery создает запросы для конкретных баз данных, если необходимо.

Исходный синтаксис источника данных можно использовать, когда пользователь знает, какая база данных запрашивается, и хочет использовать специальные расширения для базы данных SQL. Исходный синтаксис источника данных поддерживается:

  • В качестве выражения поля в предложениях DIMENSION и MEASURE
  • В качестве содержимого предложения 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"')
Примечание: Следующие термины используются в качестве ключевых слов и поэтому не могут использоваться в качестве имени столбца или поля без кавычек: and, as, detach, detail, dimension, distinct, from, in, is, like, measure, native, not, or, where

Arguments:  

Аргумент Описание
fieldlist

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

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

tablelist

Список имен таблиц или представлений в базе данных, из которой загружаются данные. Как правило, это представления, содержащие оператор JOIN, выполненный в базе данных.

where_clause

Здесь не приведено полное описание синтаксиса предложений базы данных WHERE, но большинство «реляционных выражений» SQL разрешено использовать, включая вызовы функций, оператор LIKE для строк, IS NULL, IS NOT NULL, а оператор IN. BETWEEN не включен.

NOT — это унарный оператор, в отличие от модификатора на определенные ключевые слова.

Примеры:

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)

Последний пример не может быть записан как:

WHERE X NOT in (1,2,3)

Example:  

В этом примере используется таблица базы данных с именем TableName, содержащая поля Dim1, Dim2, Num1, Num2 и Num3.Поля Dim1 и Dim2 будут загружены в набор данных Qlik Sense.

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

Поля Dim1 и Dim2 будут доступны для использования в качестве измерений. Поля Num1, Num2 и Num3 будут доступны для агрегирований. Поля Dim1 и Dim2 также доступны для агрегирований. Тип агрегирований, для которого могут использоваться поля Dim1 и Dim2, зависит от их типов данных. Например, во многих случаях поля DIMENSION содержат строковые данные, такие как имена или номера счетов. Эти поля нельзя суммировать, но их можно посчитать: count(Dim1).

Примечание: Операторы DIRECT QUERY записываются непосредственно в редактор скриптов. Чтобы упростить конструкцию операторов DIRECT QUERY, можно создать оператор SELECT из подключения к данным, а затем редактировать созданный скрипт, чтобы переделать его в оператор DIRECT QUERY.
Например, оператор SELECT

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


можно заменить следующим оператором DIRECT QUERY:

DIRECT QUERY
DIMENSION
SalesOrderID,
RevisionNumber

MEASURE
SubTotal,
TaxAmt

DETAIL
OrderDate

FROM MyDB.Sales.SalesOrderHeader;