QlikView - 快速指南


QlikView - 概述

QlikView 是领先的业务发现平台。与传统的 BI 平台相比,它在很多方面都是独一无二的。作为一个数据分析工具,它始终维护着数据之间的关系,并且这种关系可以通过颜色直观地看到。它还显示不相关的数据。它通过使用列表框中的单独搜索来提供直接和间接搜索。

QlikView的核心专利技术具有内存数据处理的特点,为用户提供超快的结果。它动态计算聚合并将数据压缩到原始大小的 10%。QlikView 应用程序的用户和开发人员都不管理数据之间的关系。它是自动管理的。

QlikView 的特点

QlikView 拥有专利技术,使其具有许多可用于从多个数据源快速创建高级报告的功能。以下是使 QlikView 非常独特的功能列表。

  • 自动维护数据关联- QlikView 自动识别数据集中存在的每条数据之间的关系。用户无需预先配置不同数据实体之间的关系。

  • 数据保存在多个用户的内存中,以获得超快的用户体验- 报告的结构、数据和计算都保存在服务器的内存 (RAM) 中。

  • 根据需要即时计算聚合- 由于数据保存在内存中,因此计算是即时完成的。无需存储预先计算的聚合值。

  • 数据被压缩至其原始大小的 10% - QlikView 大量使用数据字典。任何分析只需要内存中的基本数据位。因此,它将原始数据压缩到非常小的大小。

  • 使用颜色的视觉关系- 数据之间的关系不是通过箭头或线条显示,而是通过颜色显示。选择一条数据将为相关数据提供特定颜色,为不相关数据提供另一种颜色。

  • 直接和间接搜索- 由于数据关联,他们可以输入一些相关数据并获得准确的结果,而不是给出用户正在寻找的直接值。当然,他们也可以直接搜索一个值。

QlikView - 安装

下载 QlikView

QlikView 的免费个人版可以从 QlikView 个人版下载。 您需要注册您的详细信息才能下载。

下载后,安装过程非常简单,您需要接受许可协议并提供安装的目标文件夹。下面给出的屏幕截图描述了整个设置过程。

启动安装向导

双击QlikViewDesktop_x64Setup.exe将显示一个屏幕,供您选择所需的语言。选择英语后,将显示以下屏幕。然后单击“下一步”

安装步骤1

接受许可协议

阅读许可协议,如果同意,请选择“我接受许可协议中的条款”选项。然后单击“下一步”。

安装步骤2

提供您的详细信息

提供您的姓名和组织详细信息。然后单击“下一步”。

安装步骤3

选择目标文件夹

您可以接受默认安装目标或更改它。然后单击“下一步”。

安装步骤4

选择安装类型

选择安装类型为“完整”。然后单击“下一步”。

安装步骤5

开始安装

在此屏幕中,您最终决定真正开始安装。如果需要,您仍然可以返回并更改一些选项。假设到目前为止一切顺利,请单击“安装”。

安装步骤6

安装完成

安装成功后出现安装完成屏幕。单击“完成”。

安装步骤7

验证安装

您可以通过转至 Windows 开始菜单并单击 QlikView 图标来验证安装。屏幕如下所示。

验证安装

您现在已准备好学习 QlikView。

QlikView - 架构

作为领先的业务发现平台,QlikView 采用与其他传统平台截然不同的数据发现方法构建。QlikView 不会首先构建查询,然后根据查询获取结果。相反,它在加载后立即在不同数据对象之间形成关联,并提示用户以任何方式探索数据。没有预定义的数据向下钻取路径。只要数据可用且关联,数据向下钻取路径就可以发生在任何方向。

当然,用户还可以使用 QlikView 中提供的数据建模方法来创建数据元素之间的关联。

架构概览

QlikView 的架构由用于可视化处理数据的前端和为 QlikView 用户文档提供安全和发布机制的后端组成。下图描述了 QlikView 的内部工作原理。该架构在图片下方详细讨论。

qlikview_架构

前端

QlikView 中的前端是一个基于浏览器的访问点,用于查看 QlikView 文档。它包含QlikView Server,主要供业务用户通过 Internet 或 Intranet URL 访问已创建的 BI 报告。

业务用户使用此前端探索数据并与之交互,并得出有关数据的结论。他们还通过实时或离线共享见解和共同探索数据,与其他用户协作处理一组给定的报告。这些用户文档的格式为.qvw,也可以作为独立文档存储在Windows操作系统中

前端的 QlikView 服务器管理用户和 QlikView 后端系统之间的客户端服务器通信。

后端

QlikView 后端由QlikView 桌面版QlikView 发布者版组成。

QlikView桌面是一个向导驱动的 Windows 环境,具有从源加载和转换数据的功能。其拖放功能用于创建在前端可见的报告的 GUI 布局。由 QlikView 桌面创建的文件类型以 .qvw 扩展名存储这些文件被传递到前端的 QlikView 服务器,该服务器为用户提供这些文件。此外,还可以修改.qvw文件来存储包含数据的文件,这些文件称为.qvd文件。它们是二进制文件,仅包含数据,不包含 GUI 组件。

QlikView 发布者用作分发服务,在各种 QlikView 服务器和用户之间分发 .qvw 文档。它处理授权和访问权限。它还使用.qvw文件中定义的连接字符串直接从数据源加载数据。

QlikView - 导航

在本章中,我们将熟悉用户可用于执行各种操作的屏幕。我们将学习基本导航并了解 QlikView 中可用图标执行的不同功能。

入门屏幕

此屏幕是对 QlikView 导航的简单介绍。当您启动 QlikView 并选中启动 QlikView 时显示起始页选项时,会出现此屏幕。如果向下滚动左侧的示例部分,您可以单击任何示例,例如 -电影数据库数据可视化等来调用它并查看 QlikView 的工作原理。请随意点击周围!向右移动时,您会注意到“最近”“收藏夹”链接,其中显示所有最近访问的 QlikView 文档以及您想要经常访问的文档。

