# Direct Discovery 变量

## Direct Discovery 系统变量

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/DirectDiscovery/direct-discovery-variables.htm)

#### DirectCacheSeconds

您可以为 Direct Discovery 可视化查询结果设置缓存限制。在达到此时间限制后，Qlik Sense 会在执行新的 Direct Discovery 查询时清除缓存。Qlik Sense 将查询选择项的源数据并将为指定的时间限制再次创建缓存。对于各选择项组合，将独立缓存其结果。即为每个选择项独立刷新缓存，对于一个选择项，仅对所选字段刷新缓存，对于另一个选择项，对其相关字段刷新缓存。如果第二个选择项包含在第一个选择项中刷新的字段，则在尚未达到缓存限制的情况下不会在缓存中再次更新这些字段。

Direct Discovery 缓存不适用于表格可视化。对于表格选择项，每次都会查询数据源。

限值设置必须使用秒为单位。默认缓存限制是 1800 秒（30 分）。

用于 DirectCacheSeconds 的值是在执行 DIRECT QUERY 语句时设置的值。在运行时不能更改此值。

示例：

```
SET DirectCacheSeconds=1800;
```

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/DirectDiscovery/direct-discovery-variables.htm)

#### DirectConnectionMax

您可使用连接池功能进行数据库异步、并行调用。设置连接池功能的加载脚本语法如下所示：

```
SET DirectConnectionMax=10;  
```

数字设置指定更新表格时 Direct Discovery 代码应使用的最大数据库连接数量。默认设置为 1。

信息注释此变量应谨慎使用。如果将其设置为大于 1 的数，会导致在连接到 Microsoft SQL Server 时出现问题。

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/DirectDiscovery/direct-discovery-variables.htm)

#### DirectUnicodeStrings

Direct Discovery 可以通过使用一些数据库（尤其是 SQL Server）所要求的扩展字符串文字 (N’&lt;扩展字符串&gt;’) 的 SQL 标准格式来支持扩展 Unicode 数据的选择。带有脚本变量 DirectUnicodeStrings 的 Direct Discovery 允许使用这种语法。

将该变量设置为“真”将允许在字符串文字之前使用 ANSI 标宽字符标记“N”。并非所有数据库都支持此标准。默认设置为“假”。

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/DirectDiscovery/direct-discovery-variables.htm)

#### DirectDistinctSupport

如果在 Qlik Sense 对象中选择 DIMENSION 字段值，则会为源数据库生成查询。当查询要求分组时，Direct Discovery 会使用 DISTINCT 关键字仅选择唯一的值。但是，某些数据库要求使用 GROUP BY 关键字。将 DirectDistinctSupport 设置为 'false' 会在唯一值的查询中生成 GROUP BY，而非 DISTINCT。

```
SET DirectDistinctSupport='false';  
```

如果将 DirectDistinctSupport 设置为“真”，则使用 DISTINCT。否则，默认行为是使用 DISTINCT。

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/DirectDiscovery/direct-discovery-variables.htm)

#### DirectEnableSubquery

在高基数多表格情形中，可能会在 SQL 查询中生成子查询，而不是生成很大的 IN 子句。这可以通过将 DirectEnableSubquery 设置为 'true' 来激活。默认值为 'false'。

信息注释启用 DirectEnableSubquery，无法加载不是处于 Direct Discovery 模式下的表格。

SET DirectEnableSubquery='true';

## Teradata 查询分级变量

Teradata 查询分段是一种使企业应用程序能够与底层 Teradata 数据库协作的功能，以便提供更好的核算、优先级排序和工作量管理。使用查询分级，可以围绕查询限制元数据，例如用户凭据。

两个变量都可用，都是发送到数据库的评估字符串。

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/DirectDiscovery/direct-discovery-variables.htm)

#### SQLSessionPrefix

在创建数据库连接时，发送此字符串。

SET SQLSessionPrefix = 'SET QUERY\_BAND = ' & Chr(39) & 'Who=' & OSuser() & ';' & Chr(39) & ' FOR SESSION;';

例如，如果 OSuser() 返回 WA\sbt，将针对 SET QUERY\_BAND = 'Who=WA\sbt;' FOR SESSION; 评估此结果，此字符串会在创建连接时发送到数据库。

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/DirectDiscovery/direct-discovery-variables.htm)

#### SQLQueryPrefix

每一次查询都发送此字符串。

SET SQLSessionPrefix = 'SET QUERY\_BAND = ' & Chr(39) & 'Who=' & OSuser() & ';' & Chr(39) & ' FOR TRANSACTION;';

## [](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/DirectDiscovery/direct-discovery-variables.htm)Direct Discovery 字符变量

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/DirectDiscovery/direct-discovery-variables.htm)

