分析 | 迁移中心帮助
跳到主要内容 跳到补充内容

分析

上次更新日期:2026/10/14

QV2QS 会自动扫描每个 QlikView 文档,以查找迁移后可能需要注意的功能和模式。部分发现项属于信息性。其他发现指出了不受支持的功能或在 Qlik Sense 中运行方式不同的方面。结果显示在执行摘要的 其他发现 部分以及 Excel 报告的 分析 工作表中。

分析与转换报告是分开的。转换报告用于衡量对象的转换效果。该分析识别出 Qlik Cloud 部署的其他兼容性问题。

扫描了哪些内容

QV2QS 检查 QlikView 文档的七个方面。

隐藏脚本

QlikView 文档可以包含在可见脚本之前执行的隐藏加载脚本。隐藏脚本存储在 QVW/QVF 二进制文件的压缩块中,在 PRJ 文件夹中不可见。QV2QS 从二进制文件中提取隐藏脚本,并将其添加到 script.qvs 中的可见加载脚本之前。当检测到隐藏脚本时,Analysis 工作表和执行摘要的 Other findings 部分中会显示一条信息性发现。

加载脚本模式

QV2QS 扫描加载脚本 (LoadScript.txt),以查找在迁移期间需要注意的语句和函数。当存在隐藏脚本时,隐藏脚本内容将包含在扫描中。部分语句在 Qlik Sense 中不受支持。其他模式可能需要路径调整或替代方法。注释行和块注释从扫描中排除。

检测到以下模式:

模式 描述
二进制加载 从另一个 QVW 文件加载数据的 BINARY 语句。数据加载方式可能需要修改。
捆绑包加载 在 QVW 中嵌入图像的 BUNDLE 或 INFO LOAD 语句。在 Qlik Sense 中不受支持。
InputField 用于用户数据输入的 INPUTFIELD 语句。在 Qlik Sense 中不受支持。
Direct Discovery 用于实时数据源连接的 DIRECT QUERY 语句。在 Qlik Sense 中不受支持。
包括 $(Include=...) 或 $(Must_Include=...) 对外部脚本文件的引用。文件路径可能需要调整。
命令 用于执行操作系统命令的 COMMAND 语句。在 Qlik Sense 中不受支持。
执行: 用于运行外部程序的 EXECUTE 语句。在 Qlik Cloud 中不受支持。
Image_Size Image_Size 函数在 Qlik Sense 中不受支持。
GetCurrentField GetCurrentField 函数在 Qlik Sense 中不受支持。
GetExtendedProperty GetExtendedProperty 函数在 Qlik Sense 中不受支持。
输入平均值 / 输入总和 输入字段的聚合函数。在 Qlik Sense 中不受支持。
MsgBox 用于对话框的 MsgBox 函数。在 Qlik Sense 中不受支持。
NoOfReports NoOfReports 函数在 Qlik Sense 中不受支持。
报告注释 / 报告 ID / 报告名称 / 报告编号 报表相关功能。在 Qlik Sense 中不受支持。

每个发现均包含加载脚本中的行号和行文本。

文档属性

QV2QS 检查 DocProperties.xml 中是否存在需要注意的文档级功能。某些在 Qlik Sense 中不受支持。其他项受支持,但需要手动设置或行为有所不同。

属性 描述
区域权限 行级安全已启用。Qlik Sense 支持区域权限,但语法有所不同。
动态数据更新 动态数据更新已启用。在 Qlik Sense 中不受支持。
Direct Discovery 模式 Direct Query 模式在文档级别启用。在 Qlik Sense 中不受支持。
警报 存在告警定义。Qlik Sense 不支持警报。
文档 OnOpen 操作 已定义文档级 OnOpen 触发器操作。需要手动重新创建。
文档 OnPostReload 操作 已定义文档级 OnPostReload 触发器操作。需要手动重新创建。
文档扩展 文档扩展已安装。不支持除 QVAccessibility 以外的扩展。

字段属性

QV2QS 会检测启用了 始终选择一个 属性的字段。此属性是引擎级设置,无法通过 JSON 构建输出应用。部署后,必须在 Qlik Sense 应用程序编辑器中手动应用该属性。

VBA 宏

QV2QS 从 PRJ 文件夹中读取 Module.txt,并解析所有 VBA Sub 和 Function 定义。对于每个宏,该分析都会报告其名称、类型(Sub 或 Function)以及行数。

QV2QS 还会通过扫描每个对象 XML 文件和 DocProperties.xml 中调用宏的操作触发器,来交叉引用宏调用。交叉引用标明了哪些对象调用了哪些宏,以及这些对象所在的工作表。已定义但从未调用的宏会被标记为未使用。