验证安装

菜单命令

关闭“入门”窗口后,我们将看到包含所有可用菜单命令的主界面。它们代表了 QlikView 中可用的整套功能。下面给出了菜单命令每个部分的概述。

所有菜单

文件菜单

此菜单用于创建新的 QlikView 文件并从本地系统和 QlikView 服务器打开现有文件。该菜单中的重要功能是 -

  • 作为附件发送,将当前打开的文档作为附件通过电子邮件发送。

  • 减少数据以仅查看报表布局和数据库结构,而不查看任何数据。

  • 表查看器选项用于在图形视图中查看表、字段的结构及其关联。

所有菜单

编辑菜单

该菜单用于执行复制、粘贴、剪切和使用格式刷等编辑选项。该菜单中的重要功能是 -

  • “全部激活”选项可激活打开的工作表中存在的所有工作表对象。

  • 删除以从活动窗口中删除工作表。

  • 高级搜索选项用于使用多框使用高级搜索表达式进行搜索。

所有菜单

查看菜单

此菜单用于查看标准工具栏和放大/缩小功能。它还将所有活动工作表显示为级联菜单。该菜单中的重要功能是 -

  • 打开/关闭 WebView 模式可切换 WebView 模式和本地视图模式。

  • 当前选择显示所选工作表对象的字段名称和文件值。

  • 设计网格用于切换活动对象的工作表对象占位符以及对齐网格以调整布局中的对象大小和移动对象。

查看菜单

选择菜单

此菜单用于选择和清除工作表对象中的值选择。它还提供了向后和向前进入您正在处理的工作表的不同逻辑语句的功能。该菜单中的重要功能是 -

  • 锁定锁定当前选择中的所有值。
  • 解锁可解锁当前选择中的所有锁定值。
查看菜单

布局菜单

布局菜单用于添加选项卡式工作表、选择不同的工作表以及重新排列工作表对象。该菜单中的重要功能是 -

  • 提升工作表将当前工作表或选项卡向前移动一步。
  • 降级工作表 将当前工作表或选项卡向后移动一步。
  • 删除工作表将删除活动工作表及其中的所有内容。
布局菜单

设置菜单

设置菜单用于设置用户首选项、文档属性和工作表属性。该菜单中的重要功能是 -

  • 变量概述单个列表中的所有非隐藏变量及其值。
  • 表达式概述将文档、工作表和工作表对象中的表达式显示为单个列表。
设置菜单

书签菜单

此菜单用于为不同文档创建书签,以便更快地检索。

查看菜单

报告菜单

报告菜单用于创建新报告和编辑现有报告。您可以编辑布局、向报告添加页面以及删除报告。

报告菜单

工具菜单

工具菜单是一个非常突出的菜单,经常用于创建图表和打开 QlikView 管理控制台。该菜单中的重要功能是 -

  • 快速图表向导创建简单的图表,无需使用大量不同的可用设置和选项。

  • 时间图表向导创建时间序列图表。

  • 统计图表向导用于对数据应用常见的统计测试。

工具菜单

对象菜单

此菜单用于创建新的工作表对象和修改现有的工作表对象。图纸属性选项打开页面以设置定义图纸的参数。该菜单中的重要功能是 -

  • 复制工作表- 创建工作表以及所有工作表对象的副本。

  • 将图像复制到剪贴板- 将工作表区域的位图图片复制到剪贴板。

  • 删除- 完全删除工作表以及工作表对象。

对象菜单

窗口和帮助菜单用于组织 QlikView 应用程序的不同窗口并提供帮助文档

QlikView - Excel 文件

QlikView 接受 Excel 电子表格,通过简单的拖放操作进行数据分析。您需要打开QlikView主窗口并将excel文件拖放到界面中。它将自动创建显示 Excel 数据的工作表。

选择 Excel 文件

保持 QlikView 主窗口打开并浏览您要使用的 Excel 文件。

1_excel_load_data_drag

选择数据源

将 Excel 文件拖放到主窗口后,将出现文件向导。文件类型已选择为 Excel。在“标签”下,选择“嵌入标签”。单击“下一步”继续。

2_excel_文件_向导

加载脚本

将出现加载脚本,其中显示将数据加载到 QlikView 文档中的命令。该命令可以编辑。

3_excel_load_脚本

现在,Excel 向导提示以 *.qvw 文件扩展名的形式保存文件。它要求您选择需要保存文件的位置。单击“下一步”继续。现在是时候查看从 Excel 文件加载的数据了。我们使用Table Box工作表对象来显示此数据。

创建表格框

是一个工作表对象,用于将可用数据显示为表格。它是从菜单Layout → New Sheet Object → Table Box调用的。

4_表框_选项

单击下一步后,我们可以选择从表框中选择字段。您可以使用升级或降级按钮重新排列字段。

5_表框_字段

表框数据

完成上述步骤后,将出现“表格框工作表对象”,其中显示从 Excel 文件读取的数据。

6_table_box_结果

QlikView - 分隔文件

QlikView 可以使用平面文本文件中的数据,其中字段以逗号、制表符、分号等字符分隔。这里,我们以 CSV 为例。每列数据以逗号分隔的文件称为 CSV 文件。它是一种非常广泛使用的文件格式,用于存储组织为列和行的平面文本数据。

QlikView 使用“文件”菜单下脚本编辑器中提供的“文件中的数据”选项加载 csv 文件。或者,您也可以打开一个新的 QlikView 文档,然后按Control+E以获取脚本编辑器窗口,如下所示。从适当的路径中选择文件 Product_details.csv。

1_dilimited_insert_script

选择文件头

打开选定的 CSV 文件时,会出现如下所示的窗口。在“标签”下选择“嵌入式标签”,因为我们的文件的第一行有一个标题行。单击“完成”

csv_文件_标题

加载脚本

将文件加载到 QlikView 中是通过加载脚本完成的,如下面的屏幕截图所示。因此,当我们使用任何分隔文件时,我们可以根据文件格式调整以下脚本。

