# 比较 QlikView 和 Qlik Cloud Analytics

本主题描述 QlikView 和 Qlik Cloud Analytics 之间的一些关键的相似性和差异。

## 文档和应用程序

QlikView 文档和 Qlik Cloud Analytics 应用程序在其架构上相似。二者都是用于显示分析用数据的对象的容器。它们都可以包含数据连接、加载脚本、数据模型、工作表、图表、变量等。

## 开发和使用

在 QlikView 和 Qlik Cloud Analytics 二者中，您需要构建应用程序或文档，然后才能分析数据。这意味着：

1. 将数据添加到新的或现有的应用程序：
   * 在 QlikView 中，这涉及创建并运行一个加载脚本，该脚本定义要加载到应用程序中的数据。加载脚本从一个或多个数据源中提取数据到应用程序中，然后创建数据模型，该数据模型是所有分析的基础。

   * 在 Qlik Cloud 中，用户可以通过传统的脚本编辑器或使用数据管理器的拖放用户界面，从数据目录中已有的数据、数据文件或现有数据连接创建应用程序。
2. 创建分析所需的用户界面。这意味着创建不同的可视化（例如条形图、饼图、表格）、定义不同 KPI 的不同表达式以及不同的选择对象（列表框、滑块、输入框等）。它还意味着可视化地对不同的组件进行分组，例如在工作表上，因此数据是为不熟悉内容的用户呈现的。

传统上，这两个步骤是由专门的商业智能专家完成的，这些人不是数据的主要使用者。数据的主要消费者是使用应用程序的业务用户。这种情况通常被称为指导分析，因为业务用户在某种程度上会得到分析什么数据的指导。但是不会就进行什么选择来指导使用者。他们仍然可以按任何顺序自由选择应用程序中的任何内容。

Qlik Cloud 和 QlikView 二者都可用于指导分析。

Qlik Cloud Analytics 提供行业领先的现代分析功能，涵盖全方位的用户和用例 — 从自助服务分析到交互式仪表板和应用程序、会话分析、元数据目录和世系、移动分析、报告和警报。它通过 AI（人工智能）提供的见解建议、自动化机器学习、自动化和自然语言交互来增强和提升人类的直觉。这是自 QlikView 的思维转变。

因此对于自助服务，Qlik Cloud Analytics 要更好。在 QlikView 中，一些自助服务仍然是可能的，但它要求的用户技术熟练程度更高。

## 开发工具

在 QlikView 中，您需要拥有桌面版本才能开发应用程序。开发在本地完成，无需连接到 QlikView 服务器。QlikView Desktop 仅在 Microsoft Windows. 上运行

Qlik Cloud Analytics 是一个基于云的协作环境，用于开发和共享内容和见解。这意味着用户的计算机上可以安装不同的操作系统 。用户界面非常直观，提供了简单的创作工具，可以帮助所有级别的用户创建高级图表和可视化效果。

Qlik Cloud Analytics 还提供了一种完全原生的会话分析体验 Insight Advisor，它使用自然语言处理来理解用户意图，并在每次交互中学习，以揭示数据中的关联、相关性和趋势。

## 从源到分析移动数据

在 QlikView 和 Qlik Cloud Analytics 二者中，在指定时间点加载数据，然后在内存中分析。

分析是对属于实际数据的快照的数据集进行的。快照来自运行应用程序加载脚本的时间点。虽然您可以通过更频繁地运行加载脚本（例如每 15 秒运行一次）使分析接近实时，但它从来不是实时的。

从管理的角度来看，这意味着您首先创建应用程序，然后根据您的业务需求设置一个计划程序来刷新数据（运行脚本）。

在 QlikView 中，这需要手动重新加载或将应用程序保存到源文件夹，然后使用 QlikView Publisher 和 QlikView Server 安排重新加载。

使用 Qlik Cloud Analytics，具有适当权限的用户可以在 Qlik Cloud 环境中安全地轻松地重新加载或计划重新加载其应用程序。

## 数据连接

