QlikView 快速指南



QlikView - 概述

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

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

QlikView 的功能

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

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

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

  • 聚合根据需要动态计算 - 由于数据保存在内存中,因此计算是在动态进行的。无需存储预先计算的聚合值。

  • 数据压缩到原始大小的 10% - QlikView 大量使用数据字典。任何分析所需的内存中只有必要的数据位。因此,它将原始数据压缩到非常小的尺寸。

  • 使用颜色进行可视化关系 - 数据之间的关系不是通过箭头或线条显示,而是通过颜色显示。选择一个数据片段会为相关数据提供特定的颜色,为不相关的数据提供另一种颜色。

  • 直接和间接搜索 - 用户无需直接输入要查找的值,而是可以输入一些相关数据并获得准确的结果,因为存在数据关联。当然,他们也可以直接搜索值。

QlikView - 安装

下载 QlikView

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

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

启动安装向导

双击 QlikViewDesktop_x64Setup.exe 将显示一个屏幕,用于选择您选择的语言。选择英语后,将显示以下屏幕。然后单击 下一步

Installation step-1

接受许可协议

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

Installation step-2

提供您的详细信息

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

Installation step-3

选择目标文件夹

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

Installation step-4

选择安装类型

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

Installation step-5

开始安装

在此屏幕中,您最终决定真正开始安装。如果需要,您仍然可以返回并更改某些选项。假设您对到目前为止的所有内容都满意,请单击“安装”。

Installation step-6

安装完成

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

Installation step-7

验证安装

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

Verify the Install

您现在可以开始学习 QlikView 了。

QlikView - 架构

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

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

架构概述

QlikView 的架构包括一个前端来可视化处理后的数据,以及一个后端来为 QlikView 用户文档提供安全和发布机制。下图描述了 QlikView 的内部工作原理。架构将在图片下方详细讨论。

qlikview_architecture

前端

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 文档以及您想要经常访问的文档。

Verify the Install

菜单命令

关闭“开始”窗口后,我们将获得包含所有可用菜单命令的主界面。它们代表 QlikView 中提供的全部功能集。以下是菜单命令每个部分的概述。

All menu

文件菜单

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

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

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

  • 表格查看器 选项用于以图形方式查看表格、字段及其关联的结构。

All menu

编辑菜单

此菜单用于执行编辑选项,如复制、粘贴、剪切和使用格式刷。此菜单中的重要功能包括:

  • 激活所有 选项激活打开的工作表中存在的所有工作表对象。

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

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

All menu

视图菜单

此菜单用于查看标准工具栏和放大/缩小功能。它还以级联菜单的形式显示所有活动工作表。此菜单中的重要功能包括:

  • 启用/禁用 WebView 模式 切换 WebView 模式和本地视图模式。

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

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

View menu

选择菜单

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

  • 锁定 锁定当前选择中的所有值。
  • 解锁 解锁当前选择中所有锁定的值。
View menu

布局菜单

布局菜单用于添加选项卡式工作表、选择不同的工作表和重新排列工作表对象。此菜单中的重要功能包括:

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

设置菜单

设置菜单用于设置用户首选项、文档属性和工作表属性。此菜单中的重要功能包括:

  • 变量概述 所有未隐藏的变量及其值在一个列表中。
  • 表达式概述 将文档、工作表和工作表对象中的表达式显示为一个列表。
Settings menu

书签菜单

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

View menu

报表菜单

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

Reports menu

工具菜单

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

  • 快速图表向导 在不使用大量不同设置和选项的情况下创建简单的图表。

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

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

Tools menu

对象菜单

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

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

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

  • 移除 - 完全删除工作表及其中的工作表对象。

object menu

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

QlikView - Excel文件

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

选择Excel文件

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

1_excel_load_data_drag

选择数据源

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

2_excel_file_wizard

加载脚本

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

3_excel_load_script

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

创建表格框

表格框是一个工作表对象,用于将可用数据显示为表格。它从菜单布局→新建工作表对象→表格框调用。

4_table_box_option

单击下一步后,我们将获得从表格框中选择字段的选项。您可以使用提升或降低按钮重新排列字段。

5_Table_box_fields

表格框数据

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

6_table_box_result

QlikView - 分隔符文件

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

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

1_dilimeted_insert_script

选择文件标题

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

csv_file_header

加载脚本

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

3_dilimeted_load_script

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

创建表格框

表格框是一个工作表对象,用于将可用数据显示为表格。它从菜单布局→新建工作表对象→表格框调用。

4_table_box_option

单击下一步后,我们将获得从表格框中选择字段的选项。您可以使用提升或降低按钮重新排列字段。

5_Table_box_fields

表格框数据

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

6_table_box_result

QlikView - XML文件

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

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

1_file_insert_script

选择XML文件结构

打开选定的XML文件后,将出现如下所示的窗口。在左侧的文件类型部分中,选择XML。XML文件的内容现在显示为表格以及标题列。单击完成。

2_xml_file_type

文件加载器脚本

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

3_xml_load_script

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

创建表格框

表格框是一个工作表对象,用于将可用数据显示为表格。它从菜单布局→新建工作表对象→表格框调用。

table_box_option

单击下一步后,我们将获得从表格框中选择字段的选项。您可以使用提升或降低按钮重新排列字段。

5_xml_select_fileds

表格框数据

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

6_xml_final_data

QlikView - Web文件

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

1_webfile_load

将URL作为输入

选择Web文件选项后,我们将获得一个新窗口以将URL作为输入。在此示例中,我们从维基百科中选择亚洲主权国家和属地列表作为输入页面。提及URL并单击下一步。

web_file_wizard

从Web文件中选择表格

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

3_webfile_file_type

选择表格的列

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

4_webfile_choose_fields

加载脚本

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

5_webfile_load_script

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

创建表格框

表格框是一个工作表对象,用于将可用数据显示为表格。它从菜单布局→新建工作表对象→表格框调用。table_box_option

单击下一步后,我们将获得从表格框中选择字段的选项。您可以使用提升或降低按钮重新排列字段。

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,然后单击测试连接。应出现消息连接测试成功

 database_file_connect

验证数据库连接

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

database_connected

选择数据库表

在上述窗口中单击选择以获取表和列的列表。由于我们已使用sakila作为默认数据库创建了DSN,因此我们将获得来自此数据库的表和列的列表。我们可以从数据库下拉列表中选择另一个数据库,如下面的屏幕截图所示。在本节中,我们将继续使用sakila数据库。

database_select_table

表加载器脚本

在上述窗口中单击确定后,我们将返回到主脚本编辑器,其中显示了使用名为actor的表的脚本。

database_table_script

在qvd文件中显示结果

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

在代码中,我们为列指定了合适的名称,并在 load 语句上方提到了表名。此外,我们还指定了生成 QVD 文件的存储路径。将此文件保存为QV_mysql.qvw

datbase_to_qvd

使用 QVD 文件

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

database_chart

QlikView - 内联数据

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

脚本编辑器

要打开内联数据加载选项,我们打开脚本编辑器并转到插入→加载语句→内联加载

inline_script_editor

插入数据

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

inline_scripting

加载脚本

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

inline_script_editor

表格框数据

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

inline_data_chart

QlikView - Resident 加载

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

创建加载脚本

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

resident_load_edit_script

表格框数据

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

inline_script_editor

QlikView - 前置加载

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

加载脚本

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

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 中

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

 incr_laod_create_qvd

验证加载的数据。

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

table_box_option

创建表布局

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

Incr_load_product_details

查看现有数据

将显示以下图表,其中显示了上一步中布局的数据。

incremental_load_data

更新源数据

让我们向源数据中再添加以下三个记录。这里,产品 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。

incremental_load_final_data

QlikView - 数据文件 (QVD)

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

使用 QVD 文件的优势

在 QlikView 中使用 QVD 文件的优势如下:

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

创建 QVD 文件

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

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

csv_to_qvd.JPG

使用 QVD 文件

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

open_qvd_file

QVD 文件加载器脚本

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

qvd_file_load_script

显示来自 QVD 文件的数据

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

qvd_file_data_table

QlikView - 工作表和对象

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

Sheets_add_remove

工作表属性

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

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

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

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

Sheets_properties

创建工作表对象

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

sheet_objects_menu