3_dilimited_load_script

现在脚本向导提示以 *.qvw 文件扩展名的形式保存文件。它要求您选择需要保存文件的位置。单击“下一步”继续。现在,是时候查看从分隔文件加载的数据了。我们使用Table Box工作表对象来显示此数据。

创建表格框

是一个工作表对象,用于将可用数据显示为表格。它是从菜单Layout → New Sheet Object → Table Box调用的。

4_表框_选项

单击下一步后,我们可以选择从表框中选择字段。您可以使用升级或降级按钮重新排列字段。

5_表框_字段

表框数据

完成上述步骤后,将出现“表格框工作表对象”,其中显示从 Excel 文件读取的数据。

6_table_box_结果

QlikView - XML 文件

XML 是一种文件格式,它使用标准 ASCII 文本在万维网、内部网和其他地方共享文件格式和数据。它代表可扩展标记语言(XML)。与 HTML 类似,它包含标记标签。然而,与 HTML 中标记标签描述页面结构不同,在 XML 中,标记标签描述文件中包含的数据的含义。QlikView 可以使用 XML 文件中的数据。

从 XML 文件加载数据的过程类似于我们之前看到的加载分隔文件。打开脚本编辑器。单击菜单插入→加载语句→从文件加载。浏览您要加载的 XML 文件。在此示例中,我们选择employee_dat.xml 文件。

1_文件_插入_脚本

选择 XML 文件结构

打开选定的 XML 文件时,会出现一个窗口,如下所示。在左侧的文件类型部分下,选择 XML。XML 文件的内容现在显示为带有标题列的表格。单击“完成”。

2_xml_文件类型

文件加载脚本

将 XML 文件加载到 QlikView 中是通过加载脚本完成的,如下所示。因此,当我们使用任何 XML 文件时,我们可以调整下面给定的脚本来重命名列或更改文件位置等。

3_xml_load_脚本

现在脚本向导提示您以 *.qvw 文件扩展名的形式保存文件。它要求您选择需要保存文件的位置。单击“下一步”继续。现在是时候查看从 XML 文件加载的数据了。我们使用Table Box工作表对象来显示此数据。

创建表格框

是一个工作表对象,用于将可用数据显示为表格。它是从菜单Layout → New Sheet Object → Table Box调用的。

表框选项

单击下一步后,我们可以选择从表框中选择字段。您可以使用升级或降级按钮重新排列字段。

5_xml_select_fileds

表框数据

完成上述步骤后,将出现“表格框工作表对象”,其中显示从 Excel 文件读取的数据。

6_xml_final_数据

QlikView - 网页文件

QlikView 可以处理来自 Web 的 HTML 格式文件。它可以从 HTML 表格中提取数据。要处理的 Web 文件的 URL 作为输入给出,QlikView 会获取文件的结构和内容。然后,它分析页面的结构,从页面中存在的 HTML 表中提取相关数据。我们从脚本编辑器的“数据”选项卡下的“来自文件的数据”部分中选择“Web 文件”选项。

1_webfile_load

将 URL 作为输入

选择 Web 文件选项后,我们会看到一个新窗口,可将 URL 作为输入。在此示例中,我们选择亚洲主权国家和附属领土列表作为维基百科的输入页面。提及 URL 并单击“下一步”。

网络文件向导

从 Web 文件中选择表

打开所选的 Web 文件时,会出现如下所示的窗口。在这里,我们可以看到网页中存在的各种表,标记为@1、@1、@3 等。选择第一个表并单击“下一步”两次。

3_webfile_文件类型

选择表的列

从上表中,我们可以通过使用十字号删除不需要的列来仅选择我们需要的列。

4_webfile_choose_fields

加载脚本

将文件加载到 QlikView 中是通过加载脚本完成的,可以在下面给出的屏幕截图中看到。因此,当我们使用任何分隔文件时,我们可以根据文件格式调整下面给定的脚本。

5_webfile_load_script

现在脚本向导提示以 *.qvw 文件扩展名的形式保存文件。它要求您选择需要保存文件的位置。单击“下一步”继续。现在是时候查看从 Web 文件加载的数据了。我们使用Table Box工作表对象来显示此数据。

创建表格框

是一个工作表对象,用于将可用数据显示为表格。它是从菜单Layout → New Sheet Object → Table Box调用的。 表框选项

单击下一步后,我们可以选择从表框中选择字段。您可以使用升级或降级按钮重新排列字段。

6_webfile_table_box_fields

表框数据

完成上述步骤后,将出现“表格框工作表对象”,其中显示从 Web 文件读取的数据。标记非英文字符!

7_webfile_final_data

QlikView - 数据库连接

QlikView可以连接到大多数流行的数据库,如MySQL、SQL Server、Oracle、Postgress等。它可以将数据和表结构提取到QlikView环境中,并将结果存储在内存中以供进一步分析。连接到任何这些数据库的步骤包括使用 DSN 创建 ODBC 连接,然后使用该 DSN 获取数据。

在本教程中,我们将连接到 MySQL 数据库。本教程假设您有可用的 MySQL 环境。按照以下步骤为 MySQL 创建 ODBC DSN(数据源名称):创建 DSN。将 DSN 命名为mysqluserdsn,或者如果您已经为 MySql 创建了 DSN,则您可能更愿意使用现有的 DSN。

连接到数据库

在本章中,我们将使用名为sakila的 MySql 内置数据库。我们创建一个新的 QlikView 文档并打开脚本编辑器(按 Control+E)。在“数据”选项卡下,我们找到名为“数据库”的部分。从下拉列表中选择 ODBC,然后单击连接。将打开以下窗口。选择名为mysqluserdns的 DSN ,然后单击“测试连接”。应出现“连接测试成功”消息。

数据库文件连接

验证与数据库的连接

连接成功后,将出现以下屏幕,在脚本编辑器的主窗口中显示与数据库的连接。

数据库连接

选择数据库表