QlikView 没有数据连接的库。它通过 Microsoft OLE DB/ODBC 接口使用文件或数据库。为此，必须安装一个驱动程序来支持数据库管理系统 (DBMS)，并且必须将数据库配置为 ODBC 数据源。这是在您 PC 和 Qlik 服务器上完成的。对于像 Amazon S3、Snowflake 和 Azure 和这样的 web 连接，您必须下载并安装 Qlik Web 连接器。

Qlik Cloud Analytics 有一个内置数据连接库，可用于连接到文件、内部部署数据库以及云数据源。该库允许在用户和应用程序之间共享数据源。将治理应用于数据连接也更容易。

## 脚本编辑器

在 QlikView 中，您没有用于加载数据的图形界面。应用程序开发人员必须在脚本编辑器中创建加载脚本。

在 Qlik Cloud Analytics 中，您还可以在脚本编辑器中创建加载脚本。或者，云用户可以通过传统的脚本编辑器或使用 数据管理器 拖放图形界面，从 数据目录 中已有的数据、数据文件、现有数据连接创建应用程序。

## 脚本语法

QlikView 和 Qlik Cloud Analytics 中的脚本语法几乎是一致的。脚本的制作方式上有一些值得注意的差异。

### 限制

Qlik Cloud 不支持在函数、语句和变量中使用 Windows 文件系统路径。相反，使用库连接，即数据和脚本文件的连接字符串，例如 lib://DataFiles/myData.txt。

适用于 QlikView 和客户托管 Qlik Sense 的多个语句、变量和函数（在标准或传统模式下）无法使用，或在 Qlik Cloud 中存在限制。通常，这些限制是对与 Windows 文件系统路径关联的语句、变量和函数施加的。

如果在数据加载脚本中使用不支持的语句，则会在加载脚本运行时产生错误。错误消息可在脚本日志文件中找到。如果使用不支持的变量和函数，不会生成错误消息或日志文件条目。相反，函数会返回 NULL 值。

在编辑数据加载脚本时，没有任何指示表明不支持变量、语句或函数。

### Qlik Cloud 中变量、语句和函数的适用性

如果您计划重用来自 Qlik Cloud 中 QlikView 或客户托管 Qlik Sense 的数据加载脚本，请参考下面的表，查看支持哪些变量、语句和函数及其要求。

#### 系统变量

| 变量 | 适用性 | 定义 |
| --- | --- | --- |
| Floppy | 不支持 | 用于返回找到的第一个软盘驱动器的驱动器号，通常是 a:。 |
| CD | 不支持 | 用于返回找到的第一个 CD-ROM 驱动器的驱动器号。如果未找到任何 CD-ROM，随后会返回 c:。 |
| QvPath | 不支持 | 用于返回浏览字符串到可执行的 Qlik Sense 文件。 |
| QvRoot | 不支持 | 用于返回可执行的 Qlik Sense 的根目录。 |
| QvWorkPath | 不支持 | 返回浏览字符串到当前 Qlik Sense 应用程序。 |
| QvWorkRoot | 不支持 | 返回当前 Qlik Sense 应用程序的根目录。 |
| WinPath | 不支持 | 用于返回浏览字符串到 Windows。 |
| WinRoot | 不支持 | 返回 Windows 的根目录。 |
| $(include=...) | 支持的输入：使用库连接的路径 | Include/Must\_Include 变量用于指定包含应包括在脚本中并作为脚本代码计算值的文本的文件。它不用于添加数据。您可以将部分脚本代码存储在单独的文本文件中，并可以在多个应用程序中重复使用它。这是用户定义的变量。 |

#### 常规脚本语句