使用工作表对象

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

创建列表框

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

sheet_list_box

创建多选框

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

sheet_multi_box

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

sheet_list_multi_boxes

工作表对象之间的关联

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

sheet_objects_association

QlikView - 脚本

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

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

 script Editor

脚本编辑器功能

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

文件菜单

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

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

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

编辑菜单

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

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

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

插入菜单

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

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

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

选项卡菜单

  • 插入选项卡 - 在当前光标位置插入选项卡。

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

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

工具菜单

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

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

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

QlikView - 函数

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

创建表格框

按照下面屏幕截图中显示的菜单创建表格框。

table_box_option

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

3_functions_calculation_fields.

函数列表

点击计算条件旁边的按钮,然后转到“函数”选项卡。它显示了可用的函数列表。

4_functions_all_functions

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

5_functions_string

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

QlikView - IntervalMatch

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

创建脚本

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

intervalmatch_create_table

创建工作表对象

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

 intervalmatch_create_table

显示表格框

在上述窗口中点击“确定”后,将出现一个表格,显示与区间StartTime和EndTime匹配的字段ActualTime。

intervalmatch_table_data

QlikView - 聚合函数

QlikView聚合函数用于从表格的行生成聚合数据。在创建加载脚本时,这些函数应用于列。下面是一个聚合函数的示例列表。在应用聚合函数时,我们还需要适当地应用分组依据子句。

  • 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

创建加载脚本

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

Aggregate_create_script

创建工作表对象

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

Aggregate_data

应用SUM()函数

以下是查找产品线和产品类别销售数量和销售额之和的加载脚本。

Aggregate_sum_script

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

Aggregate_sum_data

应用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;

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

Aggregate_average_data

应用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;

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

Aggregate_max_min_data

QlikView - Match 函数

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”匹配的值。

Matched_func_script

创建工作表对象

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

Matched_func_data

带有Wildmatch()函数的加载脚本

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

wildmatch_script

创建工作表对象

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

wildmatch_data

QlikView - Rank 函数

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内存中。从“文件”菜单打开“脚本编辑器”,或按Ctrl+E。从“从文件获取数据”选项卡中选择“表格文件”选项,并浏览包含上述数据的文件。点击“确定”并按Ctrl+R将数据加载到QlikView的内存中。

rank_laod_script

使用Rank()函数创建图表

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

选择图表类型

点击图表向导并选择直线表作为图表类型。点击“下一步”。

rank_chart_type

选择图表维度

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

rank_select_diemnsions

定义图表表达式

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

rank_chart_expression

显示图表

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

rank_chart_data

将聚合函数与Rank一起使用

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

# 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;

创建工作表对象

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

rank_aggr_func

QlikView - Peek 函数

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 内存中。从“文件”菜单打开脚本编辑器或按**Ctrl+E**。从包含以上数据的文件的**表格文件**选项中选择。编辑加载脚本以添加以下代码。单击**确定**并单击**Ctrl+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);

创建工作表对象

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

Monthly_sales_load_order

完成以上步骤并单击**完成**后,我们将获得显示如下所示数据的表格框。

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); 

创建工作表对象

让我们创建一个**表格框**工作表对象来显示上面给定脚本生成的数据。转到菜单项**布局 → 新建工作表对象 → 表格框**。将出现以下窗口,在其中我们提及表格的标题并选择要显示的所需字段。单击“确定”将在 QlikView 表格框中显示来自 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 内存中。从“文件”菜单打开脚本编辑器或按**Ctrl+E**。从**从文件导入数据**选项卡中选择**表格文件**选项,并浏览到包含以上数据的文件。编辑加载脚本以添加以下代码。单击**确定**并单击**Ctrl+R**将数据加载到 QlikView 的内存中。

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

应用 RangeSum() 函数

将以上数据加载到 QlikView 的内存后,我们编辑脚本以添加一个新列,该列将提供按月销售额的滚动总和。为此,我们还借助前面章节中讨论的 peek 函数来保存上一条记录的值,并将其添加到当前记录的销售额中。以下脚本实现了结果。

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

创建工作表对象

让我们创建一个**表格框**工作表对象来显示上面给定脚本生成的数据。转到菜单**布局 → 新建工作表对象 → 表格框**。

将出现以下窗口,在其中我们提及表格的标题并选择要显示的所需字段。单击“确定”将在 QlikView 表格框中显示来自 CSV 文件的数据,如下所示。

RangeSum

QlikView - 文档

QlikView 文档是包含用于数据展示和分析的所有对象的的文件。它包含工作表、变量、数据模型、源数据连接详细信息,甚至从源提取后加载的数据。

文档属性

我们可以快速了解 QlikView 文档的基本信息。点击**帮助 → 文档支持信息**。下面是一个示例输出。

document_details

设置文档背景图像

我们可以使用**通用**选项卡下的**墙纸图像**复选框将图像设置为文档的背景图像。我们选择一个图像,并使用下拉按钮将其对齐到左上角位置。

document_backgound_image

选择以上选项后将出现以下屏幕。

document_backgound_tp

工作表对象

QlikView 文档包含各种工作表对象,可以通过拖动它们来移动并在文档中的任何位置放置。让我们创建两个工作表对象,一个**表格框**和一个**统计框**。您可以参考前面的章节,我们已经学习了如何创建工作表对象。此外,我们使用文件 Product_sales.csv,此处有说明。

document_sheet_objects

可以使用“工作表”选项卡查看工作表对象的详细信息。它显示文档中包含的所有工作表,以及每个工作表显示的工作表对象。工作表和工作表对象都具有唯一的 ID。我们也可以从此选项卡本身编辑这些对象的各种属性。

document_sheet_list

计划文档

可以计划 QlikView 文档以在某些所需间隔刷新。这是使用文档属性窗口中提供的**计划**选项卡完成的。

document_scheduling

QlikView - 列表框

**列表框**表示特定字段的所有值的列表。在列表框中选择一个值会突出显示其他工作表对象中的相关值。这有助于更快的视觉分析。它对于在各种工作表对象之间遵循钻取路径也非常有用。它还有一个搜索功能,允许在列表框中搜索特定值,这对于非常长的值列表非常有用。

输入数据

让我们考虑以下输入数据,它表示不同产品线和产品类别的销售额。

Product_Line,Product_category,Value
Sporting Goods,Outdoor Recreation,5642
Food, Beverages & Tobacco,2514
Apparel & Accessories,Clothing,2365
Apparel & Accessories,Costumes & Accessories,4487
Sporting Goods,Athletics,812
Health & Beauty,Personal Care,6912
Arts & Entertainment,Hobbies & Creative Arts,5201
Arts & Entertainment,Paintings,8451
Arts & Entertainment,Musical Instruments,1245
Hardware,Tool Accessories,456
Home & Garden,Bathroom Accessories,241
Food,Drinks,1247
Home & Garden,Lawn & Garden,5462
Office Supplies,Presentation Supplies,577
Hardware,Blocks,548
Baby & Toddler,Diapering,1247
Baby & Toddler,Toys,257
Home & Garden,Pipes,1241
Office Supplies,Display Board,2177

加载脚本

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

LOAD Product_Line, 
     Product_category, 
     Value
FROM
[C:\Qlikview\data\product_sales.csv]
(txt, codepage is 1252, embedded labels, delimiter is ',', msq);

创建列表框

创建**列表框**涉及浏览菜单**布局 → 新建工作表对象 → 列表框**。以下屏幕显示了这些步骤。

 list_box_creation

接下来,我们选择产品类别作为构建列表框的字段。

list_box_properies

列表框数据

完成以上步骤将显示以下屏幕,其中显示产品类别作为列表框的值。

list_box_data

列表框中的搜索选项

当列表框包含大量值时,向下滚动并查找它会很困难。因此,可以使用列表框顶部的搜索框键入搜索字符串。键入第一个字母后,相关值就会立即显示。

list_box_search

列表框和关联

其他工作表对象会自动与列表框关联,并且可以通过从列表框中选择值轻松观察到关联。

list_box_association

QlikView - 多选框

**多选框**表示来自多个字段的所有值的列表,作为下拉值。与列表框类似,在多选框中选择一个值会突出显示其他工作表对象中的相关值。这有助于更快的视觉分析。它对于在各种工作表对象之间遵循钻取路径也非常有用。