单击上面窗口中的选择以获取表和列的列表。在这里,我们创建了 DSN,并将sakila作为默认数据库,我们从该数据库中获取表和列的列表。我们可以从数据库下拉列表中选择另一个数据库,如下面的屏幕截图所示。本章我们将继续使用 sakila 数据库。

数据库选择表

表加载器脚本

在上面的窗口中单击“确定”后,我们返回主脚本编辑器,显示使用名为actor的表的脚本。

数据库表脚本

在 qvd 文件中显示结果

现在加载到 QlikView 文档中的数据需要永久存储以供进一步分析。为此,我们将编辑脚本以将数据存储为 qvd 文件的形式。按Control+E打开编辑脚本窗口并编写以下代码。

在代码中,我们为列指定适当的名称,并在加载语句上方提及表名称。此外,我们还给出了生成的 qvd 文件的存储路径。将此文件另存为QV_mysql.qvw

数据库到qvd

使用 qvd 文件

qvd 文件可以加载到主文档中并用于创建图形和表格以进行进一步分析。按Control+R重新加载QV_mysql.qvw文件,然后在图表向导中单击“下一步” 。选择要创建的垂直表,以 actor_id、first_name、last_name 为维度,以 actor_id 的计数为表达式。图表如下所示。

数据库图表

QlikView - 内联数据

可以通过直接键入或粘贴将数据输入到 QlikView 文档中。此功能是一种将数据从剪贴板获取到 QlikView 的快速方法。脚本编辑器在“插入”选项卡下提供此功能。

脚本编辑器

要打开内联数据加载选项,我们打开脚本编辑器并转到Insert → Load Statement → Load Inline

内联脚本编辑器

插入数据

打开上面的屏幕后,我们会得到一个类似电子表格的文档,我们可以在其中输入值。我们还可以粘贴剪贴板中已有的值。请注意,列标题是自动创建的。单击“完成”。

内联脚本

加载脚本

加载数据的命令是在后台创建的,可以在脚本编辑器中看到。

内联脚本编辑器

表框数据

在创建表框工作表对象时,我们会看到从“内联数据加载”选项读取的数据。

内联数据图表

QlikView - 常驻负载

QlikView 可以从其 RAM 中已有的表加载数据,这些数据已经由脚本处理过。当您想要创建一个从同一脚本中现有表派生数据的表时,就会出现此要求。请注意,新表和现有表应位于同一脚本中。

创建加载脚本

打开脚本编辑器(或使用 Control+E)并提及以下脚本。在这里,我们创建一个名为Regions的内联表,其中包含不同区域的销售数据。然后我们创建另一个名为Total的表来计算按区域名称的总销售额。最后我们删除表 Regions,因为在这个 .qvw 文件中我们只需要名为Total 的表进行数据分析。

resident_load_edit_script

表框数据

在创建表框工作表对象时,我们看到从驻留数据加载选项读取的数据。

内联脚本编辑器

QlikView - 先前加载

QlikView 前置加载是一种加载类型,我们在其中使用加载语句,该语句采用同一脚本中存在的另一个加载语句的列。第一个 Load 语句读取的数据(位于脚本编辑器窗口的底部),然后由其上方的 load 语句使用。

加载脚本

下面给出的屏幕截图显示了数据脚本,该脚本作为内联数据加载,然后将 max 函数应用于其中一列。底部的加载语句使数据在 QlikView 的内存中可用,该数据由第一个加载语句上方的第二个加载语句使用。第二个 load 语句将 max 函数与 group by 子句一起应用。

1_preceeding_load_script

表框数据

在创建表框工作表对象时,我们会看到从“内联数据加载”选项读取的数据。

2_preceeding_load_table_box

QlikView - 增量负载

随着 QlikView 文档数据源中数据量的增加,加载文件所需的时间也会增加,从而减慢分析过程。最小化加载数据所需时间的一种方法是仅加载源中的新记录或更新的记录。这种仅将新的或更改的记录从源加载到 QlikView 文档的概念称为增量加载

为了从源中识别新记录,我们对每行使用顺序唯一键或​​日期时间戳。这些唯一键或数据时间字段的值必须从源文件流向 QlikView 文档。

让我们考虑以下包含零售商店中的产品详细信息的源文件。将其另存为本地系统中的 .csv 文件,并可通过 QlikView 进行访问。一段时间后,添加了更多产品,并且某些产品的描述发生了变化。

Product_Id,Product_Line,Product_category,Product_Subcategory
1,Sporting Goods,Outdoor Recreation,Winter Sports & Activities
2,"Food, Beverages & Tobacco",Food Items,Fruits & Vegetables
3,Apparel & Accessories,Clothing,Uniforms
4,Sporting Goods,Athletics,Rugby
5,Health & Beauty,Personal Care
6,Arts & Entertainment,Hobbies & Creative Arts,Musical Instruments
7,Arts & Entertainment,Hobbies & Creative Arts,Orchestra Accessories
8,Arts & Entertainment,Hobbies & Creative Arts,Crafting Materials
9,Hardware,Tool Accessories,Power Tool Batteries
10,Home & Garden,Bathroom Accessories,Bath Caddies
11,"Food, Beverages & Tobacco",Food Items,Frozen Vegetables
12,Home & Garden,Lawn & Garden,Power Equipment

将数据加载到 QlikView 中

我们将使用脚本编辑器 (Control+E) 通过选择“表文件”选项来加载上述 CSV 文件,如下所示。这里我们也将数据保存到本地系统的QVD文件中。将 QlikView 文档另存为 .qvw 文件。

incr_laod_create_qvd

验证加载的数据。

我们可以通过创建一个名为Table Box 的工作表对象来检查加载到 QlikView 文档的数据。这可以在“布局”菜单和“新建工作表对象”子菜单中找到。

表框选项

创建表格布局

选择“表框”工作表对象后,我们将进入下一个屏幕,该屏幕用于选择要创建的表中的列及其位置。我们选择以下列及其位置,然后单击完成。

