# SubField 스크립트 및 차트 함수

SubField()는 부모 문자열 필드에서 부분 문자열 성분을 추출하는 데 사용됩니다. 여기서 원래 레코드 필드는 구분 기호로 분리된 둘 이상의 부분으로 구성됩니다.

Subfield() 함수는 전체 이름으로 구성된 레코드 목록에서 이름과 성을 추출하거나 경로 이름의 구성 요소 부분 또는 쉼표로 구분된 테이블에서 데이터를 추출하는 등의 작업에 사용할 수 있습니다.

LOAD 문에서 옵션 field\_no 파라메타를 생략하고 Subfield() 함수를 사용하면 각 부분 문자열에 대해 전체 레코드 하나가 생성됩니다. Subfield()를 사용하여 여러 필드를 로드하는 경우는 모든 조합의 카티션 곱이 생성됩니다.

구문:

SubField(text, delimiter[, field\_no ])

반환 데이터 유형: 문자열

인수

| 인수 | 설명 |
| --- | --- |
| text | 원래 문자열입니다. 이 값은 하드 코딩된 텍스트, 변수, 달러 기호 확장 또는 다른 표현식이 될 수 있습니다. |
| delimiter | 문자열을 구성 성분으로 나누는 입력 text 내의 문자열입니다. |
| field\_no | 세 번째 옵션 인수는 부모 문자열인 text의 부분 문자열이 반환되도록 지정하는 정수입니다. 첫 번째 부분 문자열을 반환하려면 값 1, 두 번째 부분 문자열을 반환하려면 2를 사용합니다.<br><br><ul> <li><span>field_no</span>가 양수 값이면 부분 문자열이 왼쪽에서 오른쪽으로 추출됩니다.</li> <li><span>field_no</span>가 음수 값이면 부분 문자열이 오른쪽에서 왼쪽으로 추출됩니다.</li> </ul> |

팁 메모 SubField()는 Len(), Right(), Left(), Mid() 및 기타 문자열 함수를 복잡하게 조합한 함수를 대신하여 사용할 수 있습니다.

예: 차트 표현식

| 예제 | 결과 |
| --- | --- |
| `SubField( 'abc;cde;efg',   ';' ,2 )` | `cde`를 반환합니다. |
| `SubField( Null,   ';' ,1 )` | 빈 문자열을 반환합니다. |
| `SubField( ';',   ';' ,1 )` | 빈 문자열을 반환합니다. |
| `SubField( '\Users\ext_jrb\Documents\Qlik\Sense\Apps;','\',-3 )` | `Qlik`를 반환합니다. |

## 예 - SubField 기본 사항

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

#### 차트 표현식

개요

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

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

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

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

로드 스크립트

```
Example:
Load * inline [
Name
Dave Owen
Joe Tem
];
```

결과

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

* ` Name
                                   `

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

* `=SubField(Name, ' ',1)`은 공백 `' '` 구분 기호 앞에 나타나는 첫 번째 하위 문자열을 추출합니다.

* `=SubField(Name, ' ',-1)`은 문자열의 오른쪽부터 시작하여 공백 `' '` 구분 기호 앞에 나타나는 첫 번째 하위 문자열을 추출합니다.

Results table

| Name | SubField(Name, ' ',1) | SubField(Name, ' ',-1) |
| --- | --- | --- |
| Dave Owen | Dave | Owen |
| Joe Tem | Joe | Tem |

`SubField()` 함수는 `field_no` 인수를 1로 설정하여 `Name`의 첫 번째 하위 문자열을 추출합니다. `field_no`의 값이 양수이므로 하위 문자열을 추출하기 위해 왼쪽에서 오른쪽 순서를 따릅니다. 두 번째 함수 호출은 `field_no` 인수를 -1로 설정하여 두 번째 하위 문자열을 추출합니다. 이는 오른쪽에서 왼쪽 순서로 하위 문자열을 추출합니다.

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

#### 로드 스크립트

로드 스크립트

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

```
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;
```

결과

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

* `Name`
* `FirstName`
* `SurName`

Results table

| Name | FirstName | SurName |
| --- | --- | --- |
| Dave Owen | Dave | Owen |
| Joe Tem | Joe | Tem |

설명

`SubField` 함수는 `field_no` 인수를 1로 설정하여 첫 번째 하위 문자열 `Name`을 추출합니다. `field_no`의 값이 양성이므로 하위 문자열을 추출하기 위해 왼쪽에서 오른쪽 순서를 따릅니다. 두 번째 함수 호출은 `field_no` 인수를 -1로 설정하여 두 번째 하위 문자열을 추출합니다. 이는 오른쪽에서 왼쪽 순서로 하위 문자열을 추출합니다.

## 예 - SubField 시나리오

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

#### 차트 표현식

개요

제품 데이터 집합에는 제품 테이블이 포함되어 있습니다. 테이블의 각 제품에는 제품 영역을 식별하는 태그 필드가 있습니다. 제품에는 태그 필드에 여러 값이 있을 수 있습니다. 예를 들어, 위젯 A에는 전자 제품, 가젯, 홈이라는 태그가 있습니다. 태그 값은 구분 기호로 파이프(|) 문자로 구분됩니다. 이 예에서는 `SubField` 함수를 사용하여 특정 태그 값을 추출하는 방법을 보여 줍니다.

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

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

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

* 데이터 테이블의 필드는 다음과 같습니다.

  * `ProductID`

  * `ProductName`

  * `Tags`

  * `Sales`

로드 스크립트

```
Example:
Load  *
INLINE [
ProductID, ProductName, Tags, Sales
1, Widget A, Electronics|Gadgets|Home, 150
2, Widget B, Electronics|Accessories, 200
3, Widget C, Furniture|Home, 100
4, Widget D, Gadgets|Accessories, 250
];
```

결과

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

* ` ProductID
                                   `

* `ProductName`

* `Tags`

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

* `=SubField(Tags, '|',1)`은 `Tags` 필드에서 첫 번째 항목을 추출합니다.

* `=SubField(Tags, '|',2)`는 `Tags` 필드에서 두 번째 항목을 추출합니다.

* `=SubField(Tags, '|',3)`, `Tags` 필드에서 세 번째 항목을 추출합니다.

Results table

| ProductID | ProductName | Tags | SubField(Tags, '\|', 1) | SubField(Tags, '\|', 2) | SubField(Tags, '\|', 3) |
| --- | --- | --- | --- | --- | --- |
| 1 | Widget A | Electronics\|Gadgets\|Home | Electronics | Gadgets | Home |
| 2 | Widget B | Electronics\|Accessories | Electronics | Accessories | - |
| 3 | Widget C | Furniture\|Home | Furniture | Home | - |
| 4 | Widget D | Gadgets\|Accessories | Gadgets | Accessories | - |

`SubField` 함수의 출력은 원래 `Tags` 문자열의 관련 위치에서 태그를 성공적으로 반환했습니다.

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

#### 로드 스크립트

로드 스크립트

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

```
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 '|');
```

결과

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

* Instrument

* Player

* Project

Results table

| 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 문 내에서 모든 조합의 카티션 곱을 만듭니다. DISTINCT 옵션은 중복 레코드 만들기를 방지하는 데 사용됩니다.