Direct Discovery 字段列表

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

字段名称既可以是简单名称也可以是引用名称。简单名称以字母 Unicode 字符为开头,后跟字母或数字字符或下划线的任意组合。引用名称以双引号为开头,并包含任意字符序列。如果引用名称包含双引号,则这些引号使用两个相邻的双引号表示。

Qlik Sense 字段名称区分大小写。数据库字段名称可能会或可能不会区分大小写,具体取决于数据库。Direct Discovery 查询保留所有字段标识符和别名的情况。在下例中,内部使用别名 "MyState" 存储数据库列 "STATEID" 的数据。

DIRECT QUERY Dimension STATEID as MyState Measure AMOUNT from SALES_TABLE;
 

这不同于使用别名的 SQL Select 语句的结果。如果没有明确引用别名,则结果包含由目标数据库返回的列的默认情况。在下例中,SQL Select 语句用于在 Oracle 数据库中创建 "MYSTATE,",且所有字母均为大写,这就像内部 Qlik Sense 别名一样,即使指定别名为混合大小写也是如此。SQL Select 语句使用数据库返回的列名称,在这种情况下 Oracle 为全部大写。

SQL Select STATEID as MyState, STATENAME from STATE_TABLE;
 

要避免这种行为,可使用 LOAD 语句指定别名。

Load STATEID as MyState, STATENAME;
SQL Select STATEID, STATEMENT from STATE_TABLE;
 

在本例中,Qlik Sense 在内部将 "STATEID" 列存储作为 "MyState"

可以将大部分数据库的标量表达式作为字段规范。在字段规范中也可以使用函数调用。表达式包含的常量可以是布尔值、数字或用单引号括起来的字符串(嵌入式单引号用相邻的单引号表示)。

Examples:  

DIRECT QUERY
DIMENSION
SalesOrderID, RevisionNumber
MEASURE
SubTotal AS "Sub Total"
FROM AdventureWorks.Sales.SalesOrderHeader;

 

DIRECT QUERY
DIMENSION
"SalesOrderID" AS "Sales Order ID"
MEASURE
SubTotal,TaxAmt,(SubTotal-TaxAmt) AS "Net Total"
FROM AdventureWorks.Sales.SalesOrderHeader;

 

DIRECT QUERY
DIMENSION
(2*Radius*3.14159) AS Circumference,
Molecules/6.02e23 AS Moles
MEASURE
Num1 AS numA
FROM TableName;

 

DIRECT QUERY
DIMENSION
concat(region, 'code') AS region_code
MEASURE
Num1 AS NumA
FROM TableName;

Direct Discovery 不支持在 LOAD 语句中使用聚合。如果使用聚合,则结果将不可预测。不得使用类似如下的 LOAD 语句:

DIRECT QUERY DIMENSION stateid, SUM(amount*7) AS MultiFirst MEASURE amount FROM sales_table;

LOAD 语句中不得使用 SUM

Direct Discovery 也不支持在 Direct Query 语句中使用 Qlik Sense 函数。例如,当将 "Mth" 字段用作可视化的维度时,DIMENSION 字段的以下规范将无法使用:

month(ModifiedDate) as Mth