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')은 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를 반환합니다. 두 번째와 네 번째 문장에서 함수는 검색어 apple의 대/소문자가 일치하지 않으므로 Apple이라는 단어를 무시합니다.
다음 코드는 로드 스크립트에서 함수를 사용하는 방법을 보여 줍니다. 이 예에는 SubStringCount 함수와 Upper 함수를 함께 사용하여 전체 문자열을 대문자로 변환한 다음 APPLE이라는 단어를 검색하는 선행 LOAD가 포함되어 있습니다.
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, or 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')은 문자열 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를 반환합니다. sub_string 인수는 대/소문자를 구분하므로 두 번째 설명에서 함수는 측정값 표현식의 하위 문자열 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을 더하여 결정됩니다. 그런 다음 이 출력은 SubField 함수의 세 번째 매개 변수로 주입되어 Categories 필드에 중첩된 가장 오른쪽 범주를 추출합니다.
예를 들어, ChangeID 항목 CHG00100에 대한 결과를 검토합니다. 첫 번째 계산 차원에서 SubStringCount는 2입니다. 그런 다음 표현식은 해당 결과에 1을 더하여 Categories 필드에 세 개의 중첩된 범주 값(Software, Program, Patch)이 있음을 확인합니다. 두 번째 계산 차원에서 SubField 함수는 이 결과를 사용하여 세 번째 범주인 Patch를 추출합니다.