集合分析中的表达式引用

QV2QS 扫描所有对象表达式(维度、度量、显示条件、颜色表达式、文本表达式)和变量定义,以查找在 Qlik Sense 中表现不同的集合分析引号模式。QlikView(2017 年 11 月之前)将集合修饰符中的单引号值视为不区分大小写的搜索,与双引号值相同。Qlik Sense 将单引号值视为区分大小写的字面量。

检测到以下模式:

模式 规则 可能性 描述 修复
单引号通配符 ('*US*', 'A?', '^abc') 单引号中的通配符 高 通配符 *、? 以及 ^ 词边界定位符在 Qlik Sense 中被解释为字面文本,而不是搜索模式。 将单引号替换为双引号以恢复搜索行为。
单引号比较 ('>=5', '<2020') 单引号中的比较 高 比较运算符 >、>=、<、<= 在 Qlik Sense 中被解释为字面文本,而不是数值搜索。 将单引号替换为双引号以恢复数值比较。
单引号模糊搜索 ('~company') 单引号中的模糊搜索 高 ~ 前缀会触发双引号中的模糊匹配。在单引号中,Qlik Sense 会将其视为文字字符串。 将单引号替换为双引号以恢复模糊搜索。
单引号表达式搜索 ('=Sum(Sales)>100') 单引号中的表达式搜索 高 = 前缀会触发双引号内的表达式搜索。在单引号中,Qlik Sense 会将其视为文字字符串。 将单引号替换为双引号以恢复表达式搜索。
单引号搜索修饰符 ('+abc', '-solution') 单引号中的搜索修饰符 高 +(必须包含)和 -(不得包含)修饰符在双引号中有效。在单引号中,Qlik Sense 将它们视为文本字符串。 将单引号替换为双引号以恢复修饰符行为。
单引号复合搜索 ('(1|2|3)', '(*ABC*&?*Inc*)') 单引号中的复合搜索 高 使用逻辑运算符 | (OR)、& (AND)、^ (XOR) 的复合搜索在双引号中有效。在单引号中,Qlik Sense 会将其视为文字字符串。 将单引号替换为双引号以恢复复合搜索。
数值字段中的单引号值(日期或数字字段中的 '2020') 数值字段上的单引号 高 单引号括起的值与 Qlik Sense 中的文本表示相匹配。在数值或双重字段上,文本表示形式可能与存储的值不匹配,从而导致类型不匹配。 请改用不带引号的数值或双引号。
未加引号的裸字符串 ({USA,France}) 未加引号的裸值 低 Qlik Sense 接受未加引号的值,但在存在空格、运算符或特殊字符时,其行为可能不稳定。 用单引号将该值括起来以进行字面量匹配。
裸字段引用 (<Field1=Field2>) 裸字段引用 高 QlikView 允许 <Field1=Field2> 在字段之间转移选择。Qlik Sense 不支持在集合修饰符中使用裸字段到字段引用。 替换为 <Field1=P(Field2)> 以使用 P() 元素函数。
不带大括号的裸值 (<Country=USA>) 不带大括号的裸值 高 集合修饰符赋值右侧不带大括号的值。QlikView 可能会根据上下文将该值解释为字面量或字段引用。Qlik Sense 要求将值置于大括号内。 用大括号括起来:<Country={USA}> 或 <Country={'USA'}>。

文本字段中用单引号括起来的纯文本值(例如 'USA')不会被标记。这些值在 Qlik Sense 中可以正确用作区分大小写的字面量。

QV2QS 支持在集合修饰符赋值的左侧使用方括号引用的 ([Invoice Number])、双引号引用的 ("Invoice Number") 和反引号引用的 (`Invoice Number`) 字段名。在扫描和修复过程中,所有三种引号样式均可被识别。

默认情况下,QV2QS 会在转换对象表达式和变量定义时自动修复单引号搜索值。包含搜索语法(通配符、比较符、模糊搜索、表达式搜索、搜索修饰符或复合搜索运算符)的单引号值将转换为双引号。数值字段上不包含搜索语法的单引号值会被标记以供人工审核,但不会被自动修复。针对未加引号的裸字符串值的实验性修复也可用,但默认处于禁用状态 —— 传入 --fixUnquotedSetValues 即可启用。修复仅通过集合修饰符值列表中的位置替换来应用——字段名称、函数名称和其他表达式文本绝不会被修改。每个修复项都有一个独立的开关 (--noFixSingleQuotedSearch, --fixUnquotedSetValues)。有关详细信息,请参阅 参数参考。