Incr_load_product_details

查看现有数据

将出现下图,显示上一步中列出的数据。

增量加载数据

更新源数据

让我们将以下三个记录添加到源数据中。在这里,产品 ID 是唯一的数字,代表新记录。

13,Office Supplies,Presentation Supplies,Display
14,Hardware,Tool Accessories,Jigs
15,Baby & Toddler,Diapering,Baby Wipes

增量加载脚本

现在,我们编写脚本以仅从源中提取新记录。

// Load the data from the stored qvd.
Stored_Products:
LOAD Product_Id, 
     Product_Line, 
     Product_category, 
     Product_Subcategory
FROM
[E:\Qlikview\data\products.qvd]
(qvd);

//Select the maximum value of Product ID.
Max_Product_ID:
Load max(Product_Id) as MaxId
resident Stored_Products;

//Store the Maximum value of product Id in a variable.
Let MaxId = peek('MaxId',-1);

	 drop table Stored_Products;


//Pull the rows that are new.	 
NewProducts:
LOAD Product_Id,Product_Line, Product_category,Product_Subcategory
	 from [E:\Qlikview\data\product_categories.csv]
	 (txt, codepage is 1252, embedded labels, delimiter is ',', msq)
	 where Product_Id > $(MaxId);
	 
//Concatenate the new values with existing qvd.
Concatenate
LOAD Product_Id,Product_Line, Product_category, 
     Product_Subcategory
FROM [E:\Qlikview\data\products.qvd](qvd);

//Store the values in qvd.
store NewProducts into [E:\Qlikview\data\products.qvd](qvd);

上面的脚本仅获取新记录,这些记录已加载并存储到 qvd 文件中。我们看到新产品 ID 为 13、14 和 15 的记录。

增量加载最终数据

QlikView - 数据文件 (QVD)

QlikView 的重要功能之一是能够以非常压缩的大小存储大量数据,并将其与 QlikView 文档一起存储,这一点使其如此出色。因此,一旦创建文档,我们就不需要连接到数据源,因为数据已经与文档的布局一起存储。这是通过 QVD 文件实现的,该文件是一个以 .qvd 扩展名存储的平面文件。QVD 文件存储一个 QlikView 文档的数据,并使用 QlikView 文档中提供的脚本编辑器创建。

使用 QVD 文件的优点

在 QlikView 中使用 QVD 文件的优点如下 -

  • 更快的数据加载
  • 随着数据量的增长,优雅地支持扩展
  • 用于增量负载
  • 来自多个来源的数据可以合并到一个数据集
  • 并行提取数据

创建 QVD 文件

QVD 文件是在加载 QlikView 文件期间使用 STORE 语句创建的。此语句创建一个 qvd 文件,该文件作为文件存储在指定位置;与创建它的 QVW 文件分开。

下面给出了通过读取源文件将数据加载到 QlikView 文档后存储 qvd 文件的示例。

csv_to_qvd.JP​​G

使用 QVD 文件

QVD 文件加载到 QlikView 文档的方式与使用其他文件(如 CSV、Excel 和分隔文件)的方式类似。我们使用“文件”菜单下的“打开”选项并浏览我们之前创建的 QVD 文件。打开后,它会为我们提供一个窗口来查看数据、选择列标题并执行所需的任何数据转换

打开qvd文件

QVD 文件加载器脚本

单击“完成”后,将出现编辑脚本窗口,其中显示用于加载 QVD 文件的代码。我们可以进一步编辑此代码。例如,仅显示少数几列或应用任何内置函数等。单击完成将文件加载到当前 QlikView 文档中。将 QlikView 文档另存为use_qvd.qvw

qvd_文件_加载_脚本

显示 QVD 文件中的数据

使用Control+R重新加载文档,然后选择菜单选项布局 → 新建工作表对象 → 表格框。出现一个窗口,显示 QVD 文件中表格中的所有列。选择“全部添加”将所有列添加到显示表中。使用“升级/降级”选项更改列的顺序。单击“完成”。将出现以下屏幕,显示 QVD 文件的内容。

qvd_文件_数据_表

QlikView - 工作表和对象

每个 QlikView 文档均由至少一个名为Main的工作表组成。我们可以添加更多工作表,就像同一 QlikView 文档的许多页面一样。工作表帮助我们显示多种数据格式,例如多个图表或多个表格。每个工作表可以包含各种工作表对象。此外,可以使用升级工作表/降级工作表选项重新排列工作表,并且可以使用删除工作表选项从 QlikView 文档中删除工作表。

床单_添加_删除

板材属性

工作表具有各种属性,可以设置这些属性来自定义工作表。例如,我们可以设置工作表的名称及其颜色。右键单击工作表中的任意位置并选择“属性”选项。然后选择以下属性。

  • 图纸设置 → 颜色。- 这将设置工作表的背景颜色。

  • 选项卡设置 → 自定义颜色。- 这将为显示工作表名称的选项卡设置颜色。

  • 标题。- 这将设置工作表的名称。

表格属性

创建工作表对象

工作表对象是嵌入在工作表中的 QlikView 数据元素。它们显示加载到 QlikView 内存中的数据。每个工作表对象都与一个数据源及其一个或多个列相关联。工作表对象是从布局菜单创建的,如下所示。

工作表对象菜单

使用工作表对象

工作表对象显示来自数据源的数据,并且工作表中的所有对象都相互关联。让我们创建一个列表框和一个多选框并查看此关联的操作。

创建列表框

列表框显示 QlikView 内存中可用表格的列中的数据。从“添加工作表对象”选项中选择“列表框”选项,并按如下所示设置属性。

工作表列表框

创建多盒

多框表示来自表中多列的数据。从“添加工作表对象”选项中选择“多框”选项,然后设置属性,如下所示。

Sheet_multi_box

完成上述步骤后,将出现以下窗口,其中显示这两个对象。

sheet_list_multi_boxes

工作表对象之间的关联

