Direct Query

DIRECT QUERY 语句可让您使用 Direct Discovery 函数通过 ODBCOLE DB 连接访问表格。

备注: 该功能在 Kubernetes 中不可用。

Syntax:  

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

[WHERE where_clause]

 

DIMENSIONMEASUREDETAIL 关键字可以按任何顺序使用。

DIMENSIONFROM 关键字子句在所有 DIRECT QUERY 语句中都是必需的。FROM 关键字必须在 DIMENSION 关键字后面。

DIMENSION 关键字后面直接指定的字段在内存中加载,并且可用于创建内存中数据与 Direct Discovery 数据之间的关联。

备注: DIRECT QUERY 语句不能包含 DISTINCTGROUP BY 子句。

使用 MEASURE 关键字,您可以定义 Qlik Sense 在“元级别”识别的字段。在数据加载过程中度量字段的实际数据只驻留在数据库中,并且通过在可视化中使用的图表表达式推动进行临时检索。

通常,具有用作维度离散值的字段应使用 DIMENSION 关键字加载,而只用于聚合的数字应使用 MEASURE 关键字来选择。

DETAIL 字段提供用户可能希望在“钻取至详细信息”表窗格中显示的信息或详细信息,如注释字段。DETAIL 字段不能用于图表表达式中。

按照设计,DIRECT QUERY 语句是数据源的中立数据源,用于支持 SQL。由于此原因,可以将同一 DIRECT QUERY 语句用于不同的 SQL 数据库,不需要进行任何更改。Direct Discovery 根据需要生成相应的数据库查询。

如果用户知道要查询的数据库并希望利用 SQL 的数据库特定扩展名,可以使用本地数据源语法。支持本地数据源语法:

  • 作为 DIMENSIONMEASURE 子句中的字段表达式
  • 作为 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 字段名称。字段规范也可以是“字段别名”,在此情况下,数据库表达式或列名称被给予 Qlik Sense 字段名称。

Direct Discovery 字段列表

tablelist

数据库中将从其中加载数据的表格或视图的名称列表。通常是包含在数据库中执行的联接的视图。

where_clause

此处没有定义数据库 WHERE 子句的完整语法,但允许使用大部分 SQL“关系表达式”,包括使用函数调用、字符串的 LIKE 运算符、IS NULLIS 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 的数据库表,包含字段 Dim1Dim2Num1Num2Num3Dim1Dim2 将被载入 Qlik Sense 数据集。

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

可将 Dim1Dim2 用作维度。Num1Num2Num3 均可用于聚合。Dim1Dim2 也可用于聚合。可以用于 Dim1Dim2 的聚合类型取决于其数据类型。例如,在很多情况下,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;