Qlikview 简明教程

QlikView - Quick Guide

QlikView - Overview

QlikView 是领先的业务发现平台。与传统 BI 平台相比,它在很多方面是独特的。作为一种数据分析工具,它始终保持数据之间的关系,并且这种关系可以使用颜色以可视方式呈现。它还显示不相关的数据。它通过在列表框中使用各个搜索功能来提供直接和间接搜索。

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

Features of QlikView

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

  1. Data Association is maintained automatically - QlikView 自动识别数据集中的每一段数据之间的关系。用户无需预先配置不同数据实体之间的关系。

  2. Data is held in memory for multiple users, for a super-fast user experience - 报告的结构、数据和计算全部保存在服务器的内存 (RAM) 中。

  3. Aggregations are calculated on the fly as needed - 由于数据保存在内存中,因此计算是即时执行的。无需存储预先计算的汇总值。

  4. Data is compressed to 10% of its original size - QlikView 大量使用数据字典。任何分析所要求的仅有少量必要数据。因此,它将原始数据压缩到很小的尺寸。

  5. Visual relationship using colors - 数据之间的关系不是通过箭头或线条表示,而是通过颜色表示。选择一段数据会向相关数据赋予特定的颜色,向不相关数据赋予另一种颜色。

  6. Direct and Indirect searches - 用户可以输入一些相关数据而不是直接给出他们正在寻找的直接值,并根据数据关联获得确切的结果。当然,他们也可以直接搜索某个值。

QlikView - Installation

Download QlikView

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

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

Start the installation wizard

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

install 1

Accept the License Agreement

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

install 2

Provide your Details

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

install 3

Choose the Destination Folder

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

install 4

Choose the Setup Type

将设置类型选为“完成”。然后,单击“下一步”。

install 5

Begin Installation

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

install 6

Installation Complete

安装完成画面会在安装成功后出现。点击“Finish”(完成)。

install 7

Verify the Installation

您可以通过导航至 Windows 开始菜单并点击 QlikView 图标验证该安装。此画面会按如下所示显示。

qlikview post install

你现在已经可以开始学习 QlikView。

QlikView - Architecture

作为领先的业务发现平台,QlikView 构建的商业数据发现方式与其他传统平台有很大不同。QlikView 不会首先构建查询,然后基于查询获取结果。相反,它将在加载不同的数据对象后立即形成它们之间的关联,并提示用户以任意方式探索数据。不存在预定义的数据下钻路径。只要数据可用和关联,数据下钻路径就可以朝任何方向进行。

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

Architectural Overview

QlikView 的架构包括用于可视化处理数据的“前端”和用于为 QlikView 用户文档提供安全性和发布机制的“后端”。以下图表描述了 QlikView 的内部工作原理。下图内容讨论了该架构的详细信息。

qlikview architecture

Front End

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

业务用户使用这个前端探索和交互数据并得出有关数据的结论。他们还可以通过实时或离线分享见解、一起探索数据与给定报表集上的其他用户合作。这些用户文档采用 .qvw 格式,也可以作为独立文档存储在 Windows 操作系统中。

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

Back End

QlikView 后端包括“ QlikView desktop ”和“ QlikView publisher ”。

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

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

QlikView - Navigation

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

Getting Started Screen

此屏幕是导航了解 QlikView 的简单介绍。在启动 QlikView 并保持 Show start page when launching QlikView 选项处于勾选状态时,此屏幕便会出现。如果你向下滚动左侧的示例部分,则可以点击 Movies Database 等任何一个示例或 Data Visualization 等以调用它,并查看 QlikView 是如何工作的。请随意点击!在向右移动时,你会注意到 RecentFavourites 链接,它们显示所有最近访问的 QlikView 文档和你想要经常访问的文档。

qlikview post install

Menu Commands

在关闭“入门”窗口后,我们将使用所有可用菜单命令获取主界面。它们代表 QlikView 中可用的一整套功能。下面概述了菜单命令的每个部分。

all menu

File Menu

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

  1. Mail as attachment 以附件形式通过电子邮件发送当前打开的文档。

  2. Reduce Data 仅查看报表布局和数据库结构,无任何数据。

  3. Table viewer 选项用于在一个图形化视图中查看表、字段及其关联的结构。

file menu

Edit Menu

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

  1. Active All 选项激活已打开的工作表中呈现的所有工作表对象。

  2. Remove(移除)从活动窗口移除工作表。

  3. Advanced search 选项用于使用多重框进行高级搜索表达式搜索。

edit menu

View Menu

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

  1. Turn on/off WebView mode 切换 WebView 模式和本地视图模式。

  2. Current Selections 显示所选工作表对象的字段名和文件值。

  3. Design Grid 用于切换选中对象的工作表对象占位符,以及用于调整大小和移动布局中的对象的贴齐网格。

view menu

Selection Menu

此菜单用于选择和取消选择工作表对象中的值。它还提供在正在处理的工作表的不同逻辑语句中来回移动的功能。此菜单中的重要功能包括:

  1. * 锁定锁定当前选择中所有的值。

  2. * 取消锁定取消锁定当前选择中所有已锁定的值。

selection menu

Layout Menu

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

  1. Promote sheet 将当前工作表或选项卡向前移动一步。

  2. Demote sheet 将当前工作表或选项卡向后移动一步。

  3. Delete sheet 删除活动工作表以及其中的所有内容。

layout menu

Settings Menu

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

  1. Variable overview 单个列表中所有未隐藏的变量及其值。

  2. Expression Overview 将文档、工作表和工作表对象中的表达式显示为单个列表。

settings menu

Bookmark Menu

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

bookmark menu

Reports Menu

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

reports menu

Tools Menu

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

  1. Quick Chart Wizard 在不使用大量不同设置和选项的情况下创建简单图表。

  2. Time Chart Wizard 创建时间序列图表。

  3. Statistics Chart Wizard 用于针对数据应用常见的统计检验。

tools menu

Object Menu

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

  1. Copy Sheet − 创建一张工作表的副本,同时创建所有工作表对象。

  2. Copy Image to Clipboard − 将工作表区域的位图图片复制到剪贴板。

  3. Remove − 完全删除工作表及其工作表对象。

objects menu

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

QlikView - Excel Files

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

Select the Excel file

保持 QlikView 主窗口处于打开状态,并浏览至要使用的 Excel 文件。