#### DirectFieldColumnDelimiter

您可以在 Direct Query 数据库语句中将使用的字符设置为字段分隔符，字段分隔符必须是非逗号字符。在 SET 语句中，必须对指定字符使用单引号。

SET DirectFieldColumnDelimiter= '|'

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/DirectDiscovery/direct-discovery-variables.htm)

#### DirectStringQuoteChar

可以指定要在生成的查询中用于引用字符串的字符。默认值是单引号。在 SET 语句中，必须对指定字符使用单引号。

SET DirectStringQuoteChar= '"';

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/DirectDiscovery/direct-discovery-variables.htm)

#### DirectIdentifierQuoteStyle

可以指定在生成的查询中使用的非 ANSI 引用的标识符。此时，唯一可用的非ANSI 引用是 GoogleBQ。默认设置为 ANSI。可以使用大写、小写和混合大小写格式 (ANSI, ansi, Ansi)。

SET DirectIdentifierQuoteStyle="GoogleBQ";

例如，在以下 SELECT 语句中使用 ANSI 引用：

SELECT [Quarter] FROM [qvTest].[sales] GROUP BY [Quarter]

当 DirectIdentifierQuoteStyle 设置为 "GoogleBQ" 时，SELECT 语句将使用如下引用：

SELECT [Quarter] FROM [qvTest.sales] GROUP BY [Quarter]

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/DirectDiscovery/direct-discovery-variables.htm)

#### DirectIdentifierQuoteChar

可以指定要在生成的查询中控制标识符引用的字符。此字符可以设置为一个字符（例如双引号）或两个字符（例如方括号对）。默认值是双引号。

SET DirectIdentifierQuoteChar='[]';

SET DirectIdentifierQuoteChar='``';

SET DirectIdentifierQuoteChar=' ';

SET DirectIdentifierQuoteChar='""';

[支持的数据源Direct Discovery](https://help.qlik.com/zh-CN/sense/May2026/Subsystems/Hub/Content/Sense_Hub/DirectDiscovery/data-sources-supported-in-direct-discovery.htm)

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/DirectDiscovery/direct-discovery-variables.htm)

#### DirectTableBoxListThreshold

在表格可视化中使用 Direct Discovery 字段时，可设置阈值来限制显示的行数。默认阈值为 1000 个记录。默认阈值设置可以更改，只需在加载脚本中设置 DirectTableBoxListThreshold 变量。例如：

SET DirectTableBoxListThreshold=5000;

阈值设置仅适用于包含 Direct Discovery 字段的表格可视化。仅包含内存中字段的表格可视化不受 DirectTableBoxListThreshold 设置限制。

在选择项的记录少于阈值限制之前，不会在表格可视化中显示任何字段。

## Direct Discovery 数字解释变量

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/DirectDiscovery/direct-discovery-variables.htm)

#### DirectMoneyDecimalSep

定义的小数位分隔符会替代使用 Direct Discovery 加载数据生成的 SQL 语句中的货币小数位符号。此字符必须与 DirectMoneyFormat 中使用的字符一致。

默认值为 '.'。

示例：

Set DirectMoneyDecimalSep='.';

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/DirectDiscovery/direct-discovery-variables.htm)

#### DirectMoneyFormat

定义的符号会替代使用 Direct Discovery 加载数据而生成的 SQL 语句中的货币格式。不应包含千分位分隔符的货币符号。

默认值为 '#.0000'。

示例：

Set DirectMoneyFormat='#.0000';

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/DirectDiscovery/direct-discovery-variables.htm)

#### DirectTimeFormat

定义的时间格式会替代使用 Direct Discovery 加载数据生成的 SQL 语句中的时间格式。

示例：

Set DirectTimeFormat='hh:mm:ss';

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/DirectDiscovery/direct-discovery-variables.htm)

#### DirectDateFormat

定义的日期格式会替代使用 Direct Discovery 加载数据生成的 SQL 语句中的日期格式。

示例：

Set DirectDateFormat='MM/DD/YYYY';

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/DirectDiscovery/direct-discovery-variables.htm)

#### DirectTimeStampFormat

定义的格式会替代使用 Direct Discovery 加载数据而在 SQL 语句中生成的 SQL 语句中的日期和时间格式。

示例：

Set DirectTimestampFormat='M/D/YY hh:mm:ss[.fff]';

## 了解详情

* [使用 Direct Discovery 访问大数据集](https://help.qlik.com/zh-CN/sense/May2026/Subsystems/Hub/Content/Sense_Hub/DirectDiscovery/access-large-data-sets-with-direct-discovery.htm)