Direct Query

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

语法:  

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关键字,您可以定义QlikView 在“元级别”识别的字段。在数据加载过程中,度量字段的实际数据只驻留在数据库中,并且通过在图表中使用的图表表达式推动进行临时检索。

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

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

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

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

  • 作为 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

参数:  

参数 说明
fieldlist

字段规范的逗号分隔名称:fieldname {, fieldname}。字段规范可以是字段名称,在此情况下,相同名称用于数据库列名称和QlikView字段名称。字段规范也可以是“字段别名”,在此情况下,数据库表达式或列名称被给予 QlikView字段名称。

另请: Direct Discovery字段列表

tablelist

数据库中将从其中加载数据的表格或视图的名称列表。通常,这是包含对数据库执行 JOIN 的视图。

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)

示例:  

在本例中,数据库表称为 TableName,包含使用的字段 Dim1Dim2Num1Num2Num3。将 Dim1Dim2 加载到 QlikView 数据集。

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;