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 можно определить поля, которые QlikView будет распознавать на «уровне метаданных». Фактические данные поля «Мера» находятся только в базе данных во время процесса загрузки данных. Они извлекаются через прямое подключение с помощью выражений, используемых в диаграмме.
Обычно поля с дискретными значениями, которые используются в качестве измерений, загружаются с ключевым словом DIMENSION, тогда как числа, используемые только при агрегировании, должны быть выбраны с ключевым словом MEASURE.
Поля DETAIL обеспечивают информацию или подробности, такие как поля с комментариями, которые пользователь может отобразить в простой таблице, которую можно развернуть и просмотреть подробности. Поля DETAIL не могут использоваться в выражениях диаграммы.
Оператор DIRECT QUERY не зависит от источника данных для источников, поддерживающих SQL. Поэтому один и тот же оператор DIRECT QUERY можно использовать для разных баз данных SQL без внесения изменений. Direct Discovery создает запросы для конкретных баз данных, если необходимо.
Синтаксис источника данных NATIVE можно использовать, если пользователь знает, какая база данных запрашивается, и хочет использовать специальные расширения для базы данных SQL. Синтаксис источника данных NATIVE поддерживается:
- В качестве выражения поля в предложениях 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"');
Аргументы:
Аргумент | Описание |
---|---|
fieldlist |
Список спецификаций поля, разделенных запятыми, fieldname {, fieldname}. Спецификация поля может быть именем поля. В этом случае такое же имя используется для имени столбца базы данных и имени поля QlikView. Также спецификация поля может быть «полем alias». В этом случае выражению базы данных или имени столбца задается имя поля QlikView. |
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 будут загружены в набор данных QlikView.
Поля 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;