我们可以通过从多功能框中选择一个选项来查看工作表对象如何相互链接,该选项突出显示列表框中的关联行。让我们在 Multi Box 的产品类别下拉列表中选择“尿布”。出现如下所示的窗口。

工作表对象关联

QlikView - 脚本

脚本是 QlikView 中非常强大的功能,它可以控制数据加载选项和数据转换。它允许使用 QlikView 中提供的许多内置函数,并创建可在 QlikView 文档中的多个脚本之间使用的子例程。

脚本编写是使用脚本编辑器完成的。可以使用脚本编辑器从文件菜单访问它。我们还可以按Control +E打开脚本编辑器窗口。它预填充一些数据格式,这些数据格式被设置为要处理的数据的默认格式。例如,千位分隔符是逗号,日期采用月-日-年格式。可以根据需要更改这些以适应传入的数据。

脚本编辑器

脚本编辑器功能

脚本编辑器具有许多功能,可以通过脚本编辑器窗口中的菜单访问这些功能,该菜单与主菜单不同。下面列出了重要功能。

文件菜单

  • 重新加载- 重新加载脚本并获取新数据。

  • 大写/小写- 转换单词的大小写,因为 QlikView 区分大小写。

  • 注释- 用于注释代码块。

编辑菜单

  • 清除整个脚本- 清除活动脚本选项卡。

  • 打开脚本文件- 打开保存的脚本文件。

  • 表查看器- 用于查看正在加载的数据的表格视图。

插入菜单

  • 环境变量- 插入环境变量的标准列表。

  • 脚本文件- 允许浏览脚本文件并插入它们。

  • 连接/断开语句- 用于连接或断开与外部数据库的连接。

选项卡菜单

  • 插入制表符- 在当前光标位置插入制表符。

  • 升级/降级选项卡- 允许将选项卡从左移动到右,反之亦然。

  • 与上一个合并- 用于将活动标签的内容与上一个选项卡合并。

工具菜单

  • ODBC 管理器 64 位/ODBC 管理器 32 位- 允许为数据源设置正确的 DSN 信息。

  • 编辑器首选项- 允许您配置文本字体和大小、帮助功能、快捷方式、默认脚本引擎等。

  • 语法检查- 用于验证脚本代码的语法。

QlikView - 功能

QlikView 有许多内置函数,可应用于内存中已有的数据。这些函数被组织成许多类别,并且函数的语法一旦被选择就会出现。我们可以单击“粘贴”按钮将表达式放入编辑器并提供参数。

创建表格框

按照下面屏幕截图所示的菜单创建一个表格框。

表框选项

完成上述步骤后,我们会在左下角看到一个显示计算条件的窗口。

3_函数_计算_字段。

功能一览

单击计算条件旁边的按钮并转到“函数”选项卡。它显示可用功能的列表。

4_函数_所有_函数

从函数类别中选择字符串时,我们只能看到很少的函数,它们将字符串作为参数。

5_函数_字符串

在接下来的章节中,我们将看到许多重要函数的使用。

QlikView - 间隔匹配

QlikView IntervalMatch 是一个强大的函数,用于将不同的数值与数字间隔进行匹配。它对于分析事件实际发生情况与计划事件的情况非常有用。使用场景的示例是在生产车间的装配线上,皮带计划在特定时间和特定持续时间内运行。然而,由于故障等原因,实际运行可能会在不同的时间点发生。

例子

考虑一条装配线,其中有三个传送带,分别为 A、B 和 C。它们计划在一天的特定时间启动和停止。在某一天,我们研究实际的开始和结束时间并分析当天发生的所有事情。为此,我们考虑如下所示的两组观察结果。

# Data Set for AssembilyLine.
StartTime,EndTime, BeltNo
00:05,4:20, A
1:50,2:45,B
3:15,10:30,C
	
# Data set for the events happened.
ActualTime,Product
1:10,Start Belt A
2:24,Stop Belt A
3:25,Restart Belt A
4:35,Stop Belt A
2:20,Start Belt B
3:11, Stop Belt B
3:15,Start Belt C
11:20, Stop Belt C

创建脚本

我们使用Control+E在新的 QlikView 文档中打开脚本编辑器。以下代码创建所需的表作为内联数据。创建此脚本后,按Control+R将数据重新加载到 QlikView 文档中。

间隔匹配_创建_表

创建工作表对象

让我们创建一个Table Box工作表对象来显示 IntervalMatch 函数生成的数据。转到菜单项“布局”→“新建工作表对象”→“表格框”。将出现以下窗口,其中我们提到表的标题并选择要显示的所需字段。

间隔匹配_创建_表

显示表格框

单击上述窗口中的“确定”后,会出现一个表格,其中显示与间隔“开始时间”和“结束时间”相匹配的“实际时间”字段。

间隔匹配表数据

QlikView - 聚合函数

QlikView 聚合函数用于从表的行生成聚合数据。创建加载脚本时,这些函数将应用于列。下面给出的是聚合函数的示例列表。在应用聚合函数时,我们还需要适当地应用Group by子句。

  • SUM给出列数值的总和。
  • AVG给出列数值的平均值。
  • MAX给出列数值的最大值。
  • MIN给出列数值的最小值。

例子

考虑在本地系统中存储为product_sales.csv 的以下数据。它代表商店中不同产品线和产品类别的销售数字。

Product_Line,Product_category,Quantity,Value
Sporting Goods,Outdoor Recreation,12,5642
Food, Beverages & Tobacco,38,2514
Apparel & Accessories,Clothing,54,2365
Apparel & Accessories,Costumes & Accessories,29,4487
Sporting Goods,Athletics,11,812
Health & Beauty,Personal Care,21,6912
Arts & Entertainment,Hobbies & Creative Arts,58,5201
Arts & Entertainment,Paintings,73,8451
Arts & Entertainment,Musical Instruments,41,1245
Hardware,Tool Accessories,2,456
Home & Garden,Bathroom Accessories,36,241
Food,Drinks,54,1247
Home & Garden,Lawn & Garden,29,5462
Office Supplies,Presentation Supplies,22,577
Hardware,Blocks,53,548
Baby & Toddler,Diapering,19,1247

