Qliksense学习⽂档—初级⼊门
本⽂主要是近期学习Qlik sense的⼀些记录与总结,内容尚未完善,适合同初学QS的童鞋⼀同探讨,后续会有补充,若发现⽂中有不正确之处,烦请联系指正
(⼀) 数据连接
1. 连接SQL Server数据库:Sever处填写“localhost”,database处填写“某个数据库名”,⼀般SQL Server 默认port是1433(视
情况更改),user name:⼀般情况为sa(视情况更改),密码:“”,其他的配置可以不⽤填
* ⼀般在这⾥想要控制⽤户表的权限,则在数据库中设置
(⼆) 常⽤函数
1. 分组函数:添加计算列的时候,⽐如:想要将价格分档的时候,⽤class:class([列名],5,‘价格分档’),第⼀个参数是要分组的
列名,第⼆个参数是指,系统⾃动判断最低的值,然后按增值5进⾏分组,第三个是给名字
2. 聚合函数:sum()、avg()、count()、min()等函数,参数是列字段,如sum(数量)
注意对于列名,在qliksense中可以直接写上名称,规范的是在名称加上左右中括号[]
3. 迭代,QS不像powerbi有sumx()之类的迭代函数,但是对于此类求法可以直接sum(数量*单价),函数中则会先计算⾏上下⽂的值再
聚合求和
4. 求占⽐:⽐如要求,某个维度上销售额占总销售额的⽐值:
sum([数量][价格])/sum(total [数量][价格])
5. 在函数内部加筛选条件,类似powerbi 中calculate()函数,QS使⽤{<>}此类符号来限定筛选条件
# 例如:求产品名称中美式中杯的销售额
sum({<;产品名称={"美式中杯"}>} 数量*价格)
等于以下的函数语句
sum(if(产品名称="美式中杯",数量*价格))
# 条件为 **不等于** 的情况
1. 当维度中存在空值时,⽐如算咖啡种类中,⾮美式的其他咖啡的销售额,若包含空值,则公式为:sum({<;咖啡种类-={"美式"}>} 数量*单价),即直接在条件前⾯加"-"
2. 当想要求⾮美式,且不包含空值的情况下的销售额,公式为:sum({<;咖啡种类={“*”}-{“美式”}>}数量*单价),当出现通配符字眼时,要⽤双引号
注意:条件中美式中杯是⽤双引号括起来,这⾥⽤单引号也是没问题的,但是建议以后条件都⽤双引号括起来,原因是如果条件中出现通配符,⽐如*时,⽤但引号将⽆法识别
6. Total,相当于powerbi中的allselected,即可以忽略外部筛选器的作⽤,单我们求销售额占⽐时,就会⽤分维度情况下的销售额除以
总的销售额,此时总的销售额,就需要⽤到total
7. all,也是总的意思,只是跟total的区别是:total 求总和会根据外部筛选条件的变化来求,⽐如销售额占⽐,维度是咖啡种类,咖啡种
类有4类,若此时只选择了两种,则total 只是这两种的和,⽽all是4类咖啡的总和
# 求各个地市咖啡的销售额占⽐
sum(数量*价格)/sum(total 数量*价格)
8. only()函数,当只有唯⼀值时,返回该值,⼤于等于2时,返回null,相当于powerbi中的hasonevalues()
9. nullcount(),统计列中空值的数量
10. div(x1,x2)除法,mod(x1,x2)求余数,但该函数的x2必须⼤于0,⽽fmod(x1,x2)则不⽤
11. fabs取绝对值
12. 设定某个图表不与其他图表联动:这个很重要,在qlik中是通过度量值来控制组件间的联动,⽐如控制销售额不受其他组件的联动,则
新建⼀个度量值:sum({1}数量价格),则只要⽤了该度量值的组件,都不会受到其他图表联动,但可以筛选其他组件
13. 当前筛选条件下的值,⽤KaTeX parse error: Expected '}', got 'EOF' at end of input: …筛选条件下的销售额:sum({} 数量价
格),如果此时想要 求出除了当前筛选项的销售额,则可以:sum({1-$} 数量价格
14. 返回上⼀步操作的值(即回退操作),sum({$1} 数量价格),⽽相反的,返回前进⼀步操作的值,sum({$_1}数量*价格)
15. QS中,我们在选择维度的时候,系统会默认隐藏掉没有选择到的维度项,若我们要显⽰所有的维度项sum(<;咖啡种类 => }数量*价格),
⼀般⽤于分析时间趋势的时候⽤到
.
重点函数:aggr ,⾼级聚合函数;当在聚合函数内嵌套聚合函数时,⼀般情况下是报错,但是⽤aggr则能实现,
如:avg(aggr(sum(数量*价格),产品名称)),求解加权平均值
17. date#(),强⾏转化为⽇期格式,⽐如有⼀个⽇期列,存放的格式为2018/Jan-1,系统⽆法识别这样的⽇期格式,这时通过date#(⽇
期,‘YYYY/MMM-D’),便能将⽇期列转化为标准的⽇期格式
18. num#(),强⾏将⽂本转化为数字格式,num(sum(数量*价格),‘00.0’)
(三) 扩展插件(主题或者图表组件)
1. 下载地址:;进⼊这个⽹址,然后选择sense,这时进⼊的页⾯会列出很多免费的插件,当然插件会根据你版本的更新,兼容性可能
出现问题。⼀般进⼊⽹址后,有些可以直接下载到zip整个包,直接解压到单击版或服务器版sense的⽬录下 ,⼀般是在extensions 的⽂件夹下⾯;⽹站还有插件使⽤⽰例的⽂件为.qvf格式的,解压到apps的⽂件夹下
(四) 属性相关设置
1. 饼图:饼图有时分类太多的情况下,⽐如原本有10类,我们将其分为5类,则系统会默认将值最⼩的5类归为⼀类;设置是在:限制-
固定值-5
2. 表格:设置数据的条件格式,if(column(4)<0,lightred(),lightgreen()),意思是:指标列的第4列的值如果⼩于0,则为亮红,否则
为亮绿;或者可以colormix1(column(4),lightred(),lightgreen()):意思是:指标列中的第四列,靠近0的值为亮红,靠近1的值为亮绿
# 表格:背景条件颜⾊设置通⽤:改动指标和维度
colormix2(
if(
rangemin(avg(total aggr(sum(数量*价格),[产品名称])),
rangemax(sum(数量价格)-avg(total aggr(sum(数量价格),[产品名称])),-avg(total aggr(sum(数量*价格),[产品名称]))))<0,
-sqrt(-(rangemin(avg(total aggr(sum(数量*价格),[产品名称])),
rangemax(sum(数量价格)-avg(total aggr(sum(数量价格),[产品名称])),-avg(total aggr(sum(数量*价格),[产品名称]))))-0)/
(0--avg(total aggr(sum(价格*数量),[产品名称])))),
sqrt((rangemin(avg(total aggr(sum(价格*数量),[产品名称])),
数据库学习入门书籍rangemax(sum(数量价格)-avg(total aggr(sum(价格数量),[产品名称])),-avg(total aggr(sum(价格*数量),[产品名称]))))-0)/
(avg(total aggr(sum(价格*数量),[产品名称]))-0))),
LightRed(),Green(),Yellow())
(五) 变量的相关应⽤
1. topn ,可以设置⼀个v_topn的变量⽤于传⼊what-if的参数,并在属性中设置限制时,传⼊topn的参数,还能结合variable 组件进⾏
灵活选择topn,实现powerbi中what-if的效果
2. variable组件中有个很好的功能,就是可以变换形式,其中有个可以转化为buttons的属性,这可以⽤来作为更灵活的筛选器,⽐如需
要选择多类别的度量值作为筛选时
(六) 通配符
1. 当度量值中设置内部筛选条件时,可以使⽤通配符进⾏模糊查,⽐如:查询产品名称中带有”⼩杯”字眼的产品的销售额,公式如
下:sum({<;产品名称={“⼩杯”}>}价格数量);这⾥使⽤到通配符“”代表任意个字符
2. 注意:上⾯的公司中,条件⼩杯⽤了双引号⽽不是单引号,当使⽤通配符时, 必须使⽤双引号才能识别,⽤单引号报错
(七) 数据脚本使⽤
1. 通过“数据加载编辑器”窗⼝可以插⼊脚本,修改脚本等
2. 通过添加分段,来更好的规范整理脚本
3. 蓝⾊字体的是关键字,通过在关键字后键⼊“ctrl+H”可以打开函数帮助窗⼝,或者点击⼯具栏中问号标志进⼊帮助模式
4. 可以通过快捷键ctrl+空格键,弹出关键字提⽰窗⼝
5. 如果要注释多⾏代码,可使⽤快捷键ctrl+k;第⼆种⽅式是在⼀段前⾯写⼊REM,则注释结束的标志是分号;第三种⽅式是⽤/和/将注
释的内容括起来
6. 将交叉表(⼆维表)转化为1维表,即逆透视,则在数据加载编辑器中,在⽣成表的脚本顶部加上语句:
Crosstable(“第⼀个字段名”(将原始表的多个列名转化成⼀个字段),“第⼆个字段名(值)”)
⽐如:crosstable('month',sales)
7. 如果在代码中有先Load 某张表,则下⾯再写代码Load…… 从哪张表取数,可以⽤resident <table>
8. 定义⽇期格式 Date#(“date”,’MM/DD/YYYY’)等
9. 删除表:drop table “tempdata”(表名)
10. 删除列:drop filed name1[name2,……]
11. Sense 中默认的join 是指outer join,也能使⽤left join ,right join ,inner join,但⽤join是将两张表进
⾏合并后⽣成⼀张表,⽽实际
中为了减少内存,可以使⽤keep,同样是可以实现连接的效果,但是内存中不是⽣成⼀张表的⽅式,可以通过规则去改变源表,同样可以,left keep,right keep ,inner keep 等
12. subfield(‘列名’,’(分隔符⽐如-)’,1(分割后的哪部分数据))
(⼋) 注意
1. 关于度量值或者变量的复⽤:
i.本来是想着写⼀个度量值,引⽤到之前写好的度量值,但复⽤不了
ii.所以想着⽤变量来复⽤,结果变量的值是静态的,不能跟随维度筛选⽽变化
2. QS 后台设置是在链接后⾯加上/qmc
3. 关于系统集成的设置需要打开 Dev Hub
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论