使用 Direct Discovery 时的限制
信息注释不会进行 Direct Discovery 新的开发来克服这些限制。
支持的数据类型
Direct Discovery 支持所有数据类型,不过可能存在以下情况:需要对 QlikView 定义特定源数据格式。为此,可在加载脚本中使用“SET Direct...Format”语法。以下示例展示了如何定义用作 Direct Discovery 数据源的源数据库的数据格式:
示例:
SET DirectDateFormat='YYYY-MM-DD';
还有两个脚本变量可控制 Direct Discovery 如何在生成的 SQL 语句中设置货币类型值的格式:
SET DirectMoneyFormat (default '#.0000')
SET DirectMoneyDecimalSep (default '.')
这两个变量的语法与 MoneyFormat 和 MoneyDecimalSep 的语法相同,但在应用中有两个重要的不同之处:
- 由于不是显示格式,因此不应包含货币符号或千分位分隔符。
- 默认值不是按场景变化的,而是硬连接到值的。(特定于场景的格式包括货币符号。)
Direct Discovery 支持选择扩展 Unicode 数据,只需使用一些数据库(例如 SQL Server)所要求的扩展字符串文字 (N’<扩展字符串>’) 的 SQL 标准格式。带有脚本变量 DirectUnicodeStrings 的 Direct Discovery 可启用此语法。将该变量设置为 "true",可在字符串文字之前使用 "N"。
安全性
在使用 Direct Discovery 时,应考虑以下有关安全性的最佳做法:
- 使用带有 Direct Discovery 功能的相同应用程序的所有用户均使用相同的连接。不支持传递和按用户使用凭据的身份验证。
- 仅在服务器模式下支持区域权限。
- 可以使用 NATIVE 关键字表达式在数据库中执行自定义 SQL 语句,因此加载脚本中设置的数据库连接应使用以下帐户:对此数据库有只读访问权限的帐户。
- Direct Discovery 没有日志记录功能,但可以使用 ODBC 跟踪功能。
- 可以使用客户端的请求注入数据库。
- 可以从服务器日志文件中获取详细的错误消息。
不支持 QlikView 功能
由于 Direct Discovery 具有交互性和 SQL 语法特定特性,因此不支持多种功能:
- 高级计算(集合分析、复杂表达式)
- 计算维度
- 在使用 Direct Discovery 字段的对象上对比分析(替换状态)
- 使用搜索功能时,Direct DiscoveryMEASURE 和 DETAIL 字段不受支持。
- 访问 Direct Discovery 表格的应用程序中的二进制加载
- 循环和减少
- Direct Discovery 表格的合成钥
- 脚本中的表格命名方式不适用于 Direct Discovery 表格
- 在加载脚本中的 DIRECT QUERY 关键字后使用通配符 * 字符 (DIRECT QUERY *)
- 不支持带有 LONG 数据类型列的 Oracle 数据库表格。
- 科学记数法中超出 [-9007199254740990, 9007199254740991] 范围的大整数会导致舍入错误和未定义行为。