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(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 右端开始的第三个子字符串。 |
示例:使用 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 选项用于避免创建重复记录。