1 excel load data drag

Select a Data Source

将 Excel 文件拖放到主窗口中时,将出现文件向导。文件类型已选择为 Excel。在 Labels 下,选择 Embedded Labels 。单击“下一步”继续。

2 excel file wizard

Load Script

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

3 excel load script

现在,Excel 向导会提示以 .qvw file extension. It asks to select a location where you need to save the file. Click "Next step" to proceed. Now it is time to see the data that is loaded from the Excel file. We use a *Table Box 工作表对象的形式保存文件以显示此数据。

Create Table Box

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

4 excel table box option

单击下一步后,我们可以选择表框中的字段。您可以使用 Promote or Demote 按钮重新排列字段。

5 Excel Table box fields

Table Box Data

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

6 excel table box result

QlikView - Delimited File

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

QlikView 使用脚本编辑器中文件菜单下的 Data from files 选项加载 csv 文件。或者,您还可以打开一个新的 QlikView 文档并按 control+E 获取如下所示的脚本编辑器窗口。从适当的路径中选择文件 Product_details.csv。

1 dilimeted insert script

Select the File Headers

打开所选 CSV 文件时,将出现如下所示的窗口。在 Labels 下选择 Embedded Labels ,因为我们的文件中包含一个表头行作为其第一行。单击 Finish

2 dilimeted file wizrad

Load Script

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

3 dilimeted load script

现在,脚本向导提示以 .qvw file extension. It asks to select a location where you need to save the file. Click "Next step" to proceed. Now, it is time to see the data that is loaded from the delimited file. We use a *Table Box 表对象的形式保存文件以显示此数据。

Create Table Box

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

4 excel table box option

单击下一步后,我们可以选择表框中的字段。您可以使用 Promote or Demote 按钮重新排列字段。

5 Excel Table box fields

Table Box Data

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

6 excel table box result

QlikView - XML File

XML 是一个文件格式,它使用标准 ASCII 文本来在万维网上、Intranet 以及其他地方共享文件格式和数据。XML 的全称为可扩展标记语言 (XML)。类似于 HTML,它包含标记标签。然而,不同于其中标记标签描述页面的结构的 HTML,在 XML 中,标记标签描述了文件中包含的数据的意义。QlikView 可以使用 XML 文件中的数据。

从 XML 文件加载数据的过程与我们之前看到的定界文件加载过程类似。打开脚本编辑器。单击菜单 Insert → Load Statement → Load from File 。浏览你要加载的 XML 文件。在此示例中,我们选择 employee_dat.xml 文件。

1 file insert script

Select the XML File Structure

打开所选 XML 文件后,会出现如下所示的窗口。在左上角 File Type 部分下,选择 XML。XML 文件的内容现在作为表格显示,并带有标题列。单击完成。

2 xml file type

File Loader Script

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

3 xml load script

现在,脚本向导会提示你以 .qvw file extension. It asks to select a location where you need to save the file. Click "Next step" to proceed. Now it is time to see the data that is loaded from the XML file. We use a *Table Box 工作表对象的形式保存文件以显示此数据。

Create Table Box

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

table box option

单击下一步后,我们可以选择表框中的字段。您可以使用 Promote or Demote 按钮重新排列字段。

5 xml select fileds

Table Box Data

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

6 xml final data

QlikView - Web File

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

1 webfile load

Give the URL as Input

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

web file wizard

Select the Table from the Web File

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

3 webfile file type

Select the Columns of the Table

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

4 webfile choose fields

Load Script

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

5 webfile load script

现在,脚本向导提示以 .qvw file extension. It asks to select a location where you need to save the file. Click "Next step" to proceed. Now it is time to see the data that is loaded from the web file. We use a *Table Box 表对象的形式保存文件以显示此数据。

Create Table Box

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

单击下一步后,我们可以选择表框中的字段。您可以使用 Promote or Demote 按钮重新排列字段。

6 webfile table box fields

Table Box Data

完成上述步骤后,将出现表框表对象,显示从 Web 文件读取的数据。标记 Non-English 字符 !!

7 webfile final data

QlikView - Database Connection

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

对于本教程,我们将连接到 MySQL 数据库。本教程假设您拥有一个可用的 MySQL 环境。按照以下步骤创建 MySQL 的 ODBC DSN(数据源名称)- to create DSN. 将 DSN 命名为 mysqluserdsn ,或者如果您已经为 MySql 创建了 DSN,您可以选择使用现有的 DSN。

Connecting to the Database

对于本章,我们将使用名为 sakila 的 MySql 内置数据库。我们创建一个新的 QlikView 文档并打开脚本编辑器(按 Control+E)。在标签 Data 下,我们找到名为 Database 的部分。从下拉列表中选择 ODBC 并单击连接。将打开以下窗口。选择名为 mysqluserdns 的 DSN 并单击测试连接。消息 Connection Test succeeded 应该出现。

database file connect

Verifying Connection to Database

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

database connected

Select Database Table

在上述窗口中单击 Select iin 以获取表和列的列表。在这里,当我们创建 DSN 时,默认数据库是 sakila ,我们从这个数据库中获取表和列的列表。我们可以从如下图所示的数据库下拉列表中选择另一个数据库。我们将继续在本教程中使用 sakila 数据库。

database select table

Table Loader Script

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

database table script

Showing the Result in qvd File

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

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

datbase to qvd

Using the qvd File

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

database chart

QlikView - Inline Data

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

Script Editor

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

inline script editor

Inserting Data

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

inline scripting

Load Script

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

inline data load script

Table Box Data

创建表框图层对象时,我们会看到通过内联数据加载选项读取的数据。

inline data chart

QlikView - Resident Load

QlikView 可以加载其 RAM 中已存在的表中的数据,这些数据已由脚本处理。当您想通过同一段脚本从已存在的表衍生数据来创建表格时会出现这种情况。请注意,新表和已存在的表都应在同一段脚本中。

Creating the Load Script

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

resident load edit script

Table Box Data

创建表格框工作表对象后,我们看到读取的来自常驻数据加载选项的数据。

resident load chart

QlikView - Preceding Load

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

Load Script

下面的屏幕截图展示了数据脚本,它被加载为 Inline data ,随后最大函数被应用到一个列。底部的加载语句使数据在 QlikView 的内存中可用,它由第一个加载语句上方的第二个加载语句使用。第二个加载语句应用带有分组子句的最大函数。

