迁移 QlikView 文档
本页详细介绍了如何迁移 QlikView 文档及其相关内容。它还列出了最佳做法、限制和注意事项。
应用程序限制
下表列出了 Qlik Cloud 允许的基本应用程序大小,具体取决于您的订阅。
应用程序类型 | 支持的应用程序大小(内存中) | 计划重新加载期间的峰值内存 | 手动重新加载期间的峰值内存 |
---|---|---|---|
标准层 | 最高 5 GB | 最高 15 GB | 最高 10 GB |
大型应用程序容量 | 最高 50 GB | 取决于购买的容量 | 取决于购买的容量 |
确定应用程序大小
您可以通过两种方式测量应用程序大小:
-
上次重新加载应用程序时的内存大小
-
占用空间
使用以下工具确定应用程序的大小:
-
QlikView 管理仪表板,复杂性 (仅提供英文版本)工作表 – 此工作表指示磁盘上的大小。
-
在 Qlik Cloud 迁移工具中的 QlikView to SaaS Migration App,在评估Qlik Cloud下的迁移工具选项卡上有一个专门的部分,用于估计基本 RAM 占用空间,并确定希望或不希望登录到标准层的应用程序。
缓解应用程序大小问题
如果由于应用程序大小过大而遇到内存分配问题,您可以采取两种主要方法来缓解这些问题。
-
查看并更新数据加载脚本(如适用):
-
从加载中删除未使用的字段和行。
-
处理数据时删除无用的表。
-
实施增量加载,优化正在处理的数据量。
-
使用优化的 QVD 负载。
-
-
为租户新增更多的容量,承受更大的工作负载。请参阅大型应用程序支持。
其他限制和考虑事项
云部署通常不允许访问主机或服务器的文件系统,因此,在将加载脚本从内部应用程序迁移到 Qlik Cloud 时,请使用这些加载脚本修改。
扩展
QlikView 扩展在 Qlik Cloud 中不起作用。这适用于服务器扩展和文档扩展。
请参阅 Qlik Cloud Developer 站点,以获取与定制开发相关的内容,包括 API 参考和工具包。
主题
应用程序样式无法从 QlikView 迁移到 Qlik Cloud。有关 Qlik Cloud 应用程序上的应用程序样式和自定义主题的信息,请参阅设置应用程序样式。
GeoAnalytics
QlikView GeoAnalytics 扩展对象功能已合并到原生 Qlik Sense 映射对象中。不能使用这些遗留对象编写 Qlik Sense 应用程序,应该使用 Qlik Sense 本机映射对象重建对象
从 GeoAnalytics 连接器 迁移到 Qlik GeoOperations
在 Qlik Cloud 中的 Qlik GeoOperations 提供和 GeoAnalytics 连接器 在 QlikView 中的相似的功能和操作。它们还支持许多相同的数据格式。它们有以下差异:
- Qlik GeoOperations 是一种高级分析集成 (AAI),它比连接器更适合发送和处理数据。
- 高级分析集成的脚本语法与连接器的脚本语法不同。
- 一些 GeoOperations 也可用在图表表达式中。
- Qlik GeoOperations 返回单个表格。与 GeoAnalytics 连接器 返回的内容相比,表在 Qlik GeoOperations 中被联结。
- 在 Qlik GeoOperations 中,某些字段和参数已重命名,从而更加一致。
以下概述了如何将 GeoAnalytics 连接器 向导生成的脚本转换为 Qlik GeoOperations:
- 在数据加载编辑器中于 GeoAnalytics 连接器 脚本代码内,将 SQL 之后直至第二个 SELECT 或 ";" 的所有内容复制,以先到者为准。
- 将 GeoAnalytics 连接器 脚本中的所有 ' 替换为 "。
-
将 GeoAnalytics 连接器 脚本中次要 SELECT 语句中选定的字段名添加到 GeoOperations 脚本中的第一个 SELECT 语句中。省略已经存在的任何字段。将源表名添加到字段名中,并用句点分隔。例如,table.field。这将创建一个联结的表,而不是多个表。
-
查看操作和数据集的参考文档,并根据需要调整任何参数或字段名称。
有关主要差异的摘要,请参阅 GeoOperations 和 GeoAnalytics 字段差异
-
将以下内容添加至 GeoOperations 脚本的开头:
Load * Extension GeoOperations.ScriptEval('
-
将以下内容添加至 GeoOperations 脚本的末尾:
');
如果将加载的表与 GeoAnalytics 连接器 一起使用,请改为将其作为第二个参数发送给 GeoOperations.ScriptEval。
当 Qlik GeoOperations 返回联接表时,次要表只返回在主表中具有相应值的字段值。例如,如果要为某些点查找德国最近的机场,则只返回与这些点最近的机场相关的数据。如果您需要德国的所有机场,则需要使用 LOAD 操作单独加载机场。
如果使用连接器从 SQL 数据库加载数据,则应使用一个数据库连接器(如 ODBC 连接器)加载数据。确保将几何图形作为 WKT 加载(应用通常在 SQL 查询中名为 st_asText() 的函数)。然后通过将表发送到 Qlik GeoOperations 来转换 WKT 字段。然后,它将返回一个带有 Qlik Sense 格式几何体的字段。
示例脚本转换
此脚本转换示例将使用以下 GeoAnalytics 连接器 脚本:
执行以下操作:
-
取用 SQL 和第二个 SELECT 语句之间的脚本。
SELECT [LocationDbId], [Clusters_ClusterID] FROM Cluster(distance='10000', points='Points') DATASOURCE Points LOCATIONSERVICE geometry='POINT', type='XIATA', country='de', serviceName='default' -
替换引号:
SELECT [LocationDbId], [Clusters_ClusterID] FROM Cluster(distance="10000", points="Points") DATASOURCE Points LOCATIONSERVICE geometry="POINT", type="XIATA", country="de", serviceName="default" -
添加来自次要表的字段:
SELECT [LocationDbId], [Clusters_ClusterID], [Clusters.Clusters_ClusterCenter] FROM Cluster(distance="10000", points="Points") DATASOURCE Points LOCATIONSERVICE geometry="POINT", type="XIATA", country="de", serviceName="default" -
调整参数和字段名称:
SELECT [LocationDbId], [ClusterID], [Clusters.ClusterPoint] as [Clusters_ClusterCenter] FROM Cluster(distance="10000", points="Points") DATASOURCE Points LOCATIONSERVICE geometry="POINT", type="XIATA", country="de", serviceName="default" -
在样板代码中附上:
Load * Extension GeoOperations.ScriptEval(' SELECT [LocationDbId], [ClusterID], [Clusters.ClusterPoint] as [Clusters_ClusterCenter] FROM Cluster(distance="10000", points="Points") DATASOURCE Points LOCATIONSERVICE geometry="POINT", type="XIATA", country="de", serviceName="default" ');
该脚本代码现在可结合 Qlik GeoOperations 使用。
GeoOperations 和 GeoAnalytics 字段差异
GeoOperations 和 GeoAnalytics 脚本之间的默认字段存在差异,通常带有前缀。将 GeoAnalytics 脚本迁移到 GeoOperations 时,可能需要调整一些字段名。
AddressToPoint
GeoOperations 和 GeoAnalytics 返回以下字段:
-
GeoOperations: <id>、Address、AddressPoint、CountryIso2、Adm1、城市、PostalCode、Street、HouseNumber、Match
-
GeoAnalytics: [<id>]、[Dataset_Address]、[Dataset_Geometry]、[CountryIso2]、[Dataset_Adm1]、[Dataset_City]、[Dataset_PostalCode]、[Dataset_Street]、[Dataset_HouseNumber]、[Dataset_Match]
GeoAnalytics 和 GeoOperations 有以下差异:
-
GeoAnalytics 字段具有数据集中的前缀。
-
Dataset_Geometry 称为 GeoOperations 中的 AddressPoint 。
正在执行 bin 操作
GeoOperations 和 GeoAnalytics 返回以下字段:
-
GeoOperations: <id>、BinId、BinTable.BinPolygon、BinTable.CenterPoint
-
GeoAnalytics: [<id>]、[RH2W3]、[RH2W3_CenterPoint]
GeoAnalytics 和 GeoOperations 有以下差异:
-
在 GeoAnalytics 中,RH2W3 是多边形字段,其名称是基于网格大小/比例生成的。在 GeoOperations 中,字段为 BinTable.BinPolygon。
-
GeoAnalytics 没有 BinId 字段。
最接近
GeoOperations 和 GeoAnalytics 返回以下字段:
-
GeoOperations:dataset_dataset2_RelationId、dataset.<ds1 id>、dataset2.<ds2 id>、Distance
-
GeoAnalytics:[Dataset1_Dataset2_RelationId]、[Dataset1.<ds1 id>]、[Dataset2.<ds2 id>]、[Dataset1_Dataset2_Distance]
GeoAnalytics 和 GeoOperations 有以下差异:
-
GeoOperations 没有 Distance 字段的前缀。
集群
GeoOperations 和 GeoAnalytics 返回以下字段:
-
GeoOperations: <id>、ClusterID、Clusters.ClusterPoint、Clusters.PointCount
-
GeoAnalytics: [<id>]、[Clusters_ClusterID]、[Clusters_ClusterCenter]、[Clusters_PointCount]
GeoAnalytics 和 GeoOperations 有以下差异:
-
GeoOperations 和 GeoAnalytics 之间的前缀不同。
分解
GeoOperations 和 GeoAnalytics 返回以下字段:
-
GeoOperations: <id>、DissolvedPolygon
-
GeoAnalytics: [<id>]、[<id>_Geometry]
GeoAnalytics 和 GeoOperations 有以下差异:
-
几何列的名称
相交
GeoOperations 和 GeoAnalytics 返回以下字段:
-
GeoOperations:dataset_dataset2_RelationId、dataset.<dataset1 id>、dataset2.<dataset2 id>、dataset.RelativeOverlap、 dataset2.RelativeOverlap
-
GeoAnalytics:[Dataset1_Dataset2_RelationKey]、[Dataset1.<ds1 id>]、[Dataset2.<ds1 id>]、[Dataset1_RelativeOverlap]、[Dataset2_RelativeOverlap]
GeoAnalytics 和 GeoOperations 有以下关键差异:
-
GeoOperations 和 GeoAnalytics 之间的前缀不同。
IpLookup
GeoOperations 和 GeoAnalytics 返回以下字段:
-
GeoOperations: <id>、 IpPoint、CountryIso2、Adm1Code、City
-
GeoAnalytics: [<id>]、[IpTable_Geometry]、[CountryIso2]、[IpTable_Adm1Code]、[IpTable_City]
GeoAnalytics 和 GeoOperations 有以下差异:
-
在 GeoAnalytics 中的 IpTable_Geometry 为 GeoOperations 中的 IpPoint。
-
GeoOperations 和 GeoAnalytics 之间的前缀不同。
加载(位置数据集)
GeoOperations 和 GeoAnalytics 返回以下字段:
-
GeoOperations(面积):LocationDbId、LocationPolygon、Name、CountryIso2、Adm1Code、Adm2Code、LocationDbType
-
GeoOperations(点):LocationDbId、LocationPoint、Name、CountryIso2、Adm1Code、Adm2Code、LocationDbType
-
GeoAnalytics:[LocationDbId]、[Dataset_Geometry]、[Dataset_Name]、[CountryIso2]、[Dataset_Adm1Code]、[Dataset_Adm2Code]、[LocationDbType]
GeoAnalytics 和 GeoOperations 有以下差异:
-
GeoAnalytics 中的几何图形字段 (LocationPolygon 和 LocationPoint 为 GeoOperations 中的 Dataset_Geometry。
-
GeoOperations 和 GeoAnalytics 之间的前缀不同。
PointToAddress
GeoOperations 和 GeoAnalytics 返回以下字段:
-
GeoOperations:<id>、Address、AddressPoint、CountryIso2、Adm1、City、PostalCode、Street、HouseNumber、Distance
-
GeoAnalytics: [<id>]、[Dataset_Address]、[Dataset_Geometry]、[CountryIso2]、[Dataset_Adm1]、[Dataset_City]、[Dataset_PostalCode]、[Dataset_Street]、[Dataset_HouseNumber]、[Dataset_Distance]
GeoAnalytics 和 GeoOperations 有以下差异:
-
GeoOperations 和 GeoAnalytics 之间的前缀不同。
路线
GeoOperations 和 GeoAnalytics 返回以下字段:
-
GeoOperations: <id>、Distance、Duration、Status、LowResLine
-
GeoAnalytics: [<id>]、[Dataset_Distance]、 [Dataset_Duration]、[Dataset_Status]、[Dataset_PathLowRes]
GeoAnalytics 和 GeoOperations 有以下差异:
-
GeoAnalytics 中的几何图形字段 Dataset_PathLowRes 为 GeoOperations 中的 LowResLine。
-
GeoOperations 和 GeoAnalytics 之间的前缀不同。
简化
GeoOperations 和 GeoAnalytics 返回以下字段:
-
GeoOperations: <id>、Simplified_<geo field name>
-
GeoAnalytics: [<id>]、[Dataset_Simplified_Geometry]
。GeoAnalytics 和 GeoOperations 有以下差异:
-
几何图形字段的名称在 GeoOperations 和 GeoAnalytics 之间不同。
TravelAreas
GeoOperations 和 GeoAnalytics 返回以下字段:
-
GeoOperations: <id>、TravelArea、Cost、CostUnit、Status
-
GeoAnalytics: [<id>]、[Dataset_TravelArea]、[Dataset_Origin]、[Dataset_Cost]、[Dataset_CostUnit]、[Dataset_Status]
GeoAnalytics 和 GeoOperations 有以下差异:
-
GeoOperations 不包括原点字段。
-
GeoOperations 和 GeoAnalytics 之间的前缀不同。
之内
GeoOperations 和 GeoAnalytics 返回以下字段:
-
GeoOperations:dataset_dataset2_RelationId、dataset.<dataset1 id>、dataset2.<dataset2 id>
-
GeoAnalytics:[Enclosed_Enclosing_RelationId]、[Enclosed.<dataset 1/2 id>]、[Enclosing.<datasets 1/2 id>]
GeoAnalytics 和 GeoOperations 有以下差异:
-
GeoOperations 前缀包括数据集名称,同时 GeoAnalytics 还包括前缀 Enclosed。
迁移文档
将 QlikView 文档迁移到可以在 Qlik Cloud 中使用的 Qlik Sense 应用程序时,请遵循以下过程。
执行以下操作:
-
评估、识别 QlikView 文档并为其迁移排定优先级。您可以使用 QlikView 管理仪表板 的复杂性 (仅提供英文版本)工作表,或 QlikView to SaaS Migration App 上的“移植工具”选项卡上的探索对象功能。
-
使用 QlikView 转换器 将 QlikView 文档转换为 Qlik Sense 应用程序。请参阅以下示例:
-
将转换的 QlikView 文档上传至 Qlik Cloud。
信息注释您可以使用 Qlik Cloud 迁移工具提供的 CLI 脚本 7_migrateapps.ps1 将转换后的 QlikView 文档批量上传到 Qlik Cloud。在 exports/apps.csv 文件中引用要导入的应用程序时,从 'QSAppName' 值中省略 .qvf 扩展名。
重新加载任务
必须在 Qlik Cloud 中手动重新创建重新加载任务。
使用 QlikView to SaaS Migration App 来标识重新加载任务。您可以在迁移工具选项卡的浏览 QVPR 屏幕上的 QVPR 任务触发器详细信息表中找到重新加载任务。
记下所有任务的详细信息,然后在 Qlik Cloud 租户中手动重新创建这些任务。
有关如何创建重新加载任务,请参阅安排重新加载应用程序数据。
如果您有任务链接,则需要使用 Qlik Application Automation (QAA),请参阅任务链接:教程。
转换 QlikView 文档最佳做法
当计划转换时,考虑以下信息。
QlikView 转换器
QlikView 转换器 是一种工具,支持将 QlikView 文档转换为 Qlik Sense 应用程序。您可以使用该工具将 QlikView 文档中开发的一些价值转移到 Qlik Sense 应用程序中。
转换器工具可以与 Qlik Sense Desktop 一起使用。不能使用 QlikView 转换器 转换磁盘上大于 500 MB 的文档。您可以减少文档中的数据量,或保存没有数据的文档,以减小文档的大小而不丢失资产。有关更多信息,请参阅 Qlik Sense Desktop。
QlikView 转换器 将把大多数对象移动到 Qlik Sense 中,包括:
- 脚本
- 大多数变量。请参阅从导出中排除了 QlikView 个变量
- 列表框
- 图表和表格
转换器不能转换特定对象。无法转换的对象包括:
- 容器
- 触发器
- 宏
- 条件语句
- 文本框
- 对象层
- 自定义图表颜色
- 列表框中的表达式
可以手动在 Qlik Sense 中重新创建以上对象中的许多对象。例如,当触发器未转换时,可以使用 Qlik Sense 中的默认书签重新创建打开时触发器的行为。
转换器显示一些(但不是全部)未转换的对象。我们建议为 QlikView 中的所有对象逐个创建清单,并将该清单与转换器中列出的对象进行比较。
QlikView 转换器 (仅提供英文版本)
数据加载脚本
一般情况下,QlikView 与数据加载脚本兼容,但是也存在一些可能需要考虑到的差异,而且要在数据加载编辑器中调整脚本才能重新加载数据。
QlikView 使用的绝对或相对文件路径在 Qlik Sense 标准模型中不支持,因此需要使用文件夹数据连接指向文件位置。
QlikView 语法
Qlik Sense 语法
隐藏脚本标签
转换含隐藏脚本的 QlikView 文档时,隐藏脚本部分会被忽略,脚本内不包含 Qlik Sense 脚本。在转换文档之前,请在 QlikView 脚本编辑器中打开它,然后从隐藏的脚本选项卡复制代码并将其粘贴到常规脚本选项卡中。请注意,不能在 Qlik Sense 中隐藏脚本代码。
标准模式
在标准模式下,不能使用几种语句和函数,或者有限制。有关详细信息,请参阅文件系统访问限制文档。
区域权限
不能将含区域权限的 QlikView 文档导入到 Qlik Sense 中,因为格式和支持的功能存在差异。
转换具有区域权限的文档时,需要执行以下步骤:
- 转换文档前,在 QlikView 脚本编辑器中删除区域权限。
- 转换文档。
- 在 Qlik Sense 应用程序中重新应用 section access。
在 Qlik Sense 中有一些区别,您应对加以考虑:
- 已更改用户身份验证。USERID 字段用于验证所有用户的身份信息,不再支持 NTNAME 和 PASSWORD 字段。
- 使用 Qlik Sense 中的严格排除应用 section access。这意味着您只能查看为您授予了特定访问权限的数据。
如果您拥有脚本的访问权,但没有数据访问权,则可以打开没有数据的应用程序,然后编辑脚本,包括 section access。
有关更多信息,请参阅使用 Section Access 管理安全性。
集合分析中的引号表示法
旧 QlikView 文档中的集合分析或使用旧版本 QlikView 创建的文档中的引号表示法与 Qlik Sense 中的不同。您可能需要修改 Qlik Sense 中的特定集合分析表达式。
旧表示法
单引号和双引号在旧表示法中的行为相同。单引号和双引号都解释为搜索。可使用通配符 (*, ?)。
新标识符
单引号和双引号在新表示法中的行为不同。
单引号解释为文字串比较。只找到一个字段值,搜索字符串中不允许使用通配符。例如,星号被解释为星号。
双引号都解释为搜索。允许使用通配符和关系运算符,并且可以找到多个字段值。
例如,Sum({$<Country={'Austr*'}>}Sales) 可能需要更改为 Sum({$<Country={"Austr*"}>}Sales)
同样,可能需要更改数值或变量比较。例如,Duration={'>3'} 可能需要更改为 Duration={">3"}
从导出中排除了 QlikView 个变量
没有从 QlikView 文档导出许多变量,因为它们仅对 QlikView 相关,或者在 Qlik Sense 中以不同方式处理。
没有导出以下变量:
- 所有以 CD 开头的变量
- 所有以 FLOPPY 开头的变量
- QvPath、QvRoot、QvWorkPath、QvWorkRoot
- WinPath、WinRoot
- ErrorMode
- StripComments
- ScriptErrorCount、ScriptError
- ThousandSep、DecimalSep、MoneyThousandSep、MoneyDecimalSep、MoneyFormat
- TimeFormat、DateFormat、TimestampFormat
- MonthNames、DayNames
- ScriptErrorDetails、ScriptErrorList
- OpenUrlTimeout
- HidePrefix
- FirstWeekDay
- broken_weeks
- reference_day
- FirstMonthOfYear
- CollationLocale
- LongMonthNames、LongDayNames