# Index 스크립트 및 차트 함수

Index()는 제공된 부분 문자열의 n번째 항목의 시작 위치를 찾기 위해 문자열을 검색합니다. 세 번째 선택적 인수가 n 값을 제공하며, 생략 시 1입니다. 음수 값은 문자열 끝부터 검색합니다. 문자열 내의 위치는 왼쪽에서 오른쪽으로, 1부터 번호가 매겨집니다.

구문:

Index(text, substring[, count])

반환 데이터 유형: 정수

인수

| 인수 | 설명 |
| --- | --- |
| text | 원래 문자열입니다. |
| substring | text에서 검색할 문자열.<br><br>정보 메모텍스트에 하위 문자열이 존재하지 않으면 인덱스는 0을 반환합니다. |
| count | 검색할 substring의 발생 위치를 정의합니다. 예를 들어 값이 2이면 두 번째 발생 항목을 검색합니다. 음수 값은 문자열의 끝에서 시작합니다. |

예: 차트 표현식

| 예제 | 결과 |
| --- | --- |
| `Index( 'abcdefg', 'cd' )` | `3`를 반환합니다. |
| `Index(  'abcdabcd', 'b', 2 )` | `6`(`b`의 두 번째 발생 위치) 반환 |
| `Index( 'abcdabcd', 'b',-2 )` | `2`(끝에서부터 `b`의 두 번째 발생 위치) 반환 |
| `Left( Date, Index( Date,'-') -1` ) where `Date = 1997-07-14` | `1997`를 반환합니다. |
| `Mid( Date, Index( Date, '-', 2 ) -2, 2 )` where `Date` = `1997-07-14` | `07`를 반환합니다. |
| `Index( 'abc', 'x' )` | `0` 반환(`x`는 문자열 `abc`에 존재하지 않음) |
| `Index( 'abc', 'a', 2 )` | `0` 반환(두 번째로 `a`가 나타나지 않음) |

## 예 - 인덱스 기본 사항

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/Index.htm)

#### 차트 표현식

개요

데이터 로드 편집기를 열고 새 섹션에 아래 로드 스크립트를 추가합니다.

로드 스크립트에는 다음이 포함됩니다.

* `Example`이라는 데이터 테이블에 로드되는 데이터 집합입니다.

* 데이터 테이블의 한 필드는 `InputString`입니다.

로드 스크립트

```
Example:
Load * inline [
InputString
abcdefg
abcdabcd ];
```

결과

데이터를 로드하고 시트를 엽니다. 새 테이블을 만들고 이 필드를 차원으로 추가합니다.

* ` InputString
                                   `

다음과 같이 계산 차원을 만듭니다.

* `=Index(InputString, 'cd')`

* `=Index(InputString, 'e')`

* `=Index(InputString, 'b', -1)`

결과 테이블

| InputString | Index(InputString, 'cd') | Index(InputString, 'e') | Index(InputString, 'b', -1) |
| --- | --- | --- | --- |
| abcdabcd | 3 | 0 | 6 |
| abcdefg | 3 | 5 | 2 |

문자열 `abcdabcd`가 있는 첫 번째 행은 다음을 반환합니다.

* `3`—`cd`의 첫 번째 발생

* `0`—문자열에서 `e`를 찾을 수 없기 때문입니다.

* `6`—문자열 끝에서 시작하는 `b`의 첫 번째 발생

문자열 `abcdefg`이 있는 두 번째 행은 다음을 반환합니다.

* `3`—`cd`의 첫 번째 발생

* `5`—`e`의 첫 번째 발생

* `2`—문자열 끝에서 시작하는 `b`의 첫 번째 발생

정보 메모음수 `count` 매개 변수는 문자열을 역순으로 검색합니다. 그러나 역순으로 검색하더라도 반환되는 위치는 항상 왼쪽에서 오른쪽으로 표시됩니다.

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/Index.htm)

#### 로드 스크립트

다음 코드는 로드 스크립트에서 함수를 사용하는 방법을 보여 줍니다.

```
Example:
Load
*,
index(String, 'cd') as Index_CD,               // returns 3  in Index_CD
index(String, 'b') as Index_B,                // returns 2 in Index_B
index(String, 'b', -1) as Index_B2;           // returns 2 or 6 in Index_B2
Load * inline [
String
abcdefg
abcdabcd ];
```

결과 테이블

| 문자열 | Index\_CD | Index\_B | Index\_B2 |
| --- | --- | --- | --- |
| abcdefg | 3 | 2 | 2 |
| abcdabcd | 3 | 2 | 6 |

## 예 - Index 시나리오

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/Index.htm)

#### 차트 표현식

개요

고객 지원 센터에는 고객 이메일 메시지의 제목줄이 포함된 데이터 집합이 있습니다. 지원 센터는 `Refund`, `Complaint`, `Technical Issue`와 같이 제목 줄에 나타나는 키워드를 기준으로 이러한 이메일을 분류하려고 합니다. 제목 줄은 `EmailSubject`라는 데이터 집합의 필드에 저장됩니다.

데이터 로드 편집기를 열고 새 섹션에 아래 로드 스크립트를 추가합니다.

로드 스크립트에는 다음이 포함됩니다.

* `Example`이라는 데이터 테이블에 로드되는 데이터 집합입니다.

* 데이터 테이블의 한 필드는 `EmailSubject`입니다.

로드 스크립트

```
Example:
Load * inline [
EmailSubject
Request for a Refund - Order 12345
Technical Issue with Product XYZ
Complaint about delivery service
Follow-up on Refund Request
Technical Issue not resolved
];
```

결과

데이터를 로드하고 시트를 엽니다. 새 테이블을 만들고 이 필드를 차원으로 추가합니다.

* ` EmailSubject
                                   `

다음 계산된 차원을 만듭니다.

* `=If(Index(EmailSubject, 'Refund') > 0, 'Refund', 'Other')`는 환불과 관련된 이메일 제목 텍스트를 계산합니다.

결과

| EmailSubject | If(Index(EmailSubject, 'Refund') &gt; 0, 'Refund', 'Other') |
| --- | --- |
| 배송 서비스에 대한 불만 사항 | 기타 |
| 환불 요청에 대한 후속 조치 | 환불 |
| 환불 요청 - 주문 12345 | 환불 |
| 기술적 문제가 해결되지 않음 | 기타 |
| 제품 XYZ의 기술적 문제 | 기타 |

`Index` 함수의 출력은 문자열 `Refund`를 포함하는 모든 제목 줄을 성공적으로 식별했습니다. 이는 중첩된 함수를 사용하여 데이터를 분석하고 분류하고 사용자에게 가치를 제공하는 방법의 예입니다.