> ## Documentation Index
> Fetch the complete documentation index at: https://www.integrate.io/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# ETL: 초급 Part10: 데이터 형식 변환

> Integrate.io ETL의 표현식 편집기에서 Chararray, Long, Double, DateTime 등으로 데이터 형식을 변환하는 방법과 BAG/MAP 형 처리 시 주의해야 할 사항을 실제 사용 예시와 함께 정리해 설명합니다.

<Frame>
  <img src="https://mintcdn.com/integrateio/iVRIdUvvN5zDvCJc/images/korean-knowledge-base/novice-part10-ko/image-1.webp?fit=max&auto=format&n=iVRIdUvvN5zDvCJc&q=85&s=e7836fd92691783ecadc1076afd23abf" alt="novice-part10-ko image 1" width="756" height="696" data-path="images/korean-knowledge-base/novice-part10-ko/image-1.webp" />
</Frame>

**간단한 형 변환 1**

## **1. Chararray(String)**

용도:BAG형이나 MAP형 및 수치형 등에서 문자열형으로의 변환에 사용한다.

표현식 편집기의 사용 예 : **(chararray)** field 이름
**예외 사례: 변수 화면에서 Hexstring(16진수 문자열)을 문자열 형식으로 변환하는 방법?**
Xplenty에서는 Salesforce 객체에 있는 ID 열(AccountId 및 OwnerId)에서도 사용되는 '0052x0000034oJqAAI'와 같은 값을 문자열로 **변수 화면에서 사용하면** Hexstring(16진 수치)으로 자동 처리됩니다.
이러한 경우 Chararray 함수를 사용하여 문자열 형식으로 변환하려하면 오류가 발생하기에 Hexstring(16진 수치)의 값을 문자열형으로 정의하고, 파이프라인의 조건이나 Select 컴포넌트에서 사용하고 싶은 경우는 백슬래시 「'\[Hexstring 문자열]'」와 같이 정의하는 것으로 문자열로 변환이 가능합니다.

예) 문자열 "0052x0000034oJqAAI"를 문자열 형식의 변수로 정의하는 경우
`'\'0052x0000034oJqAAI\''`

<Frame>
  <img src="https://mintcdn.com/integrateio/iVRIdUvvN5zDvCJc/images/korean-knowledge-base/novice-part10-ko/image-2.webp?fit=max&auto=format&n=iVRIdUvvN5zDvCJc&q=85&s=9993c4dffe1ca6aaaa0f1558b49333ca" alt="novice-part10-ko image 2" width="987" height="388" data-path="images/korean-knowledge-base/novice-part10-ko/image-2.webp" />
</Frame>

## **2. Int형**

문자열 형식의 숫자 데이터를 숫자 형식으로 변환

표현식 편집기의 사용 예 : **(int)** field 이름

## **3. Long타입**

문자열 형식의 숫자 데이터를 숫자 형식으로 변환

표현식 편집기의 사용 예 : **(long)** field 이름

## **4. Float 타입**

문자열 형식의 숫자 데이터를 숫자 형식으로 변환

표현식 편집기의 사용 예 : **(float)** field 이름

## **5. Double 형**

문자열 형식의 숫자 데이터를 숫자 형식으로 변환

표현식 편집기의 사용 예 : **(double)** field 이름

## **6. 수치로 변환, 수치로 변환 불가의 경우는 기본값을 반환**

ParseIntOrDefault(field\_name, 수치로 변환 불가의 경우는 기본값 - Int 형)
ParseLongOrDefault(field\_name, 수치로 변환 불가의 경우는 기본값 - Long 형)
ParseFloatOrDefault(field\_name, 수치로 변환 불가의 경우는 기본값 -Float형)
ParseDoubleOrDefault(field\_name, 수치로 변환 불가의 경우는 기본값 - Double형)

표현식 편집기의 사용 예 :

ParseIntOrDefault('아아아아',1) ==> 1(Int형) 반환 \* 숫자로 **변환 불가능**한 문자열이기 때문
ParseIntOrDefault('300',1) ==> 300(Int 형) 반환 \* 숫자로 **변환 가능**한 문자열이기 때문

**간단한 형 변환 2**

## **1. Map형**

JSON 등의 Key-Value형태의 데이터를 가진 데이터 형식입니다.다음과 같은 데이터를 읽어들일때 사용됩니다.