1 preceeding load script

Table Box Data

创建表框图层对象时,我们会看到通过内联数据加载选项读取的数据。

2 preceeding load table box

QlikView - Incremental Load

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

要识别源中的新记录,我们使用每个行的顺序唯一键或日期时间戳。唯一键或数据时间字段的这些值必须从源文件流向 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

Loading the Data into QlikView

我们将在脚本编辑器 (Control+E) 中使用 Table Files 选项加载上述 CSV 文件,如下所示。我们还将数据保存在本地系统中的 QVD 文件中。将 QlikView 文档保存为 .qvw 文件。

incr laod create qvd

Verifying the Data Loaded.

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

table box option

Creating the Table Layout

选择 Table Box 工作表对象后,我们会看到下一个屏幕,用于选择要创建的表中的列及其位置。我们选择以下列及其位置,然后单击 Finish。

Incr load product details

Viewing the Existing Data

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

incremental load data

Updating the Source Data

让我们向源数据添加以下三个更多记录。此处,产品 ID 是表示新记录的唯一数字。

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

Incremental load script

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

// 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 - Data files (QVD)

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

Advantages of Using QVD Files

在 QlikView 中使用 QVD 文件的好处如下:

  1. Faster Loading of Data

  2. 在数据量增长时优雅地支持扩展。

  3. Used in incremental load

  4. 来自多个来源的数据可以组合到一个数据集中。

  5. Extract data in parallel

Creating QVD Files

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

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

csv to qvd

Using QVD Files

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

open qvd file

QVD File Loader Script

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

qvd file load script

Displaying Data from QVD File

使用 Control+R 重新加载文档,并选择菜单选项 Layout → New Sheet Objects → Table Box 。会出现一个窗口,显示 QVD 文件中表中的所有列。选择 "Add All" 可将所有列添加到显示表。使用 "Promote/Demote" 选项可更改列顺序。单击“完成”。将显示以下屏幕,显示 QVD 文件的内容。

qvd file data table

QlikView - Sheet and Objects

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

Sheets add remove

Sheet Properties

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

  1. Sheet Settings → Color. − 这将设置工作表的背景颜色。

  2. Tab Settings → Custom Colors. − 这将设置显示工作表名称的选项卡的颜色。

  3. Title. − 这将设置工作表的名称。

Sheets properties

Creating Sheet Objects

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

sheet objects menu

Using Sheet Objects

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

Creating List Box

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

sheet list box

Creating Multi Box

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

sheet multi box

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

sheet list multi boxes

Association between Sheet Objects

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

sheet objects association

QlikView - Scripting

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

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

script editor

Script Editor Features

脚本编辑器有很多功能,可以通过脚本编辑器窗口中的菜单来访问这些功能,这个菜单不同于主菜单。以下是重要功能的列表。

File Menu

  1. Reload − 重新加载脚本并获取新数据。

  2. Upper/Lower Case − 转换单词的大小写,因为 QlikView 区分大小写。

  3. Comment − 用于注释代码块。

Edit Menu

  1. Clear Entire Script − 清除活动脚本选项卡。

  2. Open Script File − 打开已保存的脚本文件。

  3. Table Viewer − 用于查看正在加载数据的表格视图。

Insert Menu

  1. Environment Variables − 插入标准环境变量列表。

  2. Script Files − 允许浏览脚本文件并插入它们。

  3. Connect/Disconnect Statement − 用于连接或断开与外部数据库的连接。

Tab Menu

  1. Insert Tab − 在当前光标位置插入制表符。

  2. Promote/Demote Tab − 允许从左向右或从右向左移动选项卡。

  3. Merge with Previous − 用于将活动标签的内容与上一个选项卡合并。

Tools Menu

  1. ODBC Administrator 64 bit/ODBC Administrator 32 bit − 允许为数据源设置正确的 DSN 信息。

  2. Editor Preferences − 允许您配置文本字体和大小、帮助功能、快捷方式、默认脚本引擎等。

  3. Syntax Check − 用于验证脚本代码的语法。

QlikView - Functions

QlikView 有许多内置函数,这些函数可用于应用到已在内存中的数据。这些函数被组织为许多类别,函数的语法一经选择即会出现。我们可以单击粘贴按钮以将表达式获取到编辑器中并提供参数。

Create Table Box

按照以下菜单(见下图中的屏幕截图)创建表格框。

table box option

完成以上给定的步骤后,我们就可以在左下角看到一个窗口来显示计算条件。

3 functions calculation fields

List of Functions

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

4 functions all functions

从函数分类中选择“ String ”后,我们只能看到几个函数,它们将字符串作为参数。

5 functions string

在之后的章节我们将看到许多重要函数的用法。

QlikView - IntervalMatch

QlikView IntervalMatch 是一个功能强大的函数,用于将不同的数字值与数字区间相匹配。它可用于分析计划的事件和实际发生的事件之间的差异性。它在装配线车间中会用到,其中皮带计划在特定时间内以特定的持续时间运行。但是,由于故障等原因,实际运行可能发生在不同的时间点。

Example

考虑一个带有三个皮带 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

Creating the Script

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

intervalmatch script

Creating Sheet Object

让我们创建一个 Table Box 工作表对象,以显示MatchInterval函数生成的数据。转到菜单项 Layout → New Sheet Object → Table Box 。在窗口中,我们提及表的标题和选择字段以显示。

intervalmatch create table

Showing the Table Box

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

intervalmatch table data

QlikView - Aggregate Functions

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

  1. SUM 给出该列中的数值和。

  2. AVG 给出该列中的数值平均值。

  3. MAX 给出该列中的最大数值。

  4. MIN 给出该列中的最小数值。

Example

考虑在本地系统中,将以下数据存储为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

Creating the Load Script

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

Aggregate create script

Creating Sheet Object

让我们创建一个 Table Box 工作表对象,以显示由Aggregate函数生成的数据。转到菜单 Layout → New Sheet Object → Table Box 。在窗口中,我们提及表的标题和选择字段以显示。单击“确定”将显示QlikView表框中的CSV文件数据,如下所示。

Aggregate data

Applying SUM() function

以下是加载脚本,用于查找产品线和产品类别中的销售数量和销售值的总和。

Aggregate sum script

