Direct Query
Оператор DIRECT QUERY обеспечивает доступ к таблицам через подключение ODBC или OLE DB с помощью функции Direct Discovery.
Синтаксис:
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.
С помощью ключевого слова MEASURE можно определить поля, которые Qlik Sense будет распознавать на «уровне метаданных». Фактические данные поля measure находятся только в базе данных во время процесса загрузки данных. Они извлекаются через прямое подключение с помощью выражений диаграммы, используемых в визуализации.
Обычно поля с дискретными значениями, которые используются в качестве измерений, загружаются с ключевым словом DIMENSION, тогда как числа, используемые только при агрегировании, должны быть выбраны с ключевым словом MEASURE.
Поля DETAIL обеспечивают информацию или подробности, такие как поля с комментариями, которые пользователь может отобразить в простой таблице, которую можно развернуть и просмотреть подробности. Поля DETAIL не могут использоваться в выражениях диаграммы.
Оператор DIRECT QUERY не зависит от источника данных для источников, поддерживающих SQL. Поэтому один и тот же оператор DIRECT QUERY можно использовать для разных баз данных SQL без внесения изменений. Direct Discovery создает запросы для конкретных баз данных, если необходимо.
Исходный синтаксис источника данных можно использовать, когда пользователь знает, какая база данных запрашивается, и хочет использовать специальные расширения для базы данных SQL. Исходный синтаксис источника данных поддерживается:
- В качестве выражения поля в предложениях DIMENSION и MEASURE
- В качестве содержимого предложения WHERE
Примеры:
DIMENSION Dim1, Dim2MEASURENATIVE ('X % Y') AS X_MOD_Y
DIMENSION Dim1, Dim2MEASURE X, YFROM TableNameWHERE NATIVE ('EMAIL MATCHES "\*.EDU"')
Аргументы:
Аргумент | Описание |
---|---|
fieldlist |
Список спецификаций поля, разделенных запятыми, fieldname {, fieldname}. Спецификация поля может быть именем поля. В этом случае такое же имя используется для имени столбца базы данных и имени поля Qlik Sense. Также спецификация поля может быть «полем alias». В этом случае выражению базы данных или имени столбца задается имя поля Qlik Sense. |
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)
|
Пример:
В этом примере используется таблица базы данных с именем TableName, содержащая поля Dim1, Dim2, Num1, Num2 и Num3.Поля Dim1 и Dim2 будут загружены в набор данных Qlik Sense.
Поля Dim1 и Dim2 будут доступны для использования в качестве измерений. Поля Num1, Num2 и Num3 будут доступны для агрегирований. Поля Dim1 и Dim2 также доступны для агрегирований. Тип агрегирований, для которого могут использоваться поля Dim1 и Dim2, зависит от их типов данных. Например, во многих случаях поля DIMENSION содержат строковые данные, такие как имена или номера счетов. Эти поля нельзя суммировать, но их можно посчитать: count(Dim1).
Например, оператор 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;