area : \*\*\{
id : "130",
name : "도쿄"
}
\*\*

표현식 편집기의 사용 예 :

**TOMAP**('id','130','name','도쿄') ==> \{name=도쿄, id=130} 을 반환

***

**MAP형으로부터 데이터를 취득하는 방법?**
Field1#'키명칭'이라고 지정하면, 키에 대응하는 값을 취득할 수 있습니다.

표현식 편집기의 사용 예:

**TOMAP**('id','130','name','도쿄')#'id' ==> 130 을 반환

## **2. Tuple형**

여러개의 필드가 배열 형식으로 된 데이터형입니다.

표현식 편집기의 사용 예:

**TOTUPLE**('001,TV,Electronics') ==> (001,TV,Electronics) 을 반환

## **3. Bag형**

표현식 편집기의 사용 예:

**TOBAG** ('001','TV','Electronics') ==> \{(001),(TV),(전자)} 을 반환
그외의 **형 변환**

## **1. BagToString**

Bag에서 String으로 변환

표현식 편집기 사용 예 :

BagToString(JsonStringToBag('\[1,2,3]'),';') ==> '1;2;3' String형으로 반환

# 이 예제에서는 문자열을 Bag 형식으로 편의적으로 변환하기 위해 JsonStringToBag을 사용

## **2. BagToTuple**

Bag에서 Tuple로 변환

표현식 편집기 사용 예:

BagToTuple(JsonStringToBag('\[1,2,3]')) ==> (1,2,3) 튜플형으로 반환

**Tuple형의 일부 배열의 값을 얻는 방법?**

표현식 편집기 사용 예제:

BagToTuple(JsonStringToBag('\[1,2,3]')).\$0 ==> 1 첫번째 값을 반환

## **3. MapToBag**

Map에서 Bag로 변환

표현식 편집기 사용 예 :

MapToBag(TOMAP('a',1,'b',2,'c',3)) ==> \{(\[value#1,key#a]),(\[value#2,key#b]),(\[value#3,key#c])} Bag형을 반환
**참고:Xplenty로 취급할 수 있는 데이터형에 대해서**

사용 가능한 형은 [공식 페이지](https://www.integrate.io/docs/using-expressions-in-xplenty/)를 참고하세요.

# 2020년 8월 16일 현재, Xplenty에서는 Date형은 없습니다.

<Frame>
  <img src="https://mintcdn.com/integrateio/iVRIdUvvN5zDvCJc/images/korean-knowledge-base/novice-part10-ko/image-3.webp?fit=max&auto=format&n=iVRIdUvvN5zDvCJc&q=85&s=9b5f28c30fd9b3928c0896ad84bdfe24" alt="novice-part10-ko image 3" width="1200" height="1185" data-path="images/korean-knowledge-base/novice-part10-ko/image-3.webp" />
</Frame>

**보다 실용적인 데이터 처리**

## **1. BAG형의 필드**

Flatten 함수를 사용합니다. Bag형의 필드가 가지는 데이터 수에 근거해 레코드가 나뉘어집니다.
예를 들어 다음과 같은 데이터를 가진 BAG 유형 필드의 경우 한 레코드가 두 개의 레코드로 나뉩니다.

bagData = \{
\[\{"id":"001","price":"200"}],
\[\{"id":"002","price":"500"}]
}

# Bag형의 데이터를 레코드로 나누기

**Flatten**(bagData)

# 결과

\{"id":"001","price":"200"}  ==> Rec#1
\{"id":"002","price":"500"}  ==> Rec#2

## **2. BAG 형의 문자열을 가진 필드 처리**

이미 처리 대상의 필드의 데이터형이 BAG형의 경우는 이 처리는 필요 없지만, String형의 경우에는 아래와 같은 처리가 필요합니다.

test = \[\{"id":"001","price":"200"}]

# String 형의 JSON문자열을 BAG형으로 변환

test2 = **JsonStringToBag**(test) ==> \{(\{"id":"001","price":"200"})}

이제 필드를 Flatten 함수로 처리하면 다음과 같은 JSON 문자열이 됩니다.

test3 = **Flatten**(test2)  ==> \{"id":"001","price":"200"}

마지막으로 **JsonStringToMap** 함수를 사용하여 test 필드 값의 각 키를 얻을 수 있습니다.

JsonStringToMap(test3)#'id'    ==> 001
JsonStringToMap(test3)#'price' ==> 200