单击“确定”并按 Control+R 将数据重新加载到QlikView文档。现在,按照 Creating Sheet Objects 中给出的相同步骤,为脚本结果创建一个QlikView表框,如下所示。

Aggregate sum data

Applying AVG() function

以下是加载脚本,用于创建每个产品线的销售数量和销售值的平均值。

# 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文档。现在,按照 Creating Sheet Objects 中给出的相同步骤,为脚本结果创建一个QlikView表框,如下所示。

Aggregate average data

Applying MAX() & MIN() function

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

# 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文档。现在,按照 Creating Sheet Objects 中给出的相同步骤,为脚本结果创建一个QlikView表框,如下所示。

Aggregate max min data

QlikView - Match Function

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

Load Script with Match() Function

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

Matched func script

Creating Sheet Object

让我们创建一个表框工作表对象,以显示匹配函数生成的数据。转到菜单 Layout → New Sheet Object → Table Box 。将出现以下窗口,我们在其中注明表格的标题,然后选择要显示的所需字段。单击“确定”将在 QlikView 表框中显示 CSV 文件中的数据,如下所示。

Matched func data

Load Script with Wildmatch() Function

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

wildmatch script

Creating Sheet Object

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

wildmatch data

QlikView - Rank Function

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

Input Data

用于说明排名函数的示例中使用的数据如下所示。您可以将其另存为.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

Load Script

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

rank laod script

Creating Chart with Rank() Function

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

Select the Chart Type

单击图表向导并选择 straight table 作为图表类型。单击 Next

rank chart type

Select the Chart Dimension

First Dimension 下拉列表中,选择 Product_Line 作为维度。单击 Next

rank select diemnsions

Define the Chart Expression

在自定义表达式字段中,按如下所示指定排名表达式。这里,我们正在考虑名为 Value 的数值字段,该字段表示每个产品线下的每个类别的销售额。单击 Next

rank chart expression

Displaying the Chart

在以上步骤中单击完成时,会出现下图,其中显示了每个产品线的销售额排名。

rank chart data

Using Aggregate Function with 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;

Creating Sheet Object

让我们创建一个 Table Box 表对象以显示由以上给定的脚本生成的数据。转到 Layout → New Sheet Object → Table Box 菜单。出现以下窗口,我们在其中指定表的标题并选择要显示的必需字段。单击确定可按如下所示在 QlikView 表格框中显示 CSV 文件中的数据。

rank aggr func

QlikView - Peek Function

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

Input Data

让我们按如下所示考虑每月销售数字。使用文件名 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

Load Script

以上数据通过使用脚本编辑器加载到 QlikView 内存中。从文件菜单打开脚本编辑器或按 Control+E 。为包含以上数据的文件选择 Table Files 选项。编辑加载脚本以添加以下代码。单击 OK ,然后单击 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);

Creating Sheet Object

让我们创建一个 Table Box 表对象以显示由以上给定的脚本生成的数据。转到 Layout → New Sheet Object → Table Box 菜单项。出现以下窗口,我们在其中指定表的标题并选择要显示的必需字段。单击确定可按如下所示在 QlikView 表格框中显示 CSV 文件中的数据。还要按如下所示设置排序顺序,以相同的顺序获取字段 Month 的结果,就像它在源中的顺序一样。

Monthly sales load order

在完成以上步骤并单击 Finish 后,我们得到显示以下数据的表格框。

Monthly sales prevmonth

Using peek() Function in Calculations

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

Creating Sheet Object

让我们创建一个 Table Box 表对象以显示由以上给定的脚本生成的数据。转到 Layout → New Sheet Object → Table Box 菜单项。出现以下窗口,我们在其中指定表的标题并选择要显示的必需字段。单击确定可按如下所示在 QlikView 表格框中显示 CSV 文件中的数据。

Monthly sales prevmonth diff

QlikView - RangeSum Function

QlikView 中的 RangeSum() 函数用于对选定字段执行选择性求和,而求和函数难以实现此目的。它可以将包含其他函数的表达式作为其参数并返回这些表达式的总和。

Input Data

让我们按如下所示考虑每月销售数字。使用文件名 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

Load Script

上述数据通过使用脚本编辑器加载到 QlikView 内存。从文件菜单打开脚本编辑器或按 Control+E 。从 Data from Files 选项卡中选择 Table Files 选项,并浏览包含上述数据的文件。编辑加载脚本以添加以下代码。单击 OK ,再单击 Control+R 可将数据加载到 QlikView 的内存中。

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

Applying RangeSum() Function

通过将以上数据加载到 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);

Creating Sheet Object

让我们创建一个 Table Box 表对象以显示由以上给定的脚本生成的数据。转到 Layout → New Sheet Object → Table Box 菜单。

出现以下窗口,我们在其中指定表的标题并选择要显示的必需字段。单击确定可按如下所示在 QlikView 表格框中显示 CSV 文件中的数据。

RangeSum

QlikView - Documents

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

Document Properties

我们可以快速找到 QlikView 文档的基本信息。单击 Help → document Support Info 。以下是示例输出。

document details

Setting Document Background Image

我们可以使用 Wallpaper Image 复选框在 General 选项卡下设置图像作为文档的背景图像。我们使用下拉按钮选择一张图像并将它对齐在左上角位置。

document backgound image

选择上述选项时会出现以下屏幕。

document backgound tp

Sheet Objects

QlikView 文档包含各种工作表对象,可以通过拖动它们在文档中的任何地方放置来移动它们。让我们创建两个工作表对象,一个 Table box 和一个 Statistics Box 。你可以按照前面的章节,我们已经在其中学习创建工作表对象。此外,我们使用 Product_sales.csv 文件,该文件在 [role="bare"] [role="bare"]https://www.tutorialspoint.com/qlikview/qlikview_aggregate_functions.htmlhere 中被提及。

document sheet objects

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

document sheet list

Scheduling a Document

可以计划 QlikView 文档在某些所需时间间隔内刷新。这是使用文档属性窗口下可用的 Schedule 选项卡完成的。

document scheduling

QlikView - List Box

list box 表示特定字段的所有值的列表。在列表框中选择一个值,会突出显示其他图层对象中的相关值。这有助于快速进行可视化分析。在各种图层对象中遵循下钻路径也非常有用。它还具有搜索功能,允许在列表框中搜索特定值,这对于非常长的值列表非常有用。