创建加载脚本

我们使用Control+E在新的 QlikView 文档中打开脚本编辑器。以下代码创建所需的表作为内联数据。创建此脚本后,按 Control+R 将数据重新加载到 QlikView 文档中。

聚合_创建_脚本

创建工作表对象

让我们创建一个Table Box工作表对象来显示 Aggregate 函数生成的数据。转到菜单布局 → 新建工作表对象 → 表格框。将出现以下窗口,其中我们提到表的标题并选择要显示的所需字段。单击确定将在 QlikView Table Box 中显示 CSV 文件中的数据,如下所示。

聚合数据

应用 SUM() 函数

下面给出的加载脚本用于查找产品线和产品类别的销售数量和销售价值的总和。

聚合总和脚本

单击确定并按Control+R将数据重新加载到 QlikView 文档中。现在,按照上面 -创建工作表对象中给出的相同步骤来创建 QlikView 表格框以显示脚本结果,如下所示。

聚合总和数据

应用 AVG() 函数

下面给出的加载脚本用于创建每个产品线的销售数量和销售价值的平均值。

# Average sales of Quantity and value in each Product Line.
LOAD Product_Line, 
     avg(Quantity),
	 avg(Value)
FROM
[E:\Qlikview\data\product_sales.csv]
(txt, codepage is 1252, embedded labels, delimiter is ',', msq)
Group by Product_Line;

单击确定并按Control+R将数据重新加载到 QlikView 文档中。现在,按照上面 -创建工作表对象中给出的相同步骤来创建 QlikView 表格框以显示脚本结果,如下所示。

聚合平均数据

应用 MAX() 和 MIN() 函数

下面给出的是用于创建每个产品线的最大和最小销售数量的加载脚本。

# Maximum and Minimum sales in each product Line.
LOAD Product_Line,
     max(Quantity) as MaxQuantity,
     min(Quantity) as MinQuantity
FROM
[E:\Qlikview\data\product_sales.csv]
(txt, codepage is 1252, embedded labels, delimiter is ',', msq)
Group by Product_Line;

单击确定并按Control+R将数据重新加载到 QlikView 文档中。现在,按照与上面相同的步骤 -创建工作表对象来创建 QlikView 表格框以显示脚本的结果,如下所示。

聚合最大最小数据

QlikView - 匹配功能

QlikView 中的Match ()函数用于将表达式中的字符串值与列中存在的数据值进行匹配。它类似于我们在SQL语言中看到的in函数。它对于获取包含特定字符串的行很有用,并且它还有一个以 wildmatch() 函数形式的扩展。

让我们将以下数据视为下面示例的输入文件。

Product_Id,Product_Line,Product_category,Product_Subcategory
1,Sporting Goods,Outdoor Recreation,Winter Sports & Activities
2,Food, Beverages & Tobacco,Food Items,Fruits & Vegetables
3,Apparel & Accessories,Clothing,Uniforms
4,Sporting Goods,Athletics,Rugby
5,Health & Beauty,Personal Care
6,Arts & Entertainment,Hobbies & Creative Arts,Musical Instruments
7,Arts & Entertainment,Hobbies & Creative Arts,Orchestra Accessories
8,Arts & Entertainment,Hobbies & Creative Arts,Crafting Materials
9,Hardware,Tool Accessories,Power Tool Batteries
10,Home & Garden,Bathroom Accessories,Bath Caddies
11,Food, Beverages & Tobacco,Food Items,Frozen Vegetables
12,Home & Garden,Lawn & Garden,Power Equipment
13,Office Supplies,Presentation Supplies,Display
14,Hardware,Tool Accessories,Jigs
15,Baby & Toddler,Diapering,Baby Wipes

使用 Match() 函数加载脚本

以下脚本显示加载脚本,该脚本读取名为product_categories.csv 的文件。我们在Product_Line字段中搜索与字符串“Food”和“Sporting Goods”匹配的值。

匹配的函数脚本

创建工作表对象

让我们创建一个 Table Box 工作表对象来显示 match 函数生成的数据。转到菜单布局 → 新建工作表对象 → 表格框。将出现以下窗口,在其中我们提及表的标题,然后选择要显示的所需字段。单击确定将在 QlikView Table Box 中显示 CSV 文件中的数据,如下所示。

匹配的函数数据

使用 Wildmatch() 函数加载脚本

wildmatch ()函数是 match() 函数的扩展,其中我们可以使用通配符作为字符串的一部分,用于将值与正在搜索的字段中的值进行匹配。我们搜索字符串“Off*”、“*ome*”。

野配脚本

创建工作表对象

让我们创建一个Table Box工作表对象来显示 wildmatch 函数生成的数据。转到菜单项“布局”→“新建工作表对象”→“表格框”。将出现以下窗口,在其中我们提及表的标题,然后选择要显示的所需字段。单击确定将在 QlikView Table Box 中显示 CSV 文件中的数据,如下所示。

野生匹配数据

QlikView - 排名功能

QlikView 中的Rank ()函数用于显示字段中值的排名以及返回具有特定排名值的行。所以它有两种场景使用。第一种情况是在 QlikView 图表中显示字段中值的排名,第二种情况是在聚合函数中仅显示具有特定排名值的行。

输入数据

下面给出了描述 Rank 函数的示例中使用的数据。您可以将其另存为 .csv 文件,保存在系统中 QlikView 可以访问的路径中。

