QlikView学习笔记
1.脚本关键字
1.1 LOAD
LOAD 关键字类似
SQL
中select ,用于字段选择// 从Employees 中加载字段EmployeeID,Address,BirthDate,City 并将其命名为Employee 的临时表 Employee: LOAD EmployeeID, Address, BirthDate, City FROM Employees.xlsx (ooxml, embedded labels, table is Sheet1);
1.2 Resident
resident 用于对临时表的引用
Employee: LOAD EmployeeID, Address, BirthDate, City FROM Employees.xlsx (ooxml, embedded labels, table is Sheet1); // 防止两表做关联 NoConcatenate Employee1: LOADEmployeeID, Address, BirthDate, City&'AA' Resident Employee; drop table Employee;
resident 引用临时表,
NoConcatenate
防止两表串联 ,&用于字段串拼接
1.3 qualify
在
QlikView
中只有当两个表中的字段名称完全一样时才能关联,其他情况则放弃关联。加入QUALIFY 可以防止表进行关联,比如一次加载好多表,不想出现相同字段进行关联
QUALIFY *; Employee: LOADEmployeeID, Address, BirthDate, City FROM Employees.xlsx (ooxml, embedded labels, table is Sheet1); Order: LOAD EmployeeID, CustomerID, OrderDate FROM Orders.xlsx (ooxml, embedded labels, table is Sheet1);
QUALIFY *; 加入QUALIFY * 生成两张单独的表,字段名加了表名前缀,加入
UNQUALIFY
可以指明关联的字段
1.4 unqualify
QUALIFY *;
UNQUALIFY EmployeeID;
Employee:
LOADEmployeeID, Address, BirthDate, City
FROM
Employees.xlsx
(ooxml, embedded labels, table is Sheet1);
Order:
LOAD EmployeeID, CustomerID, OrderDate
FROM
Orders.xlsx
(ooxml, embedded labels, table is Sheet1);
指明使用
EmployeeID
进行关联,运行结果如下图
1.5 concatenate
类似于SQL
中UNION 但有两点不同: 第一点,无论表格是否具有相同的字段名,Concatenate 前缀都可使用;第二点,不会删除相同的记录。如果在 LOAD 语句中使用 DISTINCT 谓语,结果表将会不同。添加到表中的任何数据也会变得不同,不管数据是串联还是联接。
不推荐使用
1.6 NoConcatenate
NoConcatenate
前缀强制将两个使用相同字段集的加载表格处理为两个单独的内部表格(当它们以其他方式自动串联时)。
可以使用QUALIFY *代替
1.7 Mapping
使用原始LOAD加载的数据
region_country:
LOAD Region, Country
FROM
region_country.xlsx
(ooxml, embedded labels, table is Sheet1);
创建映射表,该前缀可置于 Load 或 Select (SQL) 语句之前,并将正在加载的语句的结果存储为映像表。映像表必须有两个字段,第一个字段包含比较值,第二个字段包含所需的映射值。映射表暂时存储在内存中,执行脚本后将自动删除。 使用 map … using 语句、rename field 语句、Applymap()
函数或 Mapsubstring()
函数可访问映像表的内容。
MapCountryRegion:
Mapping
LOAD Region, Country
FROM
region_country.xlsx
(ooxml, embedded labels, table is Sheet1);
使用Mapping 加载的数据
在一定程度上可以替代关联语句,但是只局限于 映射表只有两个字段,而且当表一个key有多个映射时,会默认只取一个映射。会导致数据缺失。
1.8ApplyMap
使用映射表
sales:
LOAD ProductID, ProductCategory, Region, SaleAmount,ApplyMap('MapCountryRegion',Region,'Unknown') as country
FROM
sales_regions.xlsx
(ooxml, embedded labels, table is Sheet1);
如果不使用映射表,使用连接的做法是这样
sales:
LOAD ProductID, ProductCategory, Region, SaleAmount
FROM
sales_regions.xlsx
(ooxml, embedded labels, table is Sheet1);
LEFT JOIN
LOAD Region, Country
FROM
region_country.xlsx
(ooxml, embedded labels, table is Sheet1);
由于关联的 region 键是多对多的关系,导致数据发散,在关联条件是一对一或者多对一的情况下,使用Mapping是可以替代left join 进行映射的,但是存在的问题是Mapping 会自动舍弃一些数据,比如一个key 对应多个value,会只保留第一个key value
1.9 union
- 字段名一致自动进行UNION
1.10 left join
- 虽然
QLIKVIEW
会根据字段相同来进行关联,但是建议显示的表示关联
1.11 EXIT Script
- 打断点 脚本执行到EXIT Script 中止
1.12 peek()
QlikView
中的peek()函数用于从以前的记录中获取字段的值,并在计算中使用它。
monthly_salse:
LOAD * Inline
[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];
NoConcatenate
LOADMonth,[Sales Volume],peek('Sales Volume') as Prevvolume,([Sales Volume]-peek('Sales Volume'))/peek('Sales Volume') as Diffrence
Resident monthly_salse;
DROP TABLE monthly_salse;
load * inline 是创建自建数据,一般我们用来创建维度 peek() 获取上月数据,可以用来计算 参考资料 https://www.tutorialspoint.com/qlikview/qlikview_peek_function.htm
1.13 store into
用于保存qvd文件
1.14 filename()
获取文件的名称,在一些特出情况下好用,比如要获取文件的最大更新时间
loadmax(mid(FileName(),6,6)) as max_Time
from .\test_*.xlsx;
let v_today = peek('max_Time');
*
通配符
2.图表函数
# 如果筛选框没有选择年月 默认为当月数据,否则以筛选框数据为准 计算加班
=if(isnull(GetFieldSelections(年月))=-1,
sum({<年月={'$(v_Today_Moth)'}>}正常加班),
sum({<年月={$(=$(v_time))}>}正常加班)
)
注意:GetFieldSelections() 代表的是鼠标点击传值,
$(=$(v_time))
这个写法是表示引用计算表达式,sum({<年月-={’$(v_Today_Moth)’}>}正常加班),注意不等于在QlikView图表函数中表示的是
-=
;sum({<年月={‘202109’,‘202110’}>}正常加班)
3.权限控制
qlikview 使用Excel文件控制权限,权限级别份页签和字段权限
- 页签权限设置
- 字段权限设置
设置权限步骤:
- 设置–>文档属性–>打开 将基于区域访问权限的初始数据减少 严格排除 勾选
- 设置页签权限
脚本中设置权限
字段权限设置
SECTION Access; star is*; LOAD ACCESS, NTNAME, OMIT FROM [.\权限.xlsx] (ooxml, embedded labels, table is colum); SECTION Application;
OMIT代表的是设置权限的字段,如果不需要对字段设置权限,默认使用OMIT,保持设置字段的sheet页只有表头
页签权限设置
Sheet: LOAD //USERID, upper(NTNAME) as NTNAME, ITO_KPI, FROM [.\权限.xlsx] (ooxml, embedded labels, table is Sheet1);
ITO_KPI代表的是设置页签的名字,要设置多个页签直接后面加
权限Excel 样式
- 设置页签的权限
- 设置字段的权限
注意如果要设置用户拥有字段的所有权限可以设置为
*
,但是设置为*
的前提是要让Excel知道*
总共有几种,所以一般建议admin ,将所有情况进行遍历,其他用户如果要拥有所有权限设置为*
4.导出到Excel
导出Excel适用于报表之间引用,逻辑复杂,直接导出在另一个报表中引用(适用与图表中很多计算,无法再脚本中直接 store into 保存),在工具–>编辑模块 中编辑 VB脚本
sub Export2ExcelvPath =".\test"set obj = ActiveDocument.GetSheetObject("CH25")obj.ExportEx vPath&"\FCST_VBA_TEST.csv",1
end sub
一般建议不要再图表中进行过多运算,运算都在脚本中进行计算,这样便于复用
5.常用快捷键
Ctrl + E
: Edit 编辑脚本Ctrl + L
: Load加载数据Ctrl + T
: Table 查看数据模型Ctrl + G
: design gridCtrl + M
: edit moduleCtrl + Alt + V
: variable overviewCtrl + Alt + E
: expression overviewCtrl + Alt + S
: sheet propertiesCtrl + Alt + D
: document properties
QlikView学习笔记相关推荐
- PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call
您的位置 首页 PyTorch 学习笔记系列 PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 发布: 2017年8月4日 7,195阅读 ...
- 容器云原生DevOps学习笔记——第三期:从零搭建CI/CD系统标准化交付流程
暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...
- 容器云原生DevOps学习笔记——第二期:如何快速高质量的应用容器化迁移
暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...
- 2020年Yann Lecun深度学习笔记(下)
2020年Yann Lecun深度学习笔记(下)
- 2020年Yann Lecun深度学习笔记(上)
2020年Yann Lecun深度学习笔记(上)
- 知识图谱学习笔记(1)
知识图谱学习笔记第一部分,包含RDF介绍,以及Jena RDF API使用 知识图谱的基石:RDF RDF(Resource Description Framework),即资源描述框架,其本质是一个 ...
- 计算机基础知识第十讲,计算机文化基础(第十讲)学习笔记
计算机文化基础(第十讲)学习笔记 采样和量化PictureElement Pixel(像素)(链接: 采样的实质就是要用多少点(这个点我们叫像素)来描述一张图像,比如,一幅420x570的图像,就表示 ...
- Go 学习推荐 —(Go by example 中文版、Go 构建 Web 应用、Go 学习笔记、Golang常见错误、Go 语言四十二章经、Go 语言高级编程)
Go by example 中文版 Go 构建 Web 应用 Go 学习笔记:无痕 Go 标准库中文文档 Golang开发新手常犯的50个错误 50 Shades of Go: Traps, Gotc ...
- MongoDB学习笔记(入门)
MongoDB学习笔记(入门) 一.文档的注意事项: 1. 键值对是有序的,如:{ "name" : "stephen", "genda" ...
- NuGet学习笔记(3) 搭建属于自己的NuGet服务器
文章导读 创建NuGetServer Web站点 发布站点到IIS 添加本地站点到包包数据源 在上一篇NuGet学习笔记(2) 使用图形化界面打包自己的类库 中讲解了如何打包自己的类库,接下来进行最重 ...
最新文章
- 大话软件管理之-----yum
- 带有JSON的杰克逊:无法识别的字段,未标记为可忽略
- spring源码学习一
- Silverlight 2 RTW中ToolTipService.ToolTip不继承父节点的DataContext的问题
- 在Activity的Title中加入进度条
- ecshop在PHP 5.4以上版本各种错误问题处理
- 笔记-JavaWeb学习之旅2
- Eigen入门之密集矩阵 2-- Matrix及Vector的计算方法
- ogg oracle 测试kafka_基于OGG的Oracle与Hadoop集群/kafka准实时同步
- 虚拟机网络无法连接问题解决(超简单)
- android程序的建立,创建第一个Android程序 HelloWorld
- Scala学习——隐式转换
- HSP java坦克大战
- 【f1c200s/f1c100s】全志f1c200s开发板设计(含原理图和PCB)
- Go 语言开发工具 LiteIDE x22 发布
- Codeforces1457 C. Bouncing Ball(思维+dp)
- 娄底环宇中等职业技术学校
- PIV实验流场流速云图(MALAB contour函数用法)
- MATLAB从0开始搭建简单的GUI界面
- 千耘导航QY210pro|供不应求的星导航
热门文章
- 微信摇一摇插件ios_iOS开发——全局响应MotionEvent(微信摇一摇)
- AD20 制作 Logo
- python模块化 面向对象,Python学习记录4-面向对象,,OOP思想以模块化思
- JDBC驱动与MySQL版本不兼容的问题
- PTB-XL大型的心电图数据集
- 使用阿里云OSS上传本地资源(图片、文件、音频、视频)
- springboot jedis配置以及集群(第三篇) ubuntu16实现redis集群
- qt安装报错:下载“http://download.qt.io/online/xxxxx/_meta.7z“server replied: Bad Gateway出现网络错误
- 读 PHP - Pimple 源码笔记(下)
- c语言.jpg图片转成数组_电脑使用图片转换器打开heic图片方法