输入数据

让我们考虑以下输入数据,它表示不同产品线和产品类别的销售额。

Product_Line,Product_category,Value
Sporting Goods,Outdoor Recreation,5642
Food, Beverages & Tobacco,2514
Apparel & Accessories,Clothing,2365
Apparel & Accessories,Costumes & Accessories,4487
Sporting Goods,Athletics,812
Health & Beauty,Personal Care,6912
Arts & Entertainment,Hobbies & Creative Arts,5201
Arts & Entertainment,Paintings,8451
Arts & Entertainment,Musical Instruments,1245
Hardware,Tool Accessories,456
Home & Garden,Bathroom Accessories,241
Food,Drinks,1247
Home & Garden,Lawn & Garden,5462
Office Supplies,Presentation Supplies,577
Hardware,Blocks,548
Baby & Toddler,Diapering,1247
Baby & Toddler,Toys,257
Home & Garden,Pipes,1241
Office Supplies,Display Board,2177

加载脚本

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

LOAD Product_Line, 
     Product_category, 
     Value
FROM
[C:\Qlikview\data\product_sales.csv]
(txt, codepage is 1252, embedded labels, delimiter is ',', msq);

创建多选框

创建多选框涉及浏览菜单**布局 → 新建工作表对象 → 多选框**。以下屏幕显示了这些步骤。

Multi_box_create

接下来,我们选择产品销售表的字段来构建多选框。

Multi_box_fields

多选框数据

完成以上步骤将显示以下屏幕,其中显示产品类别作为多选框的值。

Multi_box_data

多选框和关联

其他工作表对象会自动与多选框关联,并且可以通过从多选框中选择值轻松观察到关联。

Multi_box_association

QlikView - 文本对象

QlikView **文本对象**用于显示有关正在显示的 QlikView 报表的一些描述性信息。它还可以显示基于某些表达式的计算结果。它主要用于使用颜色和不同字体类型在与其他工作表对象分开的框中显示格式良好的信息。

输入数据

让我们考虑以下输入数据,它表示不同产品线和产品类别的销售额。

Product_Line,Product_category,Value
Sporting Goods,Outdoor Recreation,5642
Food, Beverages & Tobacco,2514
Apparel & Accessories,Clothing,2365
Apparel & Accessories,Costumes & Accessories,4487
Sporting Goods,Athletics,812
Health & Beauty,Personal Care,6912
Arts & Entertainment,Hobbies & Creative Arts,5201
Arts & Entertainment,Paintings,8451
Arts & Entertainment,Musical Instruments,1245
Hardware,Tool Accessories,456
Home & Garden,Bathroom Accessories,241
Food,Drinks,1247
Home & Garden,Lawn & Garden,5462
Office Supplies,Presentation Supplies,577
Hardware,Blocks,548
Baby & Toddler,Diapering,1247
Baby & Toddler,Toys,257
Home & Garden,Pipes,1241
Office Supplies,Display Board,2177

加载脚本

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

LOAD Product_Line, 
     Product_category, 
     Value
FROM
[C:\Qlikview\data\product_sales.csv]
(txt, codepage is 1252, embedded labels, delimiter is ',', msq);

创建表格框

对于以上数据,让我们创建一个**表格框**,它将以表格形式显示数据。转到菜单**布局 → 新建工作表对象 → 表格框**并选择如下所示的列。

2_text_object_create_table_box

单击**应用**,然后单击**确定**以完成创建表格框。将出现以下屏幕。

3_text_object_create_table_box

创建文本对象

对于以上数据,让我们创建一个**文本对象**。转到菜单**布局 → 新建工作表对象 → 文本对象**,如下所示。

4_text_object_create

创建文本对象表达式

在上面创建的文本框上,右键单击并选择属性。然后在“通用”选项卡下的“文本”框中输入要在文本对象上显示的内容,如下所示。

5_text_object_edit

选择背景颜色

可以使用“通用”选项卡中的背景选项设置文本对象的背景颜色。

6_text_object_edit

文本对象

最终的文本对象如下所示。如果我们单击某个产品线进行筛选,则文本对象中的内容会相应更改以反映新值。

7_text_object_final_data

QlikView - 条形图

条形图是一种非常广泛使用的图表方法,用于以条形形式研究两个维度之间的关系。图表中条形的高度表示一个维度的值。条形的数量表示另一个维度的值序列或分组值。

输入数据

让我们考虑以下输入数据,它表示不同产品线和产品类别的销售额。

Product_Line,Product_category,Value
Sporting Goods,Outdoor Recreation,5642
Food, Beverages & Tobacco,2514
Apparel & Accessories,Clothing,2365
Apparel & Accessories,Costumes & Accessories,4487
Sporting Goods,Athletics,812
Health & Beauty,Personal Care,6912
Arts & Entertainment,Hobbies & Creative Arts,5201
Arts & Entertainment,Paintings,8451
Arts & Entertainment,Musical Instruments,1245
Hardware,Tool Accessories,456
Home & Garden,Bathroom Accessories,241
Food,Drinks,1247
Home & Garden,Lawn & Garden,5462
Office Supplies,Presentation Supplies,577
Hardware,Blocks,548
Baby & Toddler,Diapering,1247
Baby & Toddler,Toys,257
Home & Garden,Pipes,1241
Office Supplies,Display Board,2177

加载脚本

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

LOAD Product_Line, 
     Product_category, 
     Value
FROM
[C:\Qlikview\data\product_sales.csv]
(txt, codepage is 1252, embedded labels, delimiter is ',', msq);

创建表格框(工作表对象)

对于以上数据,让我们创建一个表格框,它将以表格形式显示数据。转到菜单布局 → 新建工作表对象 → 表格框,并选择如下所示的列。

2_text_object_create_table_box

点击应用,然后点击确定以完成表格框的创建。将显示如下所示的屏幕。

3_text_object_create_table_box

使用快速图表向导

要开始创建条形图,我们将使用快速图表向导。点击它后,将出现以下屏幕,提示选择图表类型。选择条形图,然后点击下一步。

5_bar_chart_chart_type

选择图表维度

选择产品线作为第一个维度。

6_bar_chart_chart_diemnsion

选择图表表达式

图表表达式用于对具有数值的字段应用求和、平均值或计数等函数。我们将对名为 Value 的字段应用求和函数。点击下一步。

7_bar_chart_chart_expression

选择图表格式

图表格式定义图表的样式和方向。我们在每个类别中选择第一个选项。点击下一步。

8_bar_chart_chart_format

条形图

条形图如下所示。它显示了不同产品线的字段值的条形高度。

9_bar_chart_display

QlikView - 饼图

饼图是将值表示为不同颜色的圆形切片。切片已标记,并且每个切片对应的数字也显示在图表中。QlikView 使用图表向导或图表工作表对象创建饼图。

输入数据

让我们考虑以下输入数据,它表示不同产品线和产品类别的销售额。

Product_Line,Product_category,Value
Sporting Goods,Outdoor Recreation,5642
Food, Beverages & Tobacco,2514
Apparel & Accessories,Clothing,2365
Apparel & Accessories,Costumes & Accessories,4487
Sporting Goods,Athletics,812
Health & Beauty,Personal Care,6912
Arts & Entertainment,Hobbies & Creative Arts,5201
Arts & Entertainment,Paintings,8451
Arts & Entertainment,Musical Instruments,1245
Hardware,Tool Accessories,456
Home & Garden,Bathroom Accessories,241
Food,Drinks,1247
Home & Garden,Lawn & Garden,5462
Office Supplies,Presentation Supplies,577
Hardware,Blocks,548
Baby & Toddler,Diapering,1247
Baby & Toddler,Toys,257
Home & Garden,Pipes,1241
Office Supplies,Display Board,2177

加载脚本

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

LOAD Product_Line, 
     Product_category, 
     Value
FROM
[C:\Qlikview\data\product_sales.csv]
(txt, codepage is 1252, embedded labels, delimiter is ',', msq);

使用快速图表向导

要开始创建饼图,我们将使用快速图表向导。点击它后,将出现以下屏幕,提示选择图表类型。选择饼图,然后点击下一步。

2_pie_chart_chart_type

选择图表维度

选择产品线作为第一个维度。

