SubStringCount - スクリプトおよびチャート関数
SubStringCount()は、指定された文字列テキストに、指定されたサブストリングが出現する回数を返します。出現しない場合は、0 を返します。
構文:
SubStringCount(text, sub_string)
戻り値データ型: 整数
引数 | 説明 |
---|---|
text | 元の文字列。 |
sub_string | text入力文字列に 1 回以上現れる文字列。 |
例 | 結果 |
---|---|
SubStringCount( 'abcdefgcdxyz', 'cd' ) | 2 を返します |
SubStringCount( 'abcdefgcdxyz', 'dc' ) | 0 を返します |
例 - SubStringCount の基本
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
-
「Example」というデータ テーブルにロードされるデータセット。
-
データ テーブル内の 1 つの項目は 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')、FruitSentence に apple という単語が何回出てくるかを計算します。
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 回出現するため、2 が返されます。2 番目と 4 番目の文では、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 のシナリオ
概要
果物製品のデータセットには、製品の説明を示す項目があります。この例では、リンゴ、バナナ、オレンジという果物の名前がそれぞれの説明文に登場する回数を計算します。
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
-
「Example」というデータ テーブルにロードされるデータセット。
-
データ テーブル内の 1 つの項目は 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')、文字列 ProductDescription 中の単語 apple の出現回数を計算します。
-
=SubStringCount(ProductDescription, 'banana')、文字列 ProductDescription 中の単語 banana の出現回数を計算します。
-
=SubStringCount(ProductDescription, 'orange')、文字列 ProductDescription 中の単語 orange の出現回数を計算します。
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) が製品説明文中に出現するインスタンス数を正常に返します。例えば、最初の説明では、orange という単語のインスタンスが 2 つあるため、関数は 2 を返します。引数 sub_string は大文字と小文字を区別するため、2 番目の説明では、Banana という単語はメジャー式の banana という部分文字列と一致しないため、この関数はカウントしません。
例 - SubStringCount のシナリオ解析ネスト データ
概要
IT レコードのデータセットには、変更 ID 番号とカテゴリーのリストが含まれています。データ テーブルでは、Categories の項目は、親カテゴリーを先頭に、すべてのサブカテゴリーがフォローされるマルチレベルの階層構造になっています。このシナリオでは、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 を足すことで決定されます。この出力は、Categories 項目にネストされている右端のカテゴリーを抽出するために、SubField 関数の 3 番目のパラメータとして注入されます。
例えば、ChangeID エントリー CHG00100 の結果を見てみましょう。計算された最初の軸では、SubStringCount は 2 です。式はこの結果に 1 を追加して、Categories 項目には 3 つのネストされたカテゴリー値、Software、Program、および Patch があることを判断します。次に、SubField 関数は、計算された 2 つ目の軸で、この結果を使用して 3 つ目のカテゴリー、Patch を抽出します。