Product_Id,Product_Line,Product_category,Quantity,Value
1,Sporting Goods,Outdoor Recreation,12,5642
2,Food, Beverages & Tobacco,38,2514
3,Apparel & Accessories,Clothing,54,2365
4,Apparel & Accessories,Costumes & Accessories,29,4487
5,Sporting Goods,Athletics,11,812
6,Health & Beauty,Personal Care,21,6912
7,Arts & Entertainment,Hobbies & Creative Arts,58,5201
8,Arts & Entertainment,Paintings,73,8451
9,Arts & Entertainment,Musical Instruments,41,1245
10,Hardware,Tool Accessories,2,456
11,Home & Garden,Bathroom Accessories,36,241
12,Food,Drinks,54,1247
13,Home & Garden,Lawn & Garden,29,5462
14,Office Supplies,Presentation Supplies,22,577
15,Hardware,Blocks,53,548
16,Baby & Toddler,Diapering,19,1247
17,Baby & Toddler,Toys,9,257
18,Home & Garden,Pipes,81,1241
19,Office Supplies,Display Board,29,2177

加载脚本

使用脚本编辑器将上述数据加载到 QlikView 内存中。从“文件”菜单打开脚本编辑器或按Control+E。从“文件中的数据”选项卡中选择“表文件”选项,然后浏览包含上述数据的文件。单击确定并按Control+R将数据加载到 QlikView 的内存中。

排名_laod_脚本

使用 Rank() 函数创建图表

接下来,我们按照下面给出的步骤创建一个图表,该图表显示了相对于维度 Product_Line 描述的字段的排名。

选择图表类型

单击图表向导并选择选项垂直表作为图表类型。单击“下一步”

排名图类型

选择图表维度

第一个维度下拉列表中,选择 Product_Line 作为维度。单击“下一步”

排名选择尺寸

定义图表表达式

在自定义表达式字段中,提及排名表达式,如下所示。这里我们考虑名为Value的数字字段,它表示每个产品线下每个类别的销售值。单击“下一步”

排名图表达式

显示图表

在上述步骤中单击“完成”后,将出现以下图表,显示每个产品线的销售额排名。

排名图表数据

使用带有 Rank 的聚合函数

max、min 等聚合函数可以将排名作为参数来返回满足特定排名值的行。我们认为脚本编辑器中存在以下表达式,它将给出每个产品线下包含最高销售额的行。

# Load the records with highest sales value for each product line.
LOAD Product_Line, 
     max(Value,1)
FROM
[E:\Qlikview\data\product_sales.csv]
(txt, codepage is 1252, embedded labels, delimiter is ',', msq)
group by Product_Line;

创建工作表对象

让我们创建一个Table Box工作表对象来显示上面给定脚本生成的数据。转到菜单布局 → 新建工作表对象 → 表格框。将出现以下窗口,其中我们提到表的标题并选择要显示的所需字段。单击确定将在 QlikView Table Box 中显示 CSV 文件中的数据,如下所示。

等级聚合函数

QlikView - 窥视功能

QlikView 中的peek ()函数用于从先前记录中获取字段值并在计算中使用它。

输入数据

让我们考虑如下所示的每月销售数据。使用文件名monthly_sales.csv 保存数据。

Month,Sales Volume
March,2145
April,2458
May,1245
June,5124
July,7421
August,2584
September,5314
October,7846
November,6532
December,4625
January,8547
February,3265

加载脚本

使用脚本编辑器将上述数据加载到 QlikView 内存中。从“文件”菜单打开脚本编辑器或按Control+E。从包含上述数据的文件中选择“表文件”选项。编辑加载脚本以添加以下代码。单击确定,然后单击Control+R将数据加载到 QlikView 的内存中。

LOAD Month, 
     [Sales Volume],
     peek('Sales Volume') as Prevmonth
FROM
[C:\Qlikview\data\monthly_sales.csv]
(txt, codepage is 1252, embedded labels, delimiter is ',', msq);

创建工作表对象

让我们创建一个Table Box工作表对象来显示上述脚本生成的数据。转到菜单项“布局”→“新建工作表对象”→“表格框”。将出现以下窗口,其中我们提到表的标题并选择要显示的所需字段。单击确定将在 QlikView 表格框中显示 csv 文件中的数据,如下所示。还可以按如下所示设置排序顺序,以按照与源中字段“月份”相同的顺序获取结果。

每月销售负载订单

完成上述步骤并单击“完成”后,我们将看到显示数据的表框,如下所示。

Monthly_sales_prevmonth

在计算中使用 peek() 函数

peek ()可用于涉及其他列的计算。让我们显示每个月销量的百分比变化。以下脚本实现了此结果。

LOAD
Month, [Sales Volume],
peek('Sales Volume') as Prevvolume,
(([Sales Volume]-peek('Sales Volume')))/peek('Sales Volume')*100  as Difference
FROM
[C:\Qlikview\data\monthly_sales.csv]
(txt, codepage is 1252, embedded labels, delimiter is ',', msq); 

创建工作表对象

让我们创建一个Table Box工作表对象来显示上述脚本生成的数据。转到菜单项“布局”→“新建工作表对象”→“表格框”。将出现以下窗口,其中我们提到表的标题并选择要显示的所需字段。单击确定将在 QlikView Table Box 中显示 CSV 文件中的数据,如下所示。

Monthly_sales_prevmonth_diff

QlikView - RangeSum 函数

QlikView 中的RangeSum ()函数用于对所选字段进行选择性求和,这是 sum 函数无法轻松实现的。它可以将包含其他函数的表达式作为其参数并返回这些表达式的总和。

输入数据

让我们考虑如下所示的每月销售数据。使用文件名monthly_sales.csv 保存数据。

Month,Sales Volume
March,2145
April,2458
May,1245
June,5124
July,7421
August,2584
September,5314
October,7846
November,6532
December,4625
January,8547
February,3265

加载脚本

使用脚本编辑器将上述数据加载到 QlikView 内存中。从“文件”菜单打开脚本编辑器或按Control+E。从“文件中的数据”选项卡中选择“表文件”选项,然后浏览包含上述数据的文件。编辑加载脚本以添加以下代码。单击确定,然后单击Control+R将数据加载到 QlikView 的内存中。

LOAD 
Month, [Sales Volume]
FROM
[C:\Qlikview\data\monthl