3_pie_chart_dimension

选择图表表达式

图表表达式用于对具有数值的字段应用求和、平均值或计数等函数。我们将对名为 Value 的字段应用求和函数。点击下一步。

4_pie_chart_expression

选择图表格式

图表格式定义图表的样式和方向。我们选择第三个选项。点击下一步。

5_pie_chart_format

饼图

条形图如下所示。它显示了不同产品线的字段值的条形高度。

6_pie_chart_display

QlikView - 仪表盘

仪表盘是一个强大的功能,可以同时显示许多字段中的值。QlikView 的内存中数据关联功能可以在所有工作表对象中显示动态值。

输入数据

让我们考虑以下输入数据,它表示不同产品线和产品类别的销售额。

Product_Line,Product_category,Value
Sporting Goods,Outdoor Recreation,5642
Food, Beverages & Tobacco,2514
Apparel & Accessories,Clothing,2365
Apparel & Accessories,Costumes & Accessories,4487
Sporting Goods,Athletics,812
Health & Beauty,Personal Care,6912
Arts & Entertainment,Hobbies & Creative Arts,5201
Arts & Entertainment,Paintings,8451
Arts & Entertainment,Musical Instruments,1245
Hardware,Tool Accessories,456
Home & Garden,Bathroom Accessories,241
Food,Drinks,1247
Home & Garden,Lawn & Garden,5462
Office Supplies,Presentation Supplies,577
Hardware,Blocks,548
Baby & Toddler,Diapering,1247
Baby & Toddler,Toys,257
Home & Garden,Pipes,1241
Office Supplies,Display Board,2177

加载脚本

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

LOAD Product_Line, 
     Product_category, 
     Value
FROM
[C:\Qlikview\data\product_sales.csv]
(txt, codepage is 1252, embedded labels, delimiter is ',', msq);

选择矩阵

我们从以上输入数据中选择字段作为要显示在仪表盘中的矩阵。为此,我们按照菜单布局 → 选择字段中的步骤操作。

3_dahboard_matrices_fileds

在下一个屏幕中,选择要在仪表盘中显示的可用字段。点击“确定”。

4_dahboard_listbox_fields

以下屏幕显示所有字段

5_dahboard_listbox_display

将图表添加到仪表盘

现在,我们通过右键单击工作表中的任意位置并选择新建工作表对象 → 图表来将图表添加到仪表盘。

6_dahboard_add_chart

选择图表类型

让我们选择条形图作为图表类型,以显示各种产品线的销售值。

7_dahboard_add_bar_chart

图表维度

让我们选择产品线作为图表维度。

8_dahboard_chart_dimension

图表表达式

用于显示产品线维度销售值的表达式在表达式编辑器中编写。

9_dahboard_chart_expression

仪表盘

以下是完成以上步骤后显示的仪表盘。

10_dahboard_data

使用仪表盘

可以选中以上仪表盘中的值以筛选特定产品,并且图表会相应更改。此外,相关值也会突出显示。

11_dahboard_data-associated

QlikView - 数据转换

数据转换是将现有数据修改为新数据格式的过程。它还可以包括过滤掉或向现有数据集添加一些特定值。QlikView 可以在读取数据到内存后并使用许多内置函数执行数据转换。

输入数据

让我们考虑以下输入数据,它表示每个月的销售额。它存储为一个名为 quarterly_sales.csv 的 csv 文件。

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

加载数据

以上数据通过使用脚本编辑器加载到 QlikView 内存中。从文件菜单打开脚本编辑器或按Ctrl+E。从“从文件获取数据”选项卡中选择“表格文件”选项,并浏览文件 quarterlt_sales.csv。点击下一步。

1_dt_file_wizard

转换向导

下一个屏幕提示我们选择一些数据转换。点击启用转换步骤按钮。

2_dt_edit_transformations

转换类型

在此步骤中,我们将选择转换以消除描述季度的行。我们选择垃圾 → 删除标记并选择不需要的两行。点击下一步。

3_dt_garbage_rows

文件向导选项

选择转换类型和要删除的行后,下一个屏幕将提示我们进行任何进一步的转换,例如选择 where 子句或添加任何前缀。我们将忽略此步骤并点击完成。

4_dt_next_garbage_rows

转换后数据的加载脚本

完成所有转换步骤后,以上数据的加载脚本如下所示。

5_dt_load_script

显示转换后的数据

可以使用表格框工作表对象显示转换后的数据。创建它的步骤如下所示。

6_dt_create_table_box

接下来,我们选择表格框的字段。

7_dt_table_box_fields

表格框现在在工作表中显示数据。

8_dt_fina_data

QlikView - Fill 函数

QlikView 中的填充函数用于将现有字段中的值填充到新字段中。

输入数据

让我们考虑以下输入数据,它表示实际和预测的销售额。

Month,Forecast,Actual
March,2145,2247
April,2458,
May,1245,
June,5124,3652
July,7421,7514
August,2584,
September,5314,4251
October,7846,6354
November,6532,7451
December,4625,1424
January,8547,7852
February,3265,

加载脚本

以上数据通过使用脚本编辑器加载到 QlikView 内存中。从文件菜单打开脚本编辑器或按Ctrl+E。从“从文件获取数据”选项卡中选择“表格文件”选项,并浏览包含以上数据的文件。

1_fill_choose_file

在以上步骤中点击下一步后,我们选择启用转换步骤按钮以执行所需的数据转换。

2_fill_file_wizard

选择数据转换

由于我们将使用填充函数,因此让我们选择填充选项卡,该选项卡在实际字段下显示空值。

3_fill_transformation

创建填充条件

点击填充按钮后,将出现选择目标列和单元格条件的选项。我们选择第三列,因为我们希望用第二列中同一行的值填充此列的空值。此外,选择单元格值为“空”,以便仅将空单元格覆盖为新值。

4_fill_cell_condition

转换后的数据

完成以上步骤后,我们将获得如下所示的转换后的数据。

5_fill_filled_cells

转换后数据的加载脚本

可以使用脚本编辑器查看转换后数据的加载脚本。该脚本显示了替换空单元格值的表达式。

6_fill_laod_script

显示转换后的数据

可以通过使用菜单布局 → 新建工作表对象中的选项创建表格框来查看转换后的数据。

7_fill_table_box

QlikView - 列操作

列操作是一种数据转换类型,其中新列将填充来自现有列的值,该列满足某些条件。条件可以是作为数据转换步骤的一部分创建的表达式。

输入数据

让我们考虑以下输入数据,它表示实际和预测的销售额。

Month,Forecast,Actual
March,2145,2247
April,2458,2125
May,1245,2320
June,5124,3652
July,7421,7514
August,2584,3110
September,5314,4251
October,7846,6354
November,6532,7451
December,4625,1424
January,8547,7852
February,3265,2916

加载脚本

以上数据通过使用脚本编辑器加载到 QlikView 内存中。从文件菜单打开脚本编辑器或按Ctrl+E。从“从文件获取数据”选项卡中选择“表格文件”选项,并浏览包含以上数据的文件。点击下一步后,我们选择启用转换步骤按钮以执行所需的数据转换。

1_cm_file_wizard

选择数据转换

选择列选项卡,然后选择新建按钮。它要求指定新列和行条件。我们将第三列指定为源列,并将以 2 开头的值作为行条件。

2_cm_add_column

转换后的数据

完成以上步骤后,我们将获得如下所示的转换后的数据。

3_cm_added_column

转换后数据的加载脚本

可以使用脚本编辑器查看转换后数据的加载脚本。该脚本显示了创建具有所需值的新的列的表达式。

4_cm_file_wizard_script

显示转换后的数据

可以通过使用菜单布局 → 新建工作表对象中的选项创建表格框来查看转换后的数据。

5_cm_completed

QlikView - 表格旋转

QlikView 中的旋转表类似于 Microsoft Excel 中的列和行转置功能,但具有一些其他选项。我们可以多方向转置列,并且它们会产生不同的结果。在本章中,我们将了解将行转换为列的常规转置选项。

输入数据

让我们考虑以下输入数据,它表示实际和预测的销售额。

Month,Forecast,Actual
March,2145,2247
April,2458,
May,1245,
June,5124,3652
July,7421,7514
August,2584,
September,5314,4251
October,7846,6354
November,6532,7451
December,4625,1424
January,8547,7852
February,3265,