Input Data

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

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

Load Script

上述数据通过使用脚本编辑器加载到 QlikView 内存。从文件菜单打开脚本编辑器或按 Control+E 。从 Data from Files 选项卡中选择 Table Files 选项,并浏览包含上述数据的文件。编辑加载脚本以添加以下代码。单击 OK ,再单击 Control+R 可将数据加载到 QlikView 的内存中。

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

Creating List Box

List Box 的创建涉及通过菜单 Layout → New Sheet Object → List Box 导航。以下屏幕显示了这些步骤。

list box creation

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

list box properies

List Box Data

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

list box data

Search Option in List Box

当列表框包含非常多的值时,很难向下滚动并查找它。因此,可以在列表框顶部的搜索框中输入搜索字符串。相关值会在键入第一个字母后立即出现。

list box search

List Box and Association

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

list box association

QlikView - Multi Box

Multi Box 用作来自多个字段的全部值列表的形式显示菜单中的下拉值。类似于列表框,在多列表框中选择某个值会高亮显示其他工作表对象中的相关值。这有助于更快的可视化分析。它对于在各种工作表对象之间跟随向下钻取路径也十分有用。

Input Data

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

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

Load Script

通过使用脚本编辑器将上述数据加载到 QlikView 内存中。从文件菜单中打开脚本编辑器或按 Control+E 。从 Data from Files 选项卡中选择 Table Files 选项,并浏览该文件以查找包含上述数据。编辑加载脚本以添加以下代码。单击 OK ,然后单击 Control+R 以将数据加载到 QlikView 内存中。

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

Creating Multi Box

多列表框的创建涉及导航通过菜单 Layout → New Sheet Object → Multi Box 。以下屏幕显示了这些步骤。

Multi box create

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

Multi box fields

Multi Box Data

完成上述步骤便会显示以下屏幕,其中以多列表框的形式显示产品类别值。

Multi box data

Multi Box and Association

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

Multi box association

QlikView - Text Object

QlikView text Object 用于显示关于正在显示的 QlikView 报表的一些描述信息。它还可显示基于某些表达式的计算。它主要用于在与其他表对象分开的框中使用颜色和不同的字体类型来显示格式良好的信息。

Input Data

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

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

Load Script

通过使用脚本编辑器将上述数据加载到 QlikView 内存中。从文件菜单中打开脚本编辑器,或按 Control+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);

Creating Table Box

对于以上数据,让我们创建一个 Table Box ,该图表将以表格形式展示数据。进入菜单 Layout → New Sheet Object → Table Box 并选择下图所示的列。

2 text object create table box

单击 Apply 然后再单击 OK 以完成表格框的创建。将会出现以下屏幕。

3 text object create table box

Creating Text Object

对于以上数据,让我们创建一个 Text Object 。进入下图所示的菜单 Layout → New Sheet Object → Text Object

4 text object create

Creating Text Object Expression

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

5 text object edit

Choosing the Background Color

可使用常规选项卡中的背景选项设置文本对象的背景颜色。

6 text object edit

The Text Object

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

7 text object final data

QlikView - Bar Chart

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

Input Data

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

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

Load Script

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

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

Creating Table Box(Sheet Object)

对于以上数据,让我们创建一个 Table Box ,该图表将以表格形式展示数据。进入菜单 Layout → New Sheet Object → Table Box 并选择下图所示的列。

2 text object create table box

单击 Apply 然后再单击 OK 以完成表格框的创建。将会出现如下给出的屏幕。

3 text object create table box

Using the Quick Chart Wizard

为了开始创建条形图,我们将使用快速图表向导。单击后,将出现以下提示选择图表类型的屏幕。选择 bar Chart 并单击下一步。

5 bar chart chart type

Choose the Chart Dimension

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

6 bar chart chart diemnsion

Choose the Chart Expression

图表表达式用于将诸如 Sum, Average, or Count 的功能应用于具有数值的字段。我们将对名为“值”的文件应用求和函数。单击下一步。

7 bar chart chart expression

Choose the Chart Format

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

8 bar chart chart format

The Bar Chart

条形图将按如下所示出现。该图表显示不同产品线字段值的高度。

9 bar chart display

QlikView - Pie Chart

pie-chart 是以不同颜色的圆形切片形式表示的值。切片带有标签,每个切片对应的数字也在图表中表示。QlikView 使用图表向导或图表表对象创建饼图。

Input Data

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

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

Load Script

通过使用脚本编辑器将上述数据加载到 QlikView 内存中。从文件菜单中打开脚本编辑器,或按 Control+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);

Using the Quick Chart Wizard

为了开始创建饼图,我们将使用快速图表向导。单击后,将出现以下提示选择图表类型的屏幕。选择 Pie Chart 并单击下一步。

2 pie chart chart type

Choose the Chart Dimension

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

3 pie chart dimension

Choose the Chart Expression

图表表达式用于将诸如 Sum, Average or Count 的功能应用于具有数值的字段。我们将对名为“值”的文件应用求和函数。单击下一步。

4 pie chart expression

Choose the Chart Format

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

5 pie chart format

The Pie Chart

条形图将按如下所示出现。该图表显示不同产品线字段值的高度。

6 pie chart display

QlikView - Dashboard

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

Input Data

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

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

Load Script

通过使用脚本编辑器将上述数据加载到 QlikView 内存中。从文件菜单中打开脚本编辑器,或按 Control+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);

Choose Matrices

我们将上述输入数据中的字段选为要显示在仪表板中的矩阵。为此,我们按照 Layout → Select Fields 菜单中的步骤进行操作。

3 dahboard matrices fileds

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

4 dahboard listbox fields

将出现以下屏幕,显示所有字段。

5 dahboard listbox display

Adding Chart to Dashboard

现在,我们通过右键单击工作表中的任意位置并选择 New Sheet Object → Chart ,来向仪表板添加图表。

6 dahboard add chart

Choose the Chart Type

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

7 dahboard add bar chart

Chart Dimension

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

8 dahboard chart dimension

Chart Expression

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

9 dahboard chart expression

The Dashboard

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

10 dahboard data

Using the Dashboard

可以选择上述仪表板中的值来过滤具体产品,图表也会相应更改。此外,还会突出显示关联值。

11 dahboard data associated

QlikView - Data Transformation

