SubStringCount - 脚本和图表函数
SubStringCount() 用于返回指定子字符串在输入字符串文本中出现的次数。如果不匹配,则返回 0。
语法:
SubStringCount(text, sub_string)
返回数据类型: 整数
参数 | 描述 |
---|---|
text | 原始字符串。 |
sub_string | 在输入字符串 text 内可能出现一次或多次的字符串。 |
示例 | 结果 |
---|---|
SubStringCount( 'abcdefgcdxyz', 'cd' ) | 返回 2 |
SubStringCount( 'abcdefgcdxyz', 'dc' ) | 返回 0 |
示例 - SubStringCount 基本原理
概述
打开数据加载编辑器,并将下面的加载脚本添加到新选项卡。
加载脚本包含:
-
加载到名为 Example 的数据表中的数据集。
-
数据表中有一个名为 FruitSentence 的字段。
加载脚本
Example:
Load * inline [
FruitSentence
"I love eating an apple every day.Apple juice is great too!"
"Apple pie is my favorite dessert. I also enjoy apple jam."
"There is an apple and a banana on the table."
"I don't like apples as much as oranges."
"An apple a day keeps the doctor away, but two apples are even better!"
];
结果
加载数据并打开工作表。创建新表并将该字段添加为维度:
-
FruitSentence
创建以下计算维度:
-
=SubStringCount(FruitSentence, 'apple'),用于计算 apple 这个词在 FruitSentence 中出现的次数。
FruitSentence | SubStringCount(FruitSentence, 'apple') |
---|---|
An apple a day keeps the doctor away, but two apples are even better! | 2 |
Apple pie is my favorite dessert. I also enjoy apple jam. | 1 |
I don't like apples as much as oranges. | 1 |
I love eating an apple every day. Apple juice is great too! | 1 |
There is an apple and a banana on the table. | 1 |
表格在维度 FruitSentence 上按升序排序。SubStringCount 函数返回单词 apple 在每个句子中出现的次数。例如,第一句返回 2 ,因为该词在句中出现了两次。在第二句和第四句中,函数忽略单词 Apple,因为它与搜索词 apple 的大小写不匹配。
以下代码显示了如何在加载脚本中使用该函数。此示例包括一个前置加载,该加载使用 SubStringCount 函数和 Upper 函数将整个字符串转换为大写字符,然后搜索单词 APPLE。
Example:
Load *,
SubStringCount(Upper(FruitSentence),'APPLE') as SubStringCount_APPLE;
Load * inline [
FruitSentence
"I love eating an apple every day. Apple juice is great too!"
"Apple pie is my favorite dessert. I also enjoy apple jam."
"There is an apple and a banana on the table."
"I don't like apples as much as oranges."
"An apple a day keeps the doctor away, but two apples are even better!"
];
FruitSentence | SubStringCount_APPLE |
---|---|
I love eating an apple every day. Apple juice is great too! | 2 |
Apple pie is my favorite dessert. I also enjoy apple jam. | 2 |
There is an apple and a banana on the table. | 1 |
I don't like apples as much as oranges. | 1 |
An apple a day keeps the doctor away, but two apples are even better! | 2 |
示例 – SubStringCount 场景
概述
水果产品数据集包含一个含产品描述的字段。此示例计算以下水果名称在每个描述中出现的次数:apple、banana 或 orange。
打开数据加载编辑器,并将下面的加载脚本添加到新选项卡。
加载脚本包含:
-
加载到名为 Example 的数据表中的数据集。
-
数据表中有一个名为 ProductDescription 的字段。
加载脚本
Example:
Load * inline [
ProductDescription
"Fresh apple and banana smoothie."
"Organic apple, banana, and orange juice. Great for breakfast."
"A refreshing orange soda made with real orange juice."
"Banana chips with apple and cinnamon flavor."
"Delicious apple pie with a hint of cinnamon and vanilla."
"Tropical banana and orange mix for smoothies."
];
结果
加载数据并打开工作表。创建新表并将该字段添加为维度:
-
ProductDescription
创建以下计算维度:
-
=SubStringCount(ProductDescription, 'apple'),用于计算单词 apple 在字符串 ProductDescription 中的出现次数。
-
=SubStringCount(ProductDescription, 'banana'),用于计算单词 banana 在字符串 ProductDescription 中的出现次数。
-
=SubStringCount(ProductDescription, 'orange'),用于计算单词 orange 在字符串 ProductDescription 中的出现次数。
ProductDescription | SubStringCount(ProductDescription, 'apple') | SubStringCount(ProductDescription, 'banana') | SubStringCount(ProductDescription, 'orange') |
---|---|---|---|
A refreshing orange soda made with real orange juice. | 0 | 0 | 2 |
Banana chips with apple and cinnamon flavor. | 1 | 0 | 0 |
Delicious apple pie with a hint of cinnamon and vanilla. | 1 | 0 | 0 |
Fresh apple and banana smoothie. | 1 | 1 | 0 |
Organic apple, banana, and orange juice. Great for breakfast. | 1 | 1 | 1 |
Tropical banana and orange mix for smoothies. | 0 | 1 | 1 |
SubStringCount 函数的输出成功返回了每个子字符串 (apple, banana, orange) 在产品描述中出现的实例数。例如,在第一个描述中,函数返回 2,因为单词 orange 有两个实例。sub_string 参数区分大小写,因此在第二个描述中,函数不计入单词 Banana,因为它与度量表达式中的子字符串 banana 不匹配。
示例 - SubStringCount 场景解析嵌套数据
概述
IT 记录的数据集包含更改 ID 号和类别的列表。在数据表中,Categories 字段来自一个多级层次结构,该层次结构列出了顶部父类别,后接所有子类别,例如 Software > Program > Patch。此场景演示了如何使用 SubStringCount 和 SubField 函数的组合从这个参差不齐的类别层次结构中挑选出最后一个值或叶值。
打开数据加载编辑器,并将下面的加载脚本添加到新选项卡。
加载脚本包含:
-
加载到名为 Example 的数据表中的数据集。
-
数据表中有以下字段:
-
ChangeID 包含要处理的原始变更 ID。
-
Categories 包含更改类别列表。类别由分号分隔,并按从左到右的层次顺序列出,从顶部父类别到最详细的子类别。
-
加载脚本
Example:
Load * inline [
ChangeID,Categories
CHG00100,Software;Program;Patch
CHG00101,Hardware;Server
CHG00102,Hardware;Network;Router
];
结果
加载数据并打开工作表。创建新表并将这些字段添加为维度:
-
ChangeID
-
Categories
创建以下计算维度:
-
=SubStringCount(Categories,';')+1,用于计算更改层次结构中的类别级别数。
-
=SubField(Categories, ';' ,SubStringCount(Categories,';')+1),用于提取更改层次结构中最右侧的类别。
ChangeID | Categories | SubStringCount(Categories,';')+1 | SubField(Categories, ';' ,SubStringCount(Categories,';')+1) |
---|---|---|---|
CHG00100 | Software;Program;Patch | 3 | Patch |
CHG00101 | Hardware;Server | 2 | Server |
CHG00102 | Hardware;Network;Router | 3 | Router |
在本例中,SubStringCount 函数嵌套在 SubField 函数内部。第一个计算维度 SubStringCount() 计算 Categories 字段中嵌套值的数量。这可以通过计算分号 ';' 的个数,然后在结果上加 1 来确定 。然后将此输出作为 SubField 函数的第三个参数注入,以提取嵌套在 Categories 字段中的最右侧类别。
例如,查看 ChangeID 条目 CHG00100 的结果。在第一个计算维度中,SubStringCount 为 2。 然后,表达式将该结果加 1,以确定 Categories 字段有三个嵌套的类别值 Software、Program 和 Patch。然后,在第二个计算维度中,SubField 函数使用此结果提取第三个类别 Patch。