加载脚本

以上数据通过使用脚本编辑器加载到 QlikView 内存中。从文件菜单打开脚本编辑器或按Ctrl+E。从“从文件获取数据”选项卡中选择“表格文件”选项,并浏览包含以上数据的文件。

1_file_wizard

点击下一步后,我们选择启用转换步骤按钮以执行所需的数据转换。

选择数据转换

由于我们将使用旋转函数,因此让我们选择旋转选项卡,该选项卡显示所有字段的值。

2_rotate_option

应用旋转

我们点击转置按钮以转置以上数据。转置后的数据如下所示。

3_rotate_rotated

转换后数据的加载脚本

可以使用脚本编辑器查看转换后数据的加载脚本。该脚本显示了替换空单元格值的表达式。

4_rotate_load_script

显示转换后的数据

可以通过使用菜单布局 → 新建工作表对象中的选项创建表格框来查看转换后的数据。

5_rotate_loaded_data

QlikView - 维度和度量

维度和度量是基本实体,始终用于数据分析。例如,考虑分析的结果“每个季度的销售量百分比变化是多少?”在这种情况下,每个季度都代表维度,即季度的名称。销售量的百分比变化代表度量,它是相对于维度中每个值的计算。以下是这两个术语的一些广泛接受的定义。

  • 维度 - 数据集中描述性字段,表示一些不同的值。例如 - 月份、年份、产品 ID 等。
  • 度量 - 数值字段,对维度每个不同的值执行一些计算。

输入数据

让我们考虑以下输入数据,它表示不同产品线和产品类别在不同地区的销售量和收入。将数据保存到 .csv 文件中。

ProductID,ProductCategory,Region,SalesVolume, Revenue
1,Outdoor Recreation,Europe,457,25841
2,Clothing,Europe,125,54281
3,Costumes & Accessories,South Asia,781,54872
4,Athletics,South Asia,839,87361
5,Personal Care,Australia,473,15425
6,Arts & Entertainment,North AMerica,625,84151
7,Hardware,South America,772,45812

加载脚本

以上数据通过使用脚本编辑器加载到 QlikView 内存中。从文件菜单打开脚本编辑器或按Ctrl+E。从从文件获取数据选项卡中选择表格文件选项,并浏览包含以上数据的文件。点击确定并按Ctrl+R将数据加载到 QlikView 的内存中。

表格结构

我们可以通过以下菜单文件 → 表格查看器或按Ctrl+T查看表格的结构。以下屏幕出现,我们已将维度标记在绿色框内,将度量标记在红色框内。

1_view_table

使用维度和度量

让我们创建一个直线表图表,显示使用以上维度和度量的计算结果。点击快速图表向导,如下所示。

接下来,点击直线表选项。点击下一步。

2_dm_straight_table

选择维度

在此屏幕中,我们选择区域作为维度,因为我们希望选择每个区域的总收入。

3_dm_table_diemsnion

选择度量

下一个屏幕提示将计算应用于度量字段。我们选择对字段“收入”应用**求和**。

4_dm_table_measure

最终图表

完成上述步骤后,我们将获得最终图表,该图表显示每个区域(维度)的总收入(度量)。

5_dm_final_chart

QlikView - 星型模式

星型模式是一种数据模型,其中多个维度链接到单个事实表。当然,在更大的模型中,可以有多个事实表链接到多个维度和其他事实表。这种模型的用处在于执行快速查询,并在各种表之间进行最少的连接。事实表包含数据,这些数据是度量,并具有数值。计算应用于事实表中的字段。维度表的唯一键用于将其链接到事实表,事实表通常也具有相同的字段名称的键。因此,事实表包含来自整个维度表的键,并形成一个用于各种查询的连接主键。

输入数据

下面列出了包含来自各种供应商和区域的不同产品的数据的表。此外,供应发生在不同的时间间隔内,这些时间间隔在时间维度表中捕获。

产品维度

它包含产品类别和产品名称。产品ID字段是唯一键。

ProductID,ProductCategory,ProductName
1,Outdoor Recreation,Winter Sports & Activities
2,Clothing,Uniforms
3,Lawn & Garden	Power, Equipment
4,Athletics,Rugby
5,Personal Care,Shaver
6,Arts & Entertainment,Crafting Materials
7,Hardware,Power Tool Batteries

区域维度

它包含供应商所在的区域名称。RegionID字段是唯一键。

RegionID,Continent,Country
3,North America, USA
7,South America, Brazil
12,Asia,China
2,Asia,Japan
5,Europe,Belgium

供应商维度

它包含供应上述产品的供应商名称。SupplierID字段是唯一键。

SupplierID,SupplierName
3S12,Supre Suppliers
4A15,ABC Suppliers
4S66,Max Sports
5F244,Nice Foods
8A45,Artistic angle

时间维度

它包含供应上述产品的时间段。TimeID字段是唯一键。

TimeID,Year,Month
1,2012,Feb
2,2012,May
3,2012,Sep
4,2013,Aug
5,2014,Jan
6,2014,Nov

供应商数量事实

它包含供应数量和其中缺陷百分比的值。它通过名称相同的键连接到上述每个维度。

ProductID,RegionID,TimeID,SupplierID,Quantity, DefectPercentage
1,3,3,5F244,8452,12
2,3,1,4S66,5124,8.25
3,7,1,8A45,5841,7.66
4,12,2,4A15,5123,1.25
5,5,3,4S66,7452,8.11
6,2,5,4A15,5142,3.66
7,2,1,4S66,452,2.06

加载脚本

以上数据通过使用脚本编辑器加载到QlikView内存中。从文件菜单打开脚本编辑器或按**Ctrl+E**。从**数据来自文件**选项卡中选择**表文件**选项,并浏览包含上述数据的文件。单击**确定**并按**Ctrl+R**将数据加载到QlikView的内存中。以下是读取每个上述文件后出现的脚本。

LOAD ProductID, 
     ProductCategory, 
     ProductName
FROM
[C:\Qlikview\images\StarSchema\Product_dimension.csv]
(txt, codepage is 1252, embedded labels, delimiter is ',', msq);

LOAD TimeID, 
     Year, 
     Month
FROM
[C:\Qlikview\images\StarSchema\Time.csv]
(txt, codepage is 1252, embedded labels, delimiter is ',', msq);

LOAD SupplierID, 
     SupplierName
FROM
[C:\Qlikview\images\StarSchema\Suppliers.csv]
(txt, codepage is 1252, embedded labels, delimiter is ',', msq);

LOAD RegionID, 
     Continent, 
     Country
FROM
[C:\Qlikview\images\StarSchema\Regions.csv]
(txt, codepage is 1252, embedded labels, delimiter is ',', msq);

LOAD ProductID, 
     RegionID, 
     TimeID, 
     SupplierID, 
     Quantity, 
     DefectPercentage
FROM
[C:\Qlikview\images\StarSchema\Supplier_quantity.csv]
(txt, codepage is 1252, embedded labels, delimiter is ',', msq);

星型数据模型

将上述数据读入QlikView内存后,我们可以查看数据模型,该模型以星型模式的形式显示所有表、字段和关系。

starschema_model

QlikView - 合成键

**合成键**是QlikView用于在两个表之间存在关于使用哪个键的歧义时创建人工键的解决方案。当两个表具有两个或多个公共字段时,就会出现这种情况。QlikView在内存中创建关联的功能会自动检测到这种情况,并创建一个额外的表,该表将保存创建的新键的值。

输入数据

让我们考虑以下两个CSV数据文件,它们用作进一步说明的输入。

Sales:
ProductID,ProductCategory,Country,SaleAmount
1,Outdoor Recreation,Italy,4579
2,Clothing,USA,4125
3,Costumes & Accessories,South Korea,6521

Product:
ProductID, Country
3,Brazil
3,China
2,Korea
1,USA

加载脚本

我们使用脚本编辑器加载上述输入数据,该编辑器通过按**Ctrl+E**调用。选择**表文件**选项,并浏览输入文件。

synthetic_key_load_script

数据模型

接下来,我们使用表查看器的菜单命令(Ctrl+T)查看数据模型。出现以下屏幕,显示创建了第三个表,该表提供合成键的值,因为这两个表都具有ProductID和Country作为匹配键。