数据转换是对现有数据进行修改,将其转换为新数据格式的过程。它还可能涉及过滤掉或向现有数据集添加一些特定值。QlikView 可以加载到其内存中之后使用其众多内建函数来进行数据转换。

Input Data

让我们考虑以下表示每个月销售额的输入数据。此数据存储在 csv 文件中,文件名 quarterly_sales.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

Loading the Data

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

1 dt file wizard

The Transformation Wizard

在下一个屏幕中,系统会提示我们选择一些数据转换。单击按钮 Enable Transformation Step

2 dt edit transformations

Transformation Type

在此步骤中,我们将选择消除说明季度的那些行的转换。我们选择 Garbage → delete marked ,然后选择不需要的两行。单击下一步。

3 dt garbage rows

File Wizard Options

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

4 dt next garbage rows

Load Script for Transformed Data

下面给出了所有转换步骤完成后以上数据的加载脚本。

5 dt load script

Displaying Transformed Data

可以使用 Table Box 工作表对象显示已转换的数据。创建它的步骤如下。

6 dt create table box

接下来,为表格框选择字段。

7 dt table box fields

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

8 dt fina data

QlikView - Fill Function

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

Input Data

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

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,

Load Script

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

1 fill choose file

在上面步骤中单击下一步之后,我们选择 Enable Transformation Step 按钮来执行所需的数据转换。

2 fill file wizard

Selecting the Data Transformation

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

3 fill transformation

Create the Fill Condition

单击填充按钮时,会显示用于选择目标列和单元格条件的选项。我们选择第三列,因为我们要使用第二列中同一行的值来填充此列的空值。同时,选择单元格值为空,以便只有空单元格会被新值覆盖。

4 fill cell condition

Transformed Data

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

5 fill filled cells

Load Script for transformed Data

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

6 fill laod script

Display Transformed Data

可以通过使用菜单 Layout → New Sheet Object 中的选项创建 Table Box 来查看已转换的数据。

7 fill table box

QlikView - Column Manipulation

列操作是一种数据转换,其中根据满足特定条件的现有列中的值填充新列。条件可以是作为数据转换步骤的一部分创建的表达式。

Input Data

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

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

Load Script

以上数据已使用脚本编辑器加载到 QlikView 内存中。从“文件”菜单中打开脚本编辑器,或按 Control+E 。从“文件中的数据”选项卡中选择“表文件”选项,并浏览包含以上数据的文件。单击“下一步”后,我们选择 Enable Transformation Step 按钮来执行所需的数据转换。

1 cm file wizard

Selecting the Data Transformation

选择“列”选项卡,然后选择 New 按钮。它要求指定 New column 和行条件。我们指定第 3 列为源列,并选择以 2 开头的值作为行条件。

2 cm add column

Transformed Data

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

3 cm added column

Load Script for Transformed Data

可以使用脚本编辑器查看已转换数据的加载脚本。该脚本显示创建新列的表达式,其中包含所需值。

4 cm file wizard script

Display Transformed Data

可以通过使用菜单 Layout → New Sheet Object 中的选项创建 Table Box 来查看已转换的数据。

5 cm completed

QlikView - Rotating Tables

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

Input Data

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

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,

Load Script

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

1 file wizard

单击下一步之后,我们选择 Enable Transformation Step 按钮来执行所需的数据转换。

Selecting the Data Transformation

由于我们准备使用 Rotate 函数,让我们选择显示所有字段值旋转选项卡。

2 rotate option

Apply Rotate

我们单击 Transpose 按钮转置上述数据。转置数据如下图所示。

3 rotate rotated

Load Script for transformed Data

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

4 rotate load script

Display Transformed Data

可以通过使用菜单 Layout → New Sheet Object 中的选项创建 Table Box 来查看已转换的数据。

5 rotate loaded data

QlikView - Dimensions and Measures

维度和度量是基本属性,始终用于数据分析。例如,考虑分析结果 “what is the percentage change in volume of sales for each quarter?” 在这种情况下,每个季度表示维度,即季度的名称。销量百分比变化表示 Measures ,这是对维度中每个值进行的计算。以下是这些两个术语已被广泛接受的一些定义。

  1. Dimension − 这是数据集中表示几个不同值的描述性字段。示例 - 月份、年份、产品 ID 等。

  2. Measures − 这是数字字段,可以对维度中每个不同值执行一些计算。

Input Data

让我们考虑以下输入数据,它表示不同地区不同产品线和产品类别的销售量和收入。将数据保存到 .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

Load Script

以上数据通过脚本编辑器加载到 QlikView 内存。从文件菜单打开脚本编辑器或按下 Control+E 。从 Data from Files 选项卡中选择 Table Files 选项,然后浏览包含上述数据的文件。单击 OK 并按下 Control+R 将数据加载到 QlikView 的内存中。

Table Structure

我们可以通过遵循菜单 File → Table Viewer 或按下 Control+T 查看表结构。将弹出一个屏幕,其中我们已在绿框内标记出维度并在红框内标记出度量。

1 view table

Using Dimensions and Measures

让我们创建一个直线表图表,显示使用上述维度和度量的计算。单击 Quick Chart Wizard ,如下所示。

接下来,单击 Straight Table 选项。单击下一步。

2 dm straight table

Choose Dimensions

在此屏幕中,我们选择地区作为维度,因为我们想要选择每个地区的总收入。

3 dm table diemsnion

Choose Measure

下一个屏幕提示对度量字段应用计算。我们选择对收入字段应用 Sum

4 dm table measure

Final chart

完成以上步骤,我们就得到了最终的图表,其中显示了每个地区 (维度) 的总收入 (度量) 。

5 dm final chart

QlikView - Star Schema

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

Input Data

下面列出了包含来自不同供应商和地区的不同产品的表格。同样供应发生在不同的时间间隔,这些时间间隔是在时间维度表中捕获的。

Product Dimension

它包含产品类别和产品名称。产品 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

Region Dimension

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

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

Supplier Dimension

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

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

Time Dimension

数据包含上述产品的供应时间段。TimeID 字段是唯一密钥。

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

Supplier Quantity Fact

数据包含供应数量的值以及供应中存在缺陷的百分比。它通过同名的密钥连接到上述每个维度。

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

Load Script

