SubField - 脚本和图表函数在该页面上
SubField() 用于从父字符串字段提取子字符串组成部分,其中原始记录字段由两个或更多用分隔符分隔的部分构成。
Subfield() 函数可用于(例如)从由全名、路径名的组成部分构成的记录的列表中提取名字和姓氏,或用于从逗号分隔的表格中提取数据。
如果在忽略可选 field_no 参数的 LOAD 语句中使用 Subfield() 函数,则会为每个子字符串生成一个完整记录。如果使用 Subfield() 加载多个字段,则会创建所有组合的 Cartesian 产品。
语法:
SubField( text,
delimiter[, field_no ])
返回数据类型: 字符串
参数:
参数
text
原始字符串。可以是硬编码文本、变量、货币符号扩展或其他表达式。
delimiter
输入 text 中将字符串分成各组成部分的字符。
field_no
可选的第三个参数是整数,用于指定返回父字符串 text 的哪些子字符串。使用值 1 可以返回第一个子字符串,使用值 2 可以返回第二个字符串,以此类推。
如果 field_no 为正值,子字符串是自左至右提取的。
如果 field_no 为负值,子字符串是自右至左提取的。
提示注释 可以使用 SubField() 代替复杂的函数组合(例如 Len() 、Right() 、Left() 、Mid() )和其他字符串函数。
示例:使用 SubField 的脚本和图表表达式
示例 - 脚本和图表表达式
基本示例
SubField(S, ';' ,2)
如果 S 为 'abc;cde;efg' ,则返回 'cde' 。
SubField(S, ';' ,1)
如果 S 为空字符串,则返回一个空字符串。
SubField(S, ';' ,1)
如果 S 为 ';' ,则返回一个空字符串。
假设您有一个变量,其值为路径名 vMyPath ,
Set vMyPath=\Users\ext_jrb\Documents\Qlik\Sense\Apps; 。
在文本和图像图表中,可添加度量,诸如:SubField(vMyPath, '\',-3 ) ,结果返回 'Qlik ',因为它是从变量 vMyPath 右端开始的第三个子字符串。
脚本示例 1
加载脚本
在数据加载编辑器中加载以下脚本表达式和数据。
FullName:
LOAD * inline [
Name
'Dave Owen'
'Joe Tem'
];
SepNames:
Load Name,
SubField(Name, ' ',1) as FirstName,
SubField(Name, ' ',-1) as Surname
Resident FullName;
Drop Table FullName;
创建可视化
在 Qlik Sense 工作表中创建以 Name 、FirstName 和 SurName 为维度的表格可视化。
结果
Name
FirstName
SurName
Dave Owen
Dave
Owen
Joe Tem
Joe
Tem
解释
SubField() 函数的作用是将 field_no 参数设置为 1,从而提取 Name 的第一个子字符串。由于 field_no 的值为正值,因此从左到右的顺序用于提取子字符串。第二个函数调用通过将 field_no 参数设置为 -1 来提取第二个子字符串,该字段按照从右到左的顺序提取子字符串。
脚本示例 2
加载脚本
在数据加载编辑器中加载以下脚本表达式和数据。
LOAD DISTINCT
Instrument,
SubField(Player,',') as Player,
SubField(Project,',') as Project;
Load * inline [
Instrument|Player|Project
Guitar|Neil,Mike|Music,Video
Guitar|Neil|Music,OST
Synth|Neil,Jen|Music,Video,OST
Synth|Jo|Music
Guitar|Neil,Mike|Music,OST
] (delimiter is '|');
创建可视化
在 Qlik Sense 工作表中创建表格可视化,将 Instrument 、Player 和 Project 作为维度。
结果
Instrument
Player
Project
Guitar
Mike
Music
Guitar
Mike
Video
Guitar
Mike
OST
Guitar
Neil
Music
Guitar
Neil
Video
Guitar
Neil
OST
Synth
Jen
Music
Synth
Jen
Video
Synth
Jen
OST
Synth
Jo
Music
Synth
Neil
Music
Synth
Neil
Video
Synth
Neil
OST
解释
此示例演示了如何使用 Subfield() 函数的多个实例,每个实例都不考虑 field_no 参数,其中相同的 LOAD 语句会创建所有组合的 Cartesian 产品。DISTINCT 选项用于避免创建重复记录。