synthetic_key_data_model

合成键的影响

合成键表示正在使用的数据模型中的缺陷。它们不会导致数据正确性或报表性能出现任何问题。如果大型数据模型具有一两个合成键实例,则一切都会正常工作。但是,如果我们有太多这样的键,那么这暗示需要重新设计数据模型。

QlikView - 生成数据

很多时候,我们需要一些数据由正在使用的软件以编程方式生成,这些数据不是来自源。例如,100个随机数或只是一年中第23周的日期。数据分析师可能需要创建此类数据,以便对不包含这些值的数据执行一些分析,因为数据在到达时不包含这些值。QlikView提供了一个名为**Autogenerate**的功能,可用于此类需求。

数据需求

考虑一种场景,我们需要查找的只是星期四或星期日的日期。我们需要查找从今天开始到今年年底的范围内的日期。我们创建以下脚本,它将实现此目的。

generate_data_load_script

解释

我们声明两个变量来捕获当前月的第一天和今年的最后一天。接下来,我们应用各种函数和筛选条件来生成所需的值。recno()函数为每个日期创建一个记录。我们添加Autogenerate函数,将变量作为范围。

生成的数据

将上述脚本加载到QlikView的内存中并使用菜单**布局→新建工作表对象→表框**创建表框后,我们将获得如下所示的创建数据。

generate_data_calendar

QlikView - 交叉表

在分析数据时,我们会遇到希望列变成行,反之亦然的情况。这不仅仅是关于转置,它还涉及将许多列汇总在一起或在行中多次重复许多值,以在表中实现所需的列和行布局。

输入数据

考虑以下输入数据,它显示了每个季度特定产品的区域销售情况。我们使用以下给定数据创建一个分隔文件(CSV)。

Quarter,Region1,Region2,Region 3
Q1,124,421,471
Q2,415,214,584
Q3,417,321,582
Q4,751,256,95

加载输入数据

我们使用脚本编辑器加载上述输入数据,该编辑器通过按**Ctrl+E**调用。选择**表文件**选项,并浏览输入文件。选择以下选项后,单击下一步。

1_cross_tab_file_wizard

交叉表选项

在下一个窗口(文件向导→选项)中,单击**交叉表**按钮。它以不同的颜色突出显示列。粉红色表示**限定符字段**,它将在**属性字段**的每个值的许多行中重复。属性字段下的单元格值作为数据。单击确定。

2_cross_tab_choose_fields

交叉表转换

转换后的数据出现在其中所有区域字段都合并到一列中,但每个季度的值都会重复。

3_cross_tab_result1

加载脚本

交叉表转换的加载脚本显示以下给出的命令。

4_cross_tab_load_script

交叉表数据

使用菜单**布局→新建工作表对象→表框**创建表框工作表对象后,我们将获得以下输出。

5_cross_tab_table_box

QlikView - 直通表

直观表是QlikView中使用最广泛的工作表对象,用于显示数据。它们非常简单但功能强大,具有列重新排列、排序和着色背景等功能。

输入数据

让我们考虑以下输入数据,它表示不同产品线和产品类别的销售额。

Product_Line,Product_category,Value
Sporting Goods,Outdoor Recreation,5642
Food, Beverages & Tobacco,2514
Apparel & Accessories,Clothing,2365
Apparel & Accessories,Costumes & Accessories,4487
Sporting Goods,Athletics,812
Health & Beauty,Personal Care,6912
Arts & Entertainment,Hobbies & Creative Arts,5201
Arts & Entertainment,Paintings,8451
Arts & Entertainment,Musical Instruments,1245
Hardware,Tool Accessories,456
Home & Garden,Bathroom Accessories,241
Food,Drinks,1247
Home & Garden,Lawn & Garden,5462
Office Supplies,Presentation Supplies,577
Hardware,Blocks,548
Baby & Toddler,Diapering,1247
Baby & Toddler,Toys,257
Home & Garden,Pipes,1241
Office Supplies,Display Board,2177

加载脚本

以上数据通过使用脚本编辑器加载到QlikView内存中。从文件菜单打开脚本编辑器或按**Ctrl+E**。从“数据来自文件”选项卡中选择“表文件”选项,并浏览包含上述数据的文件。出现以下屏幕。

1_File_wizard

单击“确定”并按“Ctrl+R”将数据加载到QlikView的内存中。

创建表格框

接下来,我们创建一个新的表框类型工作表对象。我们按照以下菜单所示进行操作。

3_straight_table_menu

选择列

QlikView提示选择将在最终表框中显示的列。我们选择所有列,并使用**提升或降级**选项设置列的顺序。

4_straight_table_choose_fields

选择显示样式

接下来,我们选择样式选项卡,为显示数据提供特定的背景颜色。当前样式选项列出了许多预建样式。我们选择**睡衣红**,并在每两行使用**条纹**。

6_straight_table_pyjama

列重新排序

我们可以通过按住鼠标按钮位于列标题处,然后将其拖动到所需位置来重新排序列的位置。

7_straight_table_pyjama_reorder

QlikView - 数据透视表

透视表广泛用于数据分析,以显示数据中许多可用维度上的值的总和。QlikView的图表选项具有通过选择适当的图表类型创建透视表的功能。

输入数据

让我们考虑以下输入数据,它表示不同产品线和产品类别的销售额。

Product_Line,Product_category,Value
Sporting Goods,Outdoor Recreation,5642
Food, Beverages & Tobacco,2514
Apparel & Accessories,Clothing,2365
Apparel & Accessories,Costumes & Accessories,4487
Sporting Goods,Athletics,812
Health & Beauty,Personal Care,6912
Arts & Entertainment,Hobbies & Creative Arts,5201
Arts & Entertainment,Paintings,8451
Arts & Entertainment,Musical Instruments,1245
Hardware,Tool Accessories,456
Home & Garden,Bathroom Accessories,241
Food,Drinks,1247
Home & Garden,Lawn & Garden,5462
Office Supplies,Presentation Supplies,577
Hardware,Blocks,548
Baby & Toddler,Diapering,1247
Baby & Toddler,Toys,257
Home & Garden,Pipes,1241
Office Supplies,Display Board,2177

加载脚本

以上数据通过使用脚本编辑器加载到QlikView的内存中。从文件菜单打开脚本编辑器或按**Ctrl+E**。从“数据来自文件”选项卡中选择“表文件”选项,并浏览包含上述数据的文件。出现以下屏幕。

1_File_wizard

单击“确定”并按“Ctrl+R”将数据加载到QlikView的内存中。

选择图表类型

接下来,我们使用图表向导选择**透视表**选项。单击下一步。

2_pivot_select_chart

选择图表维度

在下一个屏幕中,我们选择Product_Line作为图表的第一个维度。

3_pivot_choose_dimension

选择图表表达式

下一个屏幕提示我们选择图表表达式,我们选择值的总和。

4_pivot_choose_sum

选择图表格式

单击下一步后,我们将获得一个屏幕来选择图表格式,在其中我们选择**睡衣绿**作为样式和默认模式。

5_pivot_chart_style

透视图表数据

完成上述步骤后,我们将获得如下所示的最终图表。

6_pivot_pivot_final

QlikView - 集合分析

QlikView的集合分析功能用于将不同工作表对象中的数据细分为多个集合,并在其中一些集合中保持值不变。简单来说,它创建了一个选项,即在默认行为是所有工作表对象彼此关联的情况下,不将某些工作表对象与其他工作表对象关联。这有助于筛选一个工作表对象中的数据并在其他工作表对象中查看相应的结果,而被选作不同集合的工作表对象则根据其自身的筛选器显示值。

输入数据

让我们考虑以下输入数据,它表示不同产品线和产品类别的销售额。

Product_Line,Product_category,Month,Value
Arts & Entertainment,Hobbies & Creative Arts,Jan,5201
Arts & Entertainment,Paintings,Feb,8451
Arts & Entertainment,Musical Instruments,Jan,1245
Baby & Toddler,Diapering,Mar,1247
Baby & Toddler,Toys,Dec,257
Apparel & Accessories,Clothing,Feb,574
Apparel & Accessories,Costumes & Accessories,Apr,1204
Arts & Entertainment,Musical Instruments,Apr,3625
Baby & Toddler,Diapering,Apr,1281
Apparel & Accessories,Clothing,Jul,2594
Arts & Entertainment,Paintings,Sep,6531
Baby & Toddler,Toys,May,7421
Apparel & Accessories,Clothing,Aug,2541
Arts & Entertainment,Paintings,Oct,2658
Arts & Entertainment,Musical Instruments,Mar,1185
Baby & Toddler,Diapering,Jun,1209

