Qlikview 简明教程
QlikView - Overview
QlikView 是领先的业务发现平台。与传统 BI 平台相比,它在很多方面是独特的。作为一种数据分析工具,它始终保持数据之间的关系,并且这种关系可以使用颜色以可视方式呈现。它还显示不相关的数据。它通过在列表框中使用各个搜索功能来提供直接和间接搜索。
QlikView 的核心专利技术具有内存数据处理功能,可为用户提供超快速的计算结果。它可以即时计算聚合数据,并将数据压缩至原始大小的 10%。QlikView 应用程序的用户和开发人员都不管理数据之间的关系。它是自动管理的。
Features of QlikView
QlikView 拥有专利技术,该技术使其具备许多有用功能,可快速从多个数据源中创建高级报告。以下是使 QlikView 非常独特的功能列表。
-
Data Association is maintained automatically - QlikView 自动识别数据集中的每一段数据之间的关系。用户无需预先配置不同数据实体之间的关系。
-
Data is held in memory for multiple users, for a super-fast user experience - 报告的结构、数据和计算全部保存在服务器的内存 (RAM) 中。
-
Aggregations are calculated on the fly as needed - 由于数据保存在内存中,因此计算是即时执行的。无需存储预先计算的汇总值。
-
Data is compressed to 10% of its original size - QlikView 大量使用数据字典。任何分析所要求的仅有少量必要数据。因此,它将原始数据压缩到很小的尺寸。
-
Visual relationship using colors - 数据之间的关系不是通过箭头或线条表示,而是通过颜色表示。选择一段数据会向相关数据赋予特定的颜色,向不相关数据赋予另一种颜色。
-
Direct and Indirect searches - 用户可以输入一些相关数据而不是直接给出他们正在寻找的直接值,并根据数据关联获得确切的结果。当然,他们也可以直接搜索某个值。
QlikView - Installation
Download QlikView
您可以从 QlikView Personal Edition. 下载 QlikView 的免费个人版。您需要使用您的详细信息进行注册,然后才能下载。
下载后,安装是一个非常简单的过程,在该过程中您需要接受许可协议并提供安装的目标文件夹。下面给出的屏幕截图描述了整个安装过程。
QlikView - Architecture
作为领先的业务发现平台,QlikView 构建的商业数据发现方式与其他传统平台有很大不同。QlikView 不会首先构建查询,然后基于查询获取结果。相反,它将在加载不同的数据对象后立即形成它们之间的关联,并提示用户以任意方式探索数据。不存在预定义的数据下钻路径。只要数据可用和关联,数据下钻路径就可以朝任何方向进行。
当然,用户还可以通过 QlikView 中提供的数据建模方法在数据元素之间创建关联。
Architectural Overview
QlikView 的架构包括用于可视化处理数据的“前端”和用于为 QlikView 用户文档提供安全性和发布机制的“后端”。以下图表描述了 QlikView 的内部工作原理。下图内容讨论了该架构的详细信息。
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 是如何工作的。请随意点击!在向右移动时,你会注意到 Recent 和 Favourites 链接,它们显示所有最近访问的 QlikView 文档和你想要经常访问的文档。
Menu Commands
在关闭“入门”窗口后,我们将使用所有可用菜单命令获取主界面。它们代表 QlikView 中可用的一整套功能。下面概述了菜单命令的每个部分。
File Menu
此菜单被用于创建一个新 QlikView 文件,并从本地系统和 QlikView 服务器打开现有文件。此菜单中的重要功能包括:
-
Mail as attachment 以附件形式通过电子邮件发送当前打开的文档。
-
Reduce Data 仅查看报表布局和数据库结构,无任何数据。
-
Table viewer 选项用于在一个图形化视图中查看表、字段及其关联的结构。
Edit Menu
此菜单用于执行编辑选项,例如复制、粘贴、剪切和使用格式刷。此菜单中的重要功能包括:
-
Active All 选项激活已打开的工作表中呈现的所有工作表对象。
-
Remove(移除)从活动窗口移除工作表。
-
Advanced search 选项用于使用多重框进行高级搜索表达式搜索。
View Menu
此菜单用于查看标准工具栏和放大/缩小功能。它还显示所有活动工作表,作为级联菜单。此菜单中的重要功能包括:
-
Turn on/off WebView mode 切换 WebView 模式和本地视图模式。
-
Current Selections 显示所选工作表对象的字段名和文件值。
-
Design Grid 用于切换选中对象的工作表对象占位符,以及用于调整大小和移动布局中的对象的贴齐网格。
Selection Menu
此菜单用于选择和取消选择工作表对象中的值。它还提供在正在处理的工作表的不同逻辑语句中来回移动的功能。此菜单中的重要功能包括:
-
* 锁定锁定当前选择中所有的值。
-
* 取消锁定取消锁定当前选择中所有已锁定的值。
Layout Menu
布局菜单用于添加选项卡式工作表、选择不同的工作表和重新排列工作表对象。该菜单中的重要功能为:
-
Promote sheet 将当前工作表或选项卡向前移动一步。
-
Demote sheet 将当前工作表或选项卡向后移动一步。
-
Delete sheet 删除活动工作表以及其中的所有内容。
Settings Menu
设置菜单用于设置用户首选项、文档属性和工作表属性。该菜单中的重要功能为:
-
Variable overview 单个列表中所有未隐藏的变量及其值。
-
Expression Overview 将文档、工作表和工作表对象中的表达式显示为单个列表。
QlikView - Excel Files
QlikView 通过简单的拖放操作接受 Excel 电子表格以进行数据分析。您需要打开 QlikView 主窗口,并将 Excel 文件拖放到界面中。它会自动创建显示 Excel 数据的工作表。
Select a Data Source
将 Excel 文件拖放到主窗口中时,将出现文件向导。文件类型已选择为 Excel。在 Labels 下,选择 Embedded Labels 。单击“下一步”继续。
Load Script
会出现加载脚本,该脚本显示将数据加载到 QlikView 文档中的命令。可以编辑此命令。
现在,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 工作表对象的形式保存文件以显示此数据。
QlikView - Delimited File
QlikView 可以使用纯文本文件中的数据,其中的字段由逗号、制表符、分号等字符分隔。在此,我们将以 CSV 为例。每列数据都由逗号分隔的文件称为 CSV 文件。它是一种非常广泛使用的文件格式,用于存储按列和行组织的纯文本数据。
QlikView 使用脚本编辑器中文件菜单下的 Data from files 选项加载 csv 文件。或者,您还可以打开一个新的 QlikView 文档并按 control+E 获取如下所示的脚本编辑器窗口。从适当的路径中选择文件 Product_details.csv。
Select the File Headers
打开所选 CSV 文件时,将出现如下所示的窗口。在 Labels 下选择 Embedded Labels ,因为我们的文件中包含一个表头行作为其第一行。单击 Finish 。
Load Script
使用加载脚本将文件加载到 QlikView 中,可以在下面的屏幕截图中看到。因此,当我们使用任何定界文件时,我们可以根据文件格式调整下面的脚本。
现在,脚本向导提示以 .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 表对象的形式保存文件以显示此数据。
QlikView - XML File
XML 是一个文件格式,它使用标准 ASCII 文本来在万维网上、Intranet 以及其他地方共享文件格式和数据。XML 的全称为可扩展标记语言 (XML)。类似于 HTML,它包含标记标签。然而,不同于其中标记标签描述页面的结构的 HTML,在 XML 中,标记标签描述了文件中包含的数据的意义。QlikView 可以使用 XML 文件中的数据。
从 XML 文件加载数据的过程与我们之前看到的定界文件加载过程类似。打开脚本编辑器。单击菜单 Insert → Load Statement → Load from File 。浏览你要加载的 XML 文件。在此示例中,我们选择 employee_dat.xml 文件。
Select the XML File Structure
打开所选 XML 文件后,会出现如下所示的窗口。在左上角 File Type 部分下,选择 XML。XML 文件的内容现在作为表格显示,并带有标题列。单击完成。
File Loader Script
XML 文件加载到 QlikView 中是通过加载脚本完成的,如下所示。因此,当我们使用任何 XML 文件时,我们可以调整以下给出的脚本以重命名列或更改文件位置等。
现在,脚本向导会提示你以 .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 工作表对象的形式保存文件以显示此数据。
QlikView - Web File
QlikView 可以处理以 HTML 格式保存的 Web 文件。它可以从 HTML 表中提取数据。要处理的 Web 文件的 URL 被作为输入提供,并且 QlikView 获取文件结构和内容。然后,它分析页面的结构,从页面中存在的 HTML 表中提取相关数据。我们从脚本编辑器的数据选项卡下的 Data from files 部分选择 Web files 选项。
Give the URL as Input
在选择 Web 文件选项后,我们会得到一个新窗口来输入 URL。在此示例中,我们选择维基百科中的亚洲主权国家和属地列表作为输入页面。提及 URL 并单击下一步。
Select the Table from the Web File
打开所选 Web 文件时,将出现如下所示的窗口。在这里我们可以看到网页中存在的各种表,标记为 @1、@1、@3 等。选择第一张表并单击两次下一步。
Load Script
使用加载脚本将文件加载到 QlikView 中,可以在给定的屏幕截图中看到。因此,当我们使用任何定界文件时,我们可以根据文件格式调整下面给出的脚本。
现在,脚本向导提示以 .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 表对象的形式保存文件以显示此数据。
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 应该出现。
Select Database Table
在上述窗口中单击 Select iin 以获取表和列的列表。在这里,当我们创建 DSN 时,默认数据库是 sakila ,我们从这个数据库中获取表和列的列表。我们可以从如下图所示的数据库下拉列表中选择另一个数据库。我们将继续在本教程中使用 sakila 数据库。
QlikView - Inline Data
可以通过直接键入或粘贴将数据输入到 QlikView 文档中。此功能是一种快速的方法,可以将数据从剪贴板复制到 QlikView。脚本编辑器在“插入”选项卡下提供此功能。
QlikView - Resident Load
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 文件。
Verifying the Data Loaded.
我们可以通过创建一个名为 Table Box 的工作表对象来检查加载到 QlikView 文档的数据。这可在 Layout 菜单和 New Sheet Objects 子菜单中找到。
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 的记录。
QlikView - Data files (QVD)
QlikView 的一项重要功能是使其出众,即它能够将非常多量的数据存储为一个非常压缩的大小,并将其与 QlikView 文档一起存储。因此,一旦文档被创建,我们就无需连接到数据源,因为数据已经与文档的布局一起存储。这是通过 QVD 文件实现的,它是使用 .qvd 扩展名存储的平面文件。QVD 文件存储单个 QlikView 文档的数据,它使用 QlikView 文档中提供的脚本编辑器创建。
Advantages of Using QVD Files
在 QlikView 中使用 QVD 文件的好处如下:
-
Faster Loading of Data
-
在数据量增长时优雅地支持扩展。
-
Used in incremental load
-
来自多个来源的数据可以组合到一个数据集中。
-
Extract data in parallel
Creating QVD Files
QVD 文件是在 QlikView 文件加载期间使用 STORE 语句创建的。此语句创建一个单个 qvd 文件,它作为文件存储在指定位置;单独的 QVW 文件通过它创建。
下面给出了在通过读取源文件将数据加载到 QlikView 文档后存储 qvd 文件的示例。
Using QVD Files
QVD 文件被加载到 QlikView 文档中的方式与 CSV、Excel 和分隔文件等其他文件类似。我们使用 File 菜单下提供的 Open 选项,并浏览之前创建的 QVD 文件。在打开后,它给我们一个窗口来查看数据、选择列标题和执行任何所需的数据转换。
QlikView - Sheet and Objects
每个 QlikView 文档至少包含一个名为 Main 的工作表。我们可以添加更多工作表,它们就像同一 QlikView 文档的许多页面。工作表帮助我们显示多种数据格式,例如多种图表或多种表格。每个工作表可以包含各种工作表对象。此外,可以使用 Promote Sheet/Demote Sheet 选项重新排列工作表,并可以使用 Remove Sheet 选项从 QlikView 文档中删除工作表。
Sheet Properties
工作表具有各种属性,可以将其设置为自定义工作表。例如,我们可以设置工作表的名称及其颜色。右键单击工作表中的任意位置,然后选择“属性”选项。然后选择以下属性。
-
Sheet Settings → Color. − 这将设置工作表的背景颜色。
-
Tab Settings → Custom Colors. − 这将设置显示工作表名称的选项卡的颜色。
-
Title. − 这将设置工作表的名称。
Creating Sheet Objects
工作表对象是嵌入工作表中的 QlikView 数据元素。它们显示加载到 QlikView 内存中的数据。每个工作表对象都与一个数据源及其一个或多个列相关联。工作表对象从 layout 菜单中创建,如下所示。
QlikView - Scripting
脚本是 QlikView 中一个非常强大的功能,可以控制数据加载选项和数据转换。它允许使用 QlikView 中提供的许多内置函数,并在 QlikView 中的多个脚本中创建子例程。
脚本编辑器用于执行脚本。可以从文件菜单使用 Script Editor 访问它。我们还可以按 Control +E 来打开脚本编辑器窗口。它会预填充一些数据格式,这些格式被设置为要处理的数据的默认格式。例如,千位分隔符是逗号,日期采用月-日-年格式。可以根据需要将这些更改为适合传入的数据。
Script Editor Features
脚本编辑器有很多功能,可以通过脚本编辑器窗口中的菜单来访问这些功能,这个菜单不同于主菜单。以下是重要功能的列表。
Edit Menu
-
Clear Entire Script − 清除活动脚本选项卡。
-
Open Script File − 打开已保存的脚本文件。
-
Table Viewer − 用于查看正在加载数据的表格视图。
Insert Menu
-
Environment Variables − 插入标准环境变量列表。
-
Script Files − 允许浏览脚本文件并插入它们。
-
Connect/Disconnect Statement − 用于连接或断开与外部数据库的连接。
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文档。
QlikView - Aggregate Functions
QlikView的聚合函数用于生成表行的聚合数据。这些函数在创建加载脚本时应用于这些列。以下列出聚合函数的示例列表。在应用聚合函数时,我们还需要适当地应用 Group by 子句。
-
SUM 给出该列中的数值和。
-
AVG 给出该列中的数值平均值。
-
MAX 给出该列中的最大数值。
-
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文档。
Creating Sheet Object
让我们创建一个 Table Box 工作表对象,以显示由Aggregate函数生成的数据。转到菜单 Layout → New Sheet Object → Table Box 。在窗口中,我们提及表的标题和选择字段以显示。单击“确定”将显示QlikView表框中的CSV文件数据,如下所示。
Applying SUM() function
以下是加载脚本,用于查找产品线和产品类别中的销售数量和销售值的总和。
单击“确定”并按 Control+R 将数据重新加载到QlikView文档。现在,按照 Creating Sheet Objects 中给出的相同步骤,为脚本结果创建一个QlikView表框,如下所示。
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表框,如下所示。
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表框,如下所示。
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
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的内存中。
Creating Chart with Rank() Function
接下来,我们按照以下步骤创建一个图表,该图表显示了 Value 字段相对于 Product_Line 维度的排名。
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;
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 的结果,就像它在源中的顺序一样。
在完成以上步骤并单击 Finish 后,我们得到显示以下数据的表格框。
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);
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);
QlikView - Documents
QlikView 文档是包含用于数据展示和分析的所有对象的文件。它包含工作表、变量、数据模型、源数据连接详细信息,甚至在从源中提取后加载的数据。
Setting Document Background Image
我们可以使用 Wallpaper Image 复选框在 General 选项卡下设置图像作为文档的背景图像。我们使用下拉按钮选择一张图像并将它对齐在左上角位置。
选择上述选项时会出现以下屏幕。
Sheet Objects
QlikView 文档包含各种工作表对象,可以通过拖动它们在文档中的任何地方放置来移动它们。让我们创建两个工作表对象,一个 Table box 和一个 Statistics Box 。你可以按照前面的章节,我们已经在其中学习创建工作表对象。此外,我们使用 Product_sales.csv 文件,该文件在 [role="bare"] [role="bare"]https://www.tutorialspoint.com/qlikview/qlikview_aggregate_functions.htmlhere 中被提及。
可以使用“工作表”选项卡查看工作表对象详细信息。它显示文档中包含的所有工作表,并且针对每个工作表显示工作表对象。工作表和工作表对象都有唯一的 ID。我们还可以从此选项卡本身编辑这些对象的各种属性。
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 导航。以下屏幕显示了这些步骤。
接下来,我们选择“产品类别”作为构建列表框的字段。
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);
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 并选择下图所示的列。
单击 Apply 然后再单击 OK 以完成表格框的创建。将会出现以下屏幕。
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);
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);
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);
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
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,
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
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,
QlikView - Dimensions and Measures
维度和度量是基本属性,始终用于数据分析。例如,考虑分析结果 “what is the percentage change in volume of sales for each quarter?” 在这种情况下,每个季度表示维度,即季度的名称。销量百分比变化表示 Measures ,这是对维度中每个值进行的计算。以下是这些两个术语已被广泛接受的一些定义。
-
Dimension − 这是数据集中表示几个不同值的描述性字段。示例 - 月份、年份、产品 ID 等。
-
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
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
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);
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
QlikView - Generating Data
很多时候,我们需要使用正在使用的软件以编程方式生成一些数据,这些数据并非来自源文件。例如,100 个随机数或一年中第 23 周的日期。数据分析员可能需要创建此类数据,才能对没有包含这些值的已收到的数据进行一些分析。QlikView 提供了一个名为 Autogenerate 的函数,可用于此类要求。
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
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 。从“文件中的数据”选项卡中选择“表文件”选项,并浏览包含以上数据的文件。将出现以下屏幕。
单击“确定”,并按 “Control+R” 将数据加载到 QlikView 的内存中
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
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 。从“来自文件的数据”选项卡中选择“表文件”选项并浏览包含以上数据的文件。如下所示,将出现一个屏幕。
Create Table Box
选择所有可用的字段以使用菜单选项 Layout → New Sheet Objects → Table Box 创建表框,并使用菜单选项 Layout → New Sheet Objects → List Box 创建包含月份字段的列表框。此外,创建直线表图表,显示每个产品类别下的总销售额。
Data Association
现在,我们可以通过选择其中一个对象中的某些值来观察这些三个工作表对象之间的关联。让我们从月列表框中选择月份 4 月和 1 月。我们可以看到表框和图表中的值发生变化,显示相关值。
Clone Object
接下来,我们将销售总计图表克隆,生成一组不与其他工作表对象关联的新数据。右键单击图表 Sales Sum ,然后单击选项 Clone ,如下所示。QlikView 文档中会出现另一份相同图表的副本。
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 并浏览输入文件。然后我们在脚本中编辑命令以在表之间创建内部联接。
内部联接仅获取存在于两个表中的那些行。在这种情况下,获取 both Product List and Product Sales 表中可用的行。我们使用菜单 Layout → New Sheet Objects → Table Box 创建 Table Box ,在该菜单中,我们选择要显示的所有三个字段 - ProductID、ProductCategory 和 SaleAmount。
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)进行显示。
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)进行显示。
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)进行显示。
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 仅提取两个表格中都存在的那些行。在这种情况下,提取 both Product List and Product Sales 表格中可用的行。我们使用菜单 Layout → New Sheet Objects → Table Box 创建表格框。
首先,我们仅选择 productSales 表格,这为我们提供了要显示的字段 ProductID、ProductCategory 和 SaleAmount。
接下来,我们选择 ProductList 数据集,这为我们提供了字段 ProductID 和 ProductCategory。
最后,我们选择 All Tables 选项,并从所有表格中获取所有可用字段。
以下报表显示了上述步骤中的所有表格框。
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);
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);
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
QlikView - Master Calendar
在 QlikView 中,我们很多时候需要创建一个日历引用对象,它可以链接到 QlikView 内存中存在的任何数据集。例如,你有一个表,它捕获销售金额和销售日期,但没有存储对应于该日期的星期几或季度。在这种情况下,我们创建 Master Calendar ,它将提供任何数据集所需的额外日期字段,如季度、日等。
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
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
Data Model
为了找到上述警告的确切原因,我们可以使用表格查看器菜单命令 Control+T 查看数据模型。弹出以下屏幕,其中清楚地显示了循环引用。此处,RegionCountry 和 SalesRegion 之间的联接可以使用字段 Region 直接实现。它也可以通过首先使用字段 Country 转到表 ProductCountry,然后将 ProdcutID 映射到 Salesregion 来实现。