| 语句 | 适用性 | 定义 |
| --- | --- | --- |
| [二进制](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Binary.htm) | 支持的输入：使用库连接的路径 | 二进制 语句用于从另一个应用程序加载数据。 |
| Connect | 不支持 | CONNECT 语句用于通过 OLE DB/ODBC 接口定义对通用数据库的Qlik Sense访问。对于 ODBC，数据源首先需要使用 ODBC 管理器指定。 |
| [目录](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Directory.htm) | 支持的输入：使用库连接的路径 | Directory 语句用于定义在后续 LOAD 语句中查找数据文件的目录，直到出现新的 Directory 语句。 |
| Execute | 不支持 | Execute 语句用于在 Qlik Sense 加载数据的同时运行其他程序。例如，需要执行转换。 |
| [加载自 ...](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Load.htm) | 支持的输入：使用库连接的路径 | LOAD 语句可以加载以下来源的字段：文件、脚本中定义的数据、预先载入的输入表格、网页、后续 SELECT 语句产生的结果或自动生成的数据。 |
| [存储到 ...](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Store.htm) | 支持的输入：使用库连接的路径 | Store 语句创建 QVD、Parquet、CSV 或 TXT 文件。 |

#### 脚本控制语句

| 语句 | 支持的输入 | 返回的输出 | 定义 |
| --- | --- | --- | --- |
| [对于每个..下一个](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptControlStatements/For%20Each.htm)<br><br><br>filelist mask/dirlist mask | 库连接 | 库连接 | filelist mask 语法会在匹配 filelist mask 的当前目录中生成逗号分隔的全部文件列表。dirlist mask 语法会在匹配目录名称掩码的当前目录中生成逗号分隔的全部目录列表。 |

#### 文件函数

| 函数 | 支持的输入 | 返回的输出 | 定义 |
| --- | --- | --- | --- |
| [属性](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/FileFunctions/Attribute.htm) | 库连接 | 以文本形式返回不同媒体文件的元标签的值。 |  |
| [ConnectString](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/FileFunctions/ConnectString.htm) | 库连接名称 | 为 ODBC 或 OLE DB 连接返回激活连接字符串。 |  |
| [FileDir](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/FileFunctions/FileDir.htm) | 库连接 | FileDir 函数用于返回一个包含至当前阅读表格文件目录的路径。 |  |
| [FilePath](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/FileFunctions/FilePath.htm) | 库连接 | FilePath 函数用于返回一个包含至当前阅读表格文件的完整路径的字符串。 |  |
| [FileSize](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/FileFunctions/FileSize.htm) | 库连接 | FileSize 函数用于返回一个包含文件 filename 字节大小的整数，或如果未指定 filename，则返回一个包含当前阅读的表格文件字节大小的整数。 |  |
| [FileTime](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/FileFunctions/FileTime.htm) | 库连接 | FileTime 函数以 UTC 格式返回指定文件上次修改的时间戳。如果未指定文件，函数将返回当前读取的表文件的最后修改的 UTC 时间戳。 |  |
| GetFolderPath() | 不支持 | 返回的输出：绝对路径 | GetFolderPath 函数用于返回 Microsoft Windows SHGetFolderPath 函数的值。此函数用于输入 Microsoft Windows 文件夹的名称，并返回该文件夹的完整路径。 |
| [QvdCreateTime](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/FileFunctions/QvdCreateTime.htm) | 库连接 | 此脚本函数用于返回 QVD 文件的 XML-标题时间戳（如果有），否则返回 NULL 值。在时间戳中，时间以 UTC 表示。 |  |
| [QvdFieldName](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/FileFunctions/QvdFieldName.htm) | 库连接 | 此脚本函数返回 QVD 文件中的字段编号 fieldno。如果字段不存在，则返回 NULL。 |  |
| [QvdNoOfFields](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/FileFunctions/QvdNoOfFields.htm) | 库连接 | 此脚本函数用于返回 QVD 文件中的字段数。 |  |
| [QvdNoOfRecords](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/FileFunctions/QvdNoOfRecords.htm) | 库连接 | 此脚本函数用于返回 QVD 文件中的当前记录数。 |  |
| [QvdTableName](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/FileFunctions/QvdTableName.htm) | 库连接 | 此脚本函数用于返回存储在 QVD 文件中的表格名称。 |  |

#### 系统函数

| 函数 | 适用性 | 定义 |
| --- | --- | --- |
| DocumentPath() | 不支持 | 此函数用于返回一个包含至当前 Qlik Sense 应用程序完整路径的字符串。 |
| GetRegistryString() | 不支持 | 返回一个称为注册关键字的值及一个给定的注册路径。此函数可用于图表及脚本等类似程序中。仅在 QlikView 中可用。 |