加载脚本

以上数据通过使用脚本编辑器加载到QlikView内存中。从文件菜单打开脚本编辑器或按**Ctrl+E**。从“数据来自文件”选项卡中选择“表文件”选项,并浏览包含上述数据的文件。出现如下所示的屏幕。

1_set_ana_load_script

创建表格框

选择所有可用于创建表格框的字段,使用菜单选项布局 → 新工作表对象 → 表格框,并使用菜单选项布局 → 新工作表对象 → 列表框创建一个包含月份字段的列表框。此外,创建一个直线表图表,显示每个产品类别下的总销售额。

4_set_ana_sales_table

数据关联

现在,我们可以通过在一个工作表对象中选择一些值来观察这三个工作表对象之间的关联。让我们从“月份”列表框中选择月份“Apr”和“Jan”。我们可以看到表格框和图表中值的改变,显示了相关的值。

5_set_ana_association

克隆对象

接下来,我们克隆销售总额图表以生成一组与其他工作表对象无关的新数据。右键单击图表销售总额,然后单击选项克隆,如下所示。QlikView文档中将出现同一图表的另一个副本。

6_set_ana_clone

设置表达式

接下来,我们选择图表的第二个副本销售总额,并右键单击它以获取图表属性。我们在定义选项卡下创建了一个名为“销售值”的表达式,并编写了公式,如下所示。

7_set_ana_setexpression

应用集合分析

完成上述步骤后,我们发现当我们选择月份“六月”时,会在表格框和“销售总额”图表中获取相关值。但是,“四月”的销售额不会改变,因为它基于集合表达式中的数据。

8_set_ana_final

QlikView - 连接

QlikView中的联接用于将来自两个数据集的数据组合成一个。QlikView中的联接与SQL中的联接含义相同。输出中仅显示与联接条件匹配的列值和行值。如果您完全不了解联接,您可能希望首先了解它们此处

输入数据

让我们考虑以下两个CSV数据文件,它们用作进一步说明的输入。

Product List:
ProductID,ProductCategory
1,Outdoor Recreation
2,Clothing
3,Costumes & Accessories
4,Athletics
5,Personal Care
6,Hobbies & Creative Arts

ProductSales:
ProductID,ProductCategory,SaleAmount
4,Athletics,1212
5,Personal Care,5211
6,Hobbies & Creative Arts,1021
7,Display Board,2177
8,Game,1145
9,soap,1012
10,Beverages & Tobacco,2514

内联接

我们使用脚本编辑器加载上述输入数据,该编辑器通过按Ctrl+E调用。选择选项表格文件,并浏览输入文件。然后,我们编辑脚本中的命令以在表之间创建内联接。

load_script

内联接仅获取同时存在于两个表中的行。在本例中,获取产品列表和产品销售表中可用的行。我们使用菜单布局 → 新工作表对象 → 表格框创建一个表格框,在其中选择所有三个字段 - ProductID、ProductCategory和SaleAmount进行显示。

inner_join

左联接

左联接涉及获取左侧表中的所有行以及右侧表中的匹配行。

加载脚本

Sales:
LOAD ProductID, 
     ProductCategory, 
     SaleAmount
FROM
[C:\Qlikview\data\product_lists.csv]
(txt, codepage is 1252, embedded labels, delimiter is ',', msq);

LEFT JOIN(Sales)

LOAD ProductID, 
     ProductCategory
FROM
[C:\Qlikview\data\Productsales.csv]
(txt, codepage is 1252, embedded labels, delimiter is ',', msq);

我们使用菜单布局 → 新工作表对象 → 表格框创建一个表格框,在其中选择所有三个字段 - ProductID、ProductCategory和SaleAmount进行显示。

left_join

右联接

右联接涉及获取右侧表中的所有行以及左侧表中的匹配行。

加载脚本

Sales:
LOAD ProductID, 
     ProductCategory, 
     SaleAmount
FROM
[C:\Qlikview\data\product_lists.csv]
(txt, codepage is 1252, embedded labels, delimiter is ',', msq);

RIGHT JOIN(Sales)

LOAD ProductID, 
     ProductCategory
FROM
[C:\Qlikview\data\Productsales.csv]
(txt, codepage is 1252, embedded labels, delimiter is ',', msq);

我们使用菜单布局 → 新工作表对象 → 表格框创建一个表格框,在其中选择所有三个字段 - ProductID、ProductCategory和SaleAmount进行显示。

right_join

外联接

外联接涉及获取右侧表中的所有行以及左侧表中的所有行。

加载脚本

Sales:
LOAD ProductID, 
     ProductCategory, 
     SaleAmount
FROM
[C:\Qlikview\data\product_lists.csv]
(txt, codepage is 1252, embedded labels, delimiter is ',', msq);

OUTER JOIN(Sales)

LOAD ProductID, 
     ProductCategory
FROM
[C:\Qlikview\data\Productsales.csv]
(txt, codepage is 1252, embedded labels, delimiter is ',', msq);

我们使用菜单布局 → 新工作表对象 → 表格框创建一个表格框,在其中选择所有三个字段 - ProductID、ProductCategory和SaleAmount进行显示。

outer_join

QlikView - 保留

QlikView中的keep命令用于组合来自两个数据集的数据,同时保留两个数据集在内存中。它与我们在上一章中介绍的联接非常相似,但有两个主要区别。第一个区别是 - 在keep的情况下;两个数据集都存在于QlikView的内存中,而在联接中,load语句仅生成一个数据集,您必须从中选择列。第二个区别是 - 没有外部keep的概念,而在联接的情况下,我们有外部联接可用。

输入数据

让我们考虑以下两个CSV数据文件,它们用作进一步说明的输入。

Product List:
ProductID,ProductCategory
1,Outdoor Recreation
2,Clothing
3,Costumes & Accessories
4,Athletics
5,Personal Care
6,Hobbies & Creative Arts

Product Sales:
ProductID,ProductCategory,SaleAmount
4,Athletics,1212
5,Personal Care,5211
6,Hobbies & Creative Arts,1021
7,Display Board,2177
8,Game,1145
9,soap,1012
10,Beverages & Tobacco,2514

内部Keep

我们使用脚本编辑器加载上述输入数据,该编辑器通过按Ctrl+E调用。选择选项表格文件,并浏览输入文件。然后,我们编辑脚本中的命令以在表之间创建内部keep。

keep_script

内部keep仅获取同时存在于两个表中的行。在本例中,获取产品列表和产品销售表中可用的行。我们使用菜单布局 → 新工作表对象 → 表格框创建表格框。

首先,我们仅选择productSales表,它为我们提供了要显示的字段 - ProductID、ProductCategory和SaleAmount。

keep_product_sales

接下来,我们选择ProductList数据集,它为我们提供了字段ProductID和ProductCategory。

keep_product_list

最后,我们选择所有表格选项,并获取所有表格中所有可用的字段。

keep_both_tables

以下报告显示了上述步骤中的所有表格框。

keep_chart_innerkeep

左Keep

左Keep类似于左联接,它保留左侧表中的所有行,同时两个数据集都存在于QlikView的内存中。

左Keep脚本

以下脚本用于使用左Keep命令创建结果数据集。

productsales:
LOAD ProductID, 
     ProductCategory, 
     SaleAmount
FROM
[C:\Qlikview\data\product_lists.csv]
(txt, codepage is 1252, embedded labels, delimiter is ',', msq);

left keep(productsales)
productlists:
LOAD ProductID, 
     ProductCategory
FROM
[C:\Qlikview\data\Productsales.csv]
(txt, codepage is 1252, embedded labels, delimiter is ',', msq);

左Keep数据

当我们如上更改脚本并使用Ctrl+R刷新报表中的数据时,我们在工作表对象中获得以下数据。

keep_chart_leftkeep

右Keep

