在QlikSense Cookbook一书中有这样一段加载脚本,根据这段脚本来理解 pick 和 match 函数:
eg: pick(match("Product",'Footwear', 'Tyres', 'Mountain Bikes', 'Road Bikes'),RGB(236,129,0),RGB(250,185,0), RGB(70,137,164), RGB(141,25,8)) as "Productcolor"
通过qlik sense 指导手册查到这样一个例子:
pick( N,'A','B',4 )
返回 'B',如果 N = 2
返回 4, 如果 N = 3
得出结论:pick 函数是根据N的值 返回后面第N个选择项的值 (n从1开始)
match( M, 'Jan','Feb','Mar')
返回 2,如果 M = Feb
返回 0,如果 M = Apr 或 jan (没有匹配到的情况)
得出结论:match 函数是根据传入 的M值与后面的选择项匹配,匹配上了则返回对应的选择项的对应位置的序号(从1开始),没匹配上则返回0.
Tips:传入的值和匹配项间是要求完全匹配的,即会考虑字母大小写。
即 根据对于这两个函数的进一步理解,我们得出脚本中的加载语句的意图是:
product 为 'Footwear' 设置颜色为:RGB(236,129,0)
product 为 'Tyres' 设置颜色为:RGB(250,185,0)
product 为 'MountainBikes' 设置颜色为:RGB(70,137,164)
product 为 'RoadBikes' 设置颜色为:RGB(141,25,8)
Class 函数:class(expression, interval [ , label [ , offset ]])
class( var,10 ) with var = 23,返回 '20<=x<30'
class(var,5,'value' ) with var= 23,返回 '20<= value <25'
class( var,10,'x',5 ) with var = 23,返回 '15<=x<25'
var 即为要传入的变量值 和参数expression对应 interval 为区间长度范围 label 为最后返回结果里面的变量,offset 为起始点
针对这个函数要清楚 在没有设置offset值时 默认区间起始点是从0开始的 (即offset是用来设置修改默认区间起始点的)
eg1中第一个是0<=x<10 ,10<=x<20,20<=x<30 …
eg4中是设置了offset为5 则第一个是 5<=x<15 ,15<=x<25…