### 自动日历

在QlikView中，应用程序开发人员必须手动创建日历。

在 Qlik Cloud Analytics 中，日历由数据管理员自动创建。日历使用名为衍生字段的功能，该功能在 QlikView 中未提供。

### 从 Web 文件加载

在 QlikView 中，您可拥有直接从 Web 表格进行加载的 Load 语句。

在 Qlik Cloud Analytics 中，您可从 Web 文件数据连接加载数据。

### 区域权限

区域权限可用在 QlikView 和 Qlik Cloud Analytics 二者中来定义授权。基本功能是一致的。区域权限都会将外部提供的 user ID 与授权表的内容进行比较。

但是，这两种产品的内容略有不同。

在 QlikView 中，经过身份验证的用户的名称应存储在名为 NTNAME 的字段中。在 Qlik Cloud Analytics 中，相应的字段称为 USERID。在这两种情况下，如果未使用 Windows 集成安全性，则此字段将用于任何经过身份验证的用户。

在 QlikView 中，安全组可存储在 NTNAME 中。在 Qlik Cloud Analytics 中，安全组应当存储在名为 GROUPS 的单独字段中。

在 QlikView 中，存在另外的字段 NTSID 和 NTDOMAINSID 可用于授权。它们二者都涉及 Windows 的安全 ID。这些字段未存在于 Qlik Cloud Analytics 中。

在 QlikView 中，不应使用旧字段 SERIAL、 USERID 和 PASSWORD，以确保安全的环境。这些字段未存在于 Qlik Cloud Analytics 中。

在这两种产品中，如果应用程序是在服务器上发布的，则会达到适当的安全级别。但是，如果使用桌面版本打开具有区域权限的文件，则两个产品的行为不同。在 QlikView Desktop 中，NTNAME 与操作系统提供的 Windows 用户名相匹配，如果正确，用户可以打开该文件。在 Qlik Sense Desktop 中，程序将拒绝打开文件。

## 文档和内容管理

在两个产品中，在应用程序或文档级别上有大量属性。这些包括应用程序名称、主题和样式。在 QlikView 中，所有相关属性都集中在文档属性窗口中。在Qlik Cloud Analytics中，可以从应用程序概览访问属性。

在 QlikView 中，有一个表达式概述对话框列出了应用程序中的所有表达式。您可以在应用程序的所有表达式中搜索和替换字符串。

在 Qlik Cloud Analytics 中，您可以使用主项定义可在应用程序中的许多位置使用的维度和度量。

## Administration 活动中心

Qlik Cloud 有一个活动中心，用于管理许可证、用户分配、空间、主题和扩展。该Administration活动中心不应与Qlik Management Console（QMC）混淆，后者用于管理QlikView。 有关 Administration 的 Qlik Cloud 活动中心的更多信息，请参阅[使用 Administration 活动中心](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Admin/management-console.htm)。

## 应用程序的分布

在 Qlik Cloud 中，应用程序按空间组织。空间是活动中心内存储应用程序的区域。共享空间用于协作开发应用程序和控制对应用程序的访问。 有关更多信息，请参阅[管理空间](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Admin/mc-administer-spaces.htm)。

在 Qlik Cloud 中的应用程序不会在其数据源更新时自动更新。您可以手动重新加载应用程序或安排重新加载。 有关更多信息，请参阅[重新加载应用程序数据](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Apps/reloading-apps-cloud-hub.htm)。

## 安全管理

Qlik Cloud 通过向用户和空间分配访问权限来管理安全性。拥有租户管理员角色的用户可以添加和移除用户的访问权限。 有关更多信息，请参见[用户管理](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Admin/SaaS-user-management.htm)和[管理空间](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Admin/mc-administer-spaces.htm)。如果您在维护 Qlik Cloud 和 QlikView 环境的混合环境，请参阅 [混合环境](https://help.qlik.com/zh-CN/qlikview/September2026/Subsystems/Client/Content/QV_QlikView/Security.htm#anchor-7)。