右Keep类似于左联接,它保留右侧表中的所有行,同时两个数据集都存在于QlikView的内存中。

右Keep脚本

以下脚本用于使用左Keep命令创建结果数据集。

productsales:
LOAD ProductID, 
     ProductCategory, 
     SaleAmount
FROM
[C:\Qlikview\data\product_lists.csv]
(txt, codepage is 1252, embedded labels, delimiter is ',', msq);

right keep(productsales)
productlists:
LOAD ProductID, 
     ProductCategory
FROM
[C:\Qlikview\data\Productsales.csv]
(txt, codepage is 1252, embedded labels, delimiter is ',', msq);

右Keep数据

当我们如上更改脚本并使用Ctrl+R刷新报表中的数据时,我们在工作表对象中获得以下数据。

keep_chart_rightkeep

QlikView - 连接

QlikView中的连接功能用于将一个表中的行追加到另一个表。即使表具有不同数量的列,也会发生这种情况。它与联接和Keep命令都不同,因为它不会将两个表中的匹配行合并成一行。

输入数据

让我们考虑以下两个CSV数据文件,它们用作进一步说明的输入。请注意,第二个数据集有一个名为“国家/地区”的附加列。

SalesRegionOld.csv
ProductID,ProductCategory,Region,SaleAmount
1,Outdoor Recreation,Europe,4579
2,Clothing,Europe,4125
3,Costumes & Accessories,South Asia,6521
4,Athletics,South Asia,4125
5,Personal Care,Australia,5124
6,Arts & Entertainment,North AMerica,1245
7,Hardware,South America,456

SalesRegionNew.csv
ProductID,ProductCategory,Region,Country,SaleAmount
6,Arts & Entertainment,North AMerica,USA,1245
7,Hardware,South America,Brazil,456
8,Home & Garden,South America,Brazil,241
9,Food,South Asia,Singapore,1247
10,Home & Garden,South Asia,China,5462
11,Office Supplies,Australia,Australia,577

加载脚本

我们使用脚本编辑器加载上述输入数据,该编辑器通过按Ctrl+E调用。选择选项表格文件,并浏览输入文件。然后,我们编辑脚本中的命令以在表之间应用连接。

concatenate_load_script

接下来,我们将上述数据加载到QlikView的内存中,并使用菜单布局 → 新工作表对象 → 表格框创建一个表格框,在其中选择所有可用的字段进行显示,如下所示。

concatenate_select_table

连接数据

完成上述步骤后,我们得到如下所示的表格框。请注意产品ID 6和7的重复行。连接不会消除重复项。

concatenated_table_chart

QlikView - 主日历

在QlikView中,很多时候我们需要创建一个日历参考对象,该对象可以链接到QlikView内存中存在的任何数据集。例如,您有一个表捕获销售金额和销售日期,但没有存储与该日期相对应的星期几或季度。在这种情况下,我们创建一个主日历,它将根据任何数据集的要求提供其他日期字段,如季度、日期等。

输入数据

让我们考虑以下CSV数据文件,它们用作进一步说明的输入。

SalesDate,SalesVolume
3/28/2012,3152
3/30/2012,2458
3/31/2012,4105
4/8/2012,6245
4/10/2012,5816
4/11/2012,3522

加载脚本

我们使用脚本编辑器加载上述输入数据,该编辑器通过按**Ctrl+E**调用。选择**表文件**选项,并浏览输入文件。

1_mc_load_script

接下来,我们将上述数据加载到QlikView的内存中,并使用菜单布局 → 新工作表对象 → 表格框创建一个表格框,在其中选择所有可用的字段进行显示,如下所示。

2_mc_initial_data

创建主日历

接下来,我们通过在脚本编辑器中编写以下脚本创建主日历。在这里,我们使用DailySales表作为驻留表,从中捕获最大和最小日期。我们使用第二个load语句加载此范围内的每个日期,该语句位于驻留load语句之上。最后,我们有一个第三个load语句,它从SalesDate值中提取年份、季度、月份等。

3_mc_calendar_script

选择字段

在创建完整的load脚本以及主日历后,我们创建一个表格框以使用菜单布局 → 新工作表对象 → 表格框查看数据

4_mc_select_fields

最终数据

最终输出显示了表格,显示了使用销售数据和主日历创建的季度和月份值。

5_mc_final_data

QlikView - 映射表

映射表是一个表,它用于映射两个表之间的列值。它也称为查找表,仅用于从其他表中查找相关值。

输入数据

让我们考虑以下输入数据文件,它表示不同区域的销售值。

ProductID,ProductCategory,Region,SaleAmount
1,Outdoor Recreation,Europe,4579
2,Clothing,Europe,4125
3,Costumes & Accessories,South Asia,6521
4,Athletics,South Asia,4125
5,Personal Care,Australia,5124
6,Arts & Entertainment,North AMerica,1245
7,Hardware,South America,456
8,Home & Garden,South America,241
9,Food,South Asia,1247
10,Home & Garden,South Asia,5462
11,Office Supplies,Australia,577

以下数据表示国家/地区及其区域。

Region,Country
Europe,Germany
Europe,Italy
South Asia,Singapore
South Asia,Korea
North AMerica,USA
South America,Brazil
South America,Peru
South Asia,China
South Asia,Sri Lanka

加载脚本

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

1_mt_load_script

创建表格框

让我们为上述每个表创建两个表格框,如下所示。在这里,我们无法在“销售区域”报表中获取国家/地区的名称。

2_mt_table_boxes

创建映射表

以下脚本生成映射表,该表将销售表中的区域值与MapCountryRegion表中的国家/地区值进行映射。

3_mt_mapping_script

表格图表

完成上述步骤并创建表格框以查看数据后,我们将在“销售”表中的其他列以及国家/地区列。

4_mt_final_data

QlikView - 循环引用

循环引用发生在我们能够使用两个或多个不同的路径从一个表遍历到另一个表时。这意味着您可以使用列直接将Table1与Table2连接,或者您也可以首先将Table1与Table3连接,然后将Table3与Table2连接。这可能导致加载所有这三个表的数据模型形成的输出结果不正确。QlikView一旦识别出循环引用,就会阻止将此类数据加载到其内存中。

输入数据

让我们考虑以下三个CSV数据文件,它们用作进一步说明的输入。

SalesCountries:
ProductID,ProductCategory,Country,SaleAmount
1,Outdoor Recreation,Italy,4579
2,Clothing,USA,4125
3,Costumes & Accessories,South Korea,6521
4,Athletics,Japan,4125
5,Personal Care,Brazil,5124
6,Arts & Entertainment,China,1245
7,Hardware,South America,456
8,Home & Garden,Peru,241
9,Food,India,1247
10,Home & Garden,Singapore,5462
11,Office Supplies,Hungary,577

ProductCountry:
ProductID, Country
3,Brazil
3,China
2,Korea
1,USA
2,Singapore
7,Sri Lanka
1,Italy

加载脚本

我们使用脚本编辑器加载上述输入数据,该编辑器通过按**Ctrl+E**调用。选择**表文件**选项,并浏览输入文件。

1_cr_load_script

数据加载

创建上述脚本后,我们使用命令Ctrl+R将数据加载到QlikView的内存中。这时,我们会收到错误提示,提示加载的表中存在循环。

2_warning

数据模型

为了找到上述警告的确切原因,我们可以使用表格查看器的菜单命令 - Ctrl+T查看数据模型。出现以下屏幕,它清楚地显示了循环引用。此处,RegionCountry和SalesRegion之间的连接可以使用字段区域直接实现。它也可以通过首先转到ProductCountry表,使用字段国家/地区,然后将ProdcutID与Salesregion映射来实现。

3_cr_data_model

解决循环引用

可以通过重命名数据集中的一些列来解决上述循环引用,以便QlikView不会使用列名自动在表之间形成关联。为此,我们将RegionCountry中的国家/地区列重命名为SalesCountry。在ProdcuCountry数据集中,我们将国家/地区列重命名为ProductCountry。

4_cr_load_script_rectified

修正后的数据模型

重命名上述列后的修正数据模型可以使用命令Ctrl+T查看。现在我们可以看到表之间的关系不再形成循环。

5_cr_data_model_rectified

Ctrl+R重新加载数据不再会显示警告,我们可以使用此数据创建报表。

广告