结果显示在控制台摘要的 表达式引用发现项 部分、执行摘要仪表板的 表达式 子选项卡以及 Excel 报告的 Expression_Findings 工作表中。每个发现项均包含一个 状态 指示符:已自动修复(在转换过程中已更正)、需要审查(需要人工处理)或 无可用修复方案(不受支持的功能)。执行摘要仪表板提供了一个筛选切换开关,用于隐藏已自动修复的行,并重点关注仍需处理的事项。有关集合分析语法差异的详细信息,请参阅 Qlik Cloud 帮助中的集合分析。

不支持的图表函数

QV2QS 扫描所有对象表达式(维度、度量、显示条件、颜色表达式、文本表达式)和变量定义,以查找 Qlik Sense 中不支持的 QlikView 图表函数。扫描器会匹配函数名称与左括号之间包含可选空格或换行符的函数调用。字符串字面量中的函数名会被排除。

检测到以下函数:

函数 描述
GetCurrentField 返回当前对象中激活的字段名称。在 Qlik Sense 中不受支持。请参阅 Qlik Cloud 中的 字段函数以了解受支持的替代方案。
GetExtendedProperty 获取链接对象的元数据。在 Qlik Sense 中不受支持。请参阅 Qlik Cloud 中的 字段函数以了解受支持的替代方案。
输入 获取用户输入的输入字段值。在 Qlik Sense 中不受支持。
InputAvg 计算输入字段值的平均值。在 Qlik Sense 中不受支持。
InputSum 计算输入字段值的总和。在 Qlik Sense 中不受支持。
MsgBox 显示对话框。在 Qlik Sense 中不受支持。
NoOfReports 返回报表对象的数量。在 Qlik Sense 中不受支持。
ReportComment 返回报表批注。在 Qlik Sense 中不受支持。
ReportId 返回报告标识符。在 Qlik Sense 中不受支持。
ReportName 返回报告名称。在 Qlik Sense 中不受支持。
ReportNumber 返回报告编号。在 Qlik Sense 中不受支持。

不受支持的函数发现项与集合分析引号发现项一同显示在 Expression_Findings 工作表和控制台摘要的 Potential expression issues 部分中。

开发者书签

QV2QS 读取 DocInternals.xml 并列出所有开发者创建的书签。对于每个书签,分析都会报告字段选择、范围(全局或特定于工作表)以及是否保存了布局状态。书签必须在 Qlik Sense 中手动重新创建。

信息注释

服务器级书签(共享和私有)无法从 PRJ 文件夹中检测到。

SaaS 容量规划

QV2QS 读取 QVW 二进制文件以估算应用程序的基础 RAM 占用空间。该估算基于嵌入在表和字段描述中的 ByteSize 元数据。

信息注释

ByteSize 元数据仅在通过 QlikView 12.30 或更高版本(2018 年 11 月)保存的 QVW 文件中可用。如果元数据不存在,则规格层级将报告为 Unknown。

QV2QS 根据基础 RAM 占用空间将应用程序划分为以下层级之一。

层 阈值 操作
标准 最高 5 GB 无需特殊操作。
大型应用 最高 50 GB 部署到已启用大型应用程序支持的空间。
需要优化 50 GB 以上 迁移前请咨询 Qlik 管理员或 Qlik 合作伙伴。

Analysis 工作表中的大小详细信息表还会报告表和字段的数量(不包括系统表和字段)。有关详细的字段基数、表行数以及每个对象的字节大小,请参阅 Excel 报告中的 Data_Model_Fields 和 Data_Model_Tables 工作表。

置信水平

每个加载脚本发现项均包含一个置信度,用于指示存在真正兼容性问题的可能性。

  • 高 — 该模式具体。该发现极有可能是真正的兼容性问题。
  • 中等 — 该模式可能会匹配不相关的代码。手动验证。
  • 低 — 模式较宽泛。审查标记的行以确认相关性。

文档属性发现项和宏发现项没有置信度,因为这些发现项是基于显式 XML 标志而非模式匹配。

分析的局限性

该分析仅扫描 PRJ 文件夹和 QVW 二进制文件。加载脚本扫描程序检测 LoadScript.txt 中不受支持的语句和函数。加载脚本扫描程序不检查图表表达式。

表达式扫描程序会检查图表表达式(维度、度量、显示条件、颜色表达式、文本表达式和变量定义)中是否存在集分析引号模式以及不受支持的函数调用。表达式扫描程序不会检测图表表达式中其他类别的不兼容性。

存在于 QlikView Server 级别的项不会被检测到。未检测到的项目包括服务器书签、服务器对象、集群设置、警报条件、报告定义和会话使用数据。

了解更多

Visit the discussion forum at community.qlik.com

本页面有帮助吗?

如果您发现此页面或其内容有任何问题 – 打字错误、遗漏步骤或技术错误 – 请告诉我们!