上述数据是使用脚本编辑器加载到 QlikView 内存中的。从“文件”菜单中打开“脚本编辑器”,或按 Control+E 。从 Data from Files 选项卡中选择 Table Files 选项,并浏览包含上述数据的文件。单击 OK 并按 Control+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);

Star Schema Data Model

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

starschema model

QlikView - Synthetic Key

如果两个表之间要使用哪个键存在歧义,则 Synthetic Key 是 QlikView 创建虚假键的解决方案。当两个表有两个或更多个通用字段时,就会出现这种情况。QlikView 的在内存中创建关联的功能会自动检测此场景,并创建其他表,该表将保存新创建的键的值。

Input Data

让我们考虑以下两个 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

Load Script

我们使用脚本编辑器加载以上输入数据,可以通过按 Control+E 调用脚本编辑器。选择选项 Table Files 并浏览输入文件。

synthetic key load script

Data Model

然后,我们使用表查看器的菜单命令 Control+T 查看数据模型。将弹出现以下屏幕,该屏幕显示第三个表的创建,该表将合成键的值作为 ProductID 和 Country 作为匹配键的两个表提供。

synthetic key data model

Impact of Synthetic key

合成键指出所用数据模型中的缺陷。它们不会导致数据正确性或报告性能方面出现任何问题。如果大数据模型中有一个或两个合成键实例,则运行良好。但是,如果我们有太多合成键,则意味着需要重新设计数据模型。

QlikView - Generating Data

很多时候,我们需要使用正在使用的软件以编程方式生成一些数据,这些数据并非来自源文件。例如,100 个随机数或一年中第 23 周的日期。数据分析员可能需要创建此类数据,才能对没有包含这些值的已收到的数据进行一些分析。QlikView 提供了一个名为 Autogenerate 的函数,可用于此类要求。

Data Requirement

考虑一种我们需要仅查找星期四或星期天的日期的场景。我们需要查找当天的范围直到年底的日期。我们创建以下脚本,它将实现此目的。

generate data load script

Explanation

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

Generated data

将上述脚本加载到 QlikView 的内存,并使用菜单 Layout → New Sheet Objects → Table Box 创建表格框,我们得到如下所示的创建数据。

generate data calendar

QlikView - Cross Tables

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

Input data

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

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

Loading Input Data

我们使用脚本编辑器加载上述输入数据,通过按 Control+E 调用脚本编辑器。选择选项 Table Files 并浏览输入文件。选择如下所示的选项后,单击“下一步”。

1 cross tab file wizard

Crosstable Options

在下一个窗口(“文件向导”→“选项”)中,单击 Crosstable 按钮。它以不同的颜色突出显示列。粉色表示 qualifier field ,它将在 Attribute Field 的每个值的许多行中重复。Attribute 字段下的单元格值作为数据。单击“确定”。

2 cross tab choose fields

Crosstable Transformation

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

3 cross tab result1

Load Script

交叉表转换的加载脚本显示了如下所给的命令。

4 cross tab load script

Crosstable Data

使用菜单 Layout → New Sheet Objects → Table Box 创建表框图层对象后,我们得到以下输出。

5 cross tab table box

QlikView - Straight Tables

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

Input Data

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

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

Load Script

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

1 File wizard

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

Create Table Box

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

3 straight table menu

Select the Columns

QlikView 提示选择要包含在最终表框中显示的列。我们选择所有列,并使用 Promote or Demote 选项来设置列的顺序。

4 straight table choose fields

Select Display Style

接下来,我们选择 style(样式)选项卡,为显示数据指定特定的背景色。当前样式选项列出许多预构建的样式。我们为每两行选择 Pyjama RedStripes

6 straight table pyjama

Column Re-ordering

通过按住鼠标按键在列标题上然后将其拖动到所需位置,我们可以重新排列列的位置。

7 straight table pyjama reorder

QlikView - Pivot Tables

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

Input Data

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

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

Load Script

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

1 File wizard

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

Select Chart Type

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

2 pivot select chart

Select Chart Dimension

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

3 pivot choose dimension

Select Chart Expression

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

4 pivot choose sum

Select the Chart Format

在单击“下一步”后,我们将获得一个屏幕,用于选择图表格式,在该格式中,我们选择 Pyjama Green 作为样式和默认模式。

5 pivot chart style

Pivot Chart Data

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

6 pivot pivot final

QlikView - Set Analysis

QlikView 的集合分析功能用于将不同工作表对象中的数据隔离成多个集合,并在其中一些集合中保持不变的值。简单来说,它创建了一个选项,可以选择不将某些工作表对象与其他工作表对象关联,而默认行为是所有工作表对象都彼此关联。这有助于筛选一个工作表对象中的数据,并在其他工作表对象中看到相应的,而选择为不同集合的工作表对象则会根据其自己的筛选器显示值。

Input Data

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

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

Load Script

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

1 set ana load script

Create Table Box

选择所有可用的字段以使用菜单选项 Layout → New Sheet Objects → Table Box 创建表框,并使用菜单选项 Layout → New Sheet Objects → List Box 创建包含月份字段的列表框。此外,创建直线表图表,显示每个产品类别下的总销售额。

4 set ana sales table

Data Association

现在,我们可以通过选择其中一个对象中的某些值来观察这些三个工作表对象之间的关联。让我们从月列表框中选择月份 4 月和 1 月。我们可以看到表框和图表中的值发生变化,显示相关值。

5 set ana association

Clone Object

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

6 set ana clone

Set Expression

接下来,我们选择第二个图表副本 Sales Sum 并右键单击它以获取图表属性。我们创建一个名为 Sales values 的表达式,在 Definition 选项卡下编写公式,如下所示。

7 set ana setexpression

Applying Set Analysis

完成上述步骤后,我们发现当选择月份 6 月时,我们可以在表框和销售总计图表中获取关联的值。但 4 月销售额不会发生变化,因为它基于集合表达式的。

8 set ana final

QlikView - Joins

QlikView 中的联接用于将两个数据集中的数据合并为一个数据集。QlikView 中的联接与 SQL 中的联接具有相同的含义。只有匹配联接条件的列和行值才会显示在输出中。如果您是联接的完全新手,您可能希望首先了解它们 here.

Input Data

让我们考虑以下两个 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

Inner Join

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

load script

内部联接仅获取存在于两个表中的那些行。在这种情况下,获取 both Product List and Product Sales 表中可用的行。我们使用菜单 Layout → New Sheet Objects → Table Box 创建 Table Box ,在该菜单中,我们选择要显示的所有三个字段 - ProductID、ProductCategory 和 SaleAmount。

inner join

Left Join

左联接涉及提取来自左表中的所有行,以及来自右表中的匹配行。

Load Script

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

我们使用菜单 Layout → New Sheet Objects → Table Box 创建一个 Table Box ,其中选择所有三个字段(ProductID、ProductCategory 和 SaleAmount)进行显示。

left join

Right Join

右联接涉及提取来自右表中的所有行,以及来自左表中的匹配行。

Load Script

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

我们使用菜单 Layout → New Sheet Objects → Table Box 创建一个 Table Box ,其中选择所有三个字段(ProductID、ProductCategory 和 SaleAmount)进行显示。

right join

Outer Join

外联接涉及提取来自右表和左表中的所有行。

Load Script

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

我们使用菜单 Layout → New Sheet Objects → Table Box 创建一个 Table Box ,其中选择所有三个字段(ProductID、ProductCategory 和 SaleAmount)进行显示。

outer join

QlikView - Keeps

QlikView 中的 keep 命令用于组合来自两个数据集的数据,同时保持两个数据集都在内存中可用。它与我们在前一章中介绍的连接非常相似,但有两处主要区别。第一个区别是,对于 keep 而言,两个数据集都在 QlikView 的内存中可用,而在连接中,load 语句只会产生一个数据集,您必须从中选择列。第二个区别是,在外连接中没有外连接概念,而我们有可用的外连接。

Input Data

让我们考虑以下两个 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

Inner Keep

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

keep script

内部 keep 仅提取两个表格中都存在的那些行。在这种情况下,提取 both Product List and Product Sales 表格中可用的行。我们使用菜单 Layout → New Sheet Objects → Table Box 创建表格框。

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

keep product sales

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

keep product list

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

keep both tables

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

keep chart innerkeep

Left Keep

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

Left keep Script

我们使用以下脚本创建带有左连接命令的结果数据集。

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

Left keep Data

当我们将脚本更改为上述内容,并使用 Control+R 刷新报表中的数据时,我们将在工作表对象中获取以下数据。

keep chart leftkeep

Right Keep

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

Right keep Script

我们使用以下脚本创建带有左连接命令的结果数据集。

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

Right keep data

当我们将脚本更改为上述内容,并使用 Control+R 刷新报表中的数据时,我们将在工作表对象中获取以下数据。

keep chart rightkeep

QlikView - Concatenation

QlikView 中的串联功能用于将一个表中的行追加到另一表中,即使表中列数不同,该功能也可以正常使用。与 Join 和 Keep 命令不同,它没有将来自两个表的匹配行合并为一行。

Input Data

我们考虑以下两个 CSV 数据文件,它们用作进一步演示的输入。请注意,第二个数据集有一个名为 Country 的附加列。

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

Load Script

我们使用脚本编辑器加载上述输入数据,它可以通过按 Control+E 调用。选择选项 Table Files 并浏览输入文件。然后,我们编辑脚本中的命令以应用表之间的串联。

concatenate load script

接下来,我们将上述数据加载到 QlikView 的内存中,并使用菜单 Layout → New Sheet Objects → Table Box 创建一个表格框,在该表格框中,我们选择所有可用字段以显示如下所示。

concatenate select table

Concatenated Data

完成以上步骤,我们可以看到显示的表格框如下所示。请注意产品 ID 为 6 和 7 的重复行。串联不会消除重复项。

concatenated table chart

QlikView - Master Calendar

在 QlikView 中,我们很多时候需要创建一个日历引用对象,它可以链接到 QlikView 内存中存在的任何数据集。例如,你有一个表,它捕获销售金额和销售日期,但没有存储对应于该日期的星期几或季度。在这种情况下,我们创建 Master Calendar ,它将提供任何数据集所需的额外日期字段,如季度、日等。

Input Data

我们考虑以下两个 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

Load Script

我们使用脚本编辑器加载以上输入数据,可以通过按 Control+E 调用脚本编辑器。选择选项 Table Files 并浏览输入文件。

1 mc load script

接下来,我们将上述数据加载到 QlikView 的内存中,并使用菜单 Layout → New Sheet Objects → Table Box 创建 Table Box ,我们选择所有可用字段以显示如下所示。

2 mc initial data

Create Master Calendar

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

3 mc calendar script

Select Fields

在创建完成的加载脚本以及主日历后,我们创建了一个表格框以使用菜单 Layout → New Sheet Objects → Table Box 查看数据

4 mc select fields

Final Data

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

5 mc final data

QlikView - Mapping Tables

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

Input Data

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

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

Load Script

通过使用脚本编辑器将以上数据加载到 QlikView 内存中。从文件菜单中打开脚本编辑器,或按 Control+E 。从 Data from Files 选项卡中选择 Table Files 选项,并浏览包含上述数据的文件。单击 OK 并按 Control+R 将数据加载到 QlikView 的内存中。

1 mt load script

Create Table Box

我们为上面每个表创建两个表格框,如下所示。在这里,我们无法在销售区域报告中获取国家值。

2 mt table boxes

Create the Mapping Table

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

3 mt mapping script

Table Chart

在完成上述步骤并创建一个表格框以查看数据后,我们将获得国家列以及销售表中的其他列。

4 mt final data

QlikView - Circular Reference

当我们可以使用两种或更多种不同的路径从一个表遍历到另一个表时,会出现 Circular Reference 。这意味着您可以使用列直接将 Table1 与 Table2 联接,也可以先将 Table1 与 Table3 联接,然后将 table3 与 Table2 联接。这会导致由数据模型(加载所有这三个表)形成的输出中的结果不正确。一旦 QlikView 识别出循环引用,便会阻止此类数据加载到其内存中。

Input Data

让我们考虑以下三个 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

Load Script

我们使用脚本编辑器加载以上输入数据,可以通过按 Control+E 调用脚本编辑器。选择选项 Table Files 并浏览输入文件。

1 cr load script

Data Load

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

2 warning

Data Model

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

3 cr data model

Resolving Circular Reference

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

4 cr load script rectified

Rectified Data Model

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

5 cr data model rectified

Control+R 重新加载数据不会再给我们警告,并且我们可以使用此数据来创建报告。