> ## 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 형 처리 시 주의해야 할 사항을 실제 사용 예시와 함께 정리해 설명합니다.

Xplenty에서는 표현식 편집기 를 사용하여 데이터 형식을 변환할 수 있습니다. 그러나 변환 방법은 변환할 데이터 형식에 따라 다르므로 다음을 참고하여 활용하십시오.\<!-- notionvc: 07683504-5fc7-4b14-be14-a3315228228a -->

\[

<Frame>
  <img src="https://mintcdn.com/integrateio/8_YWxtQNutL7liVJ/images/creating-packages/novice-part10-ko/image-1.webp?fit=max&auto=format&n=8_YWxtQNutL7liVJ&q=85&s=178ad22db3e4ff766eef6803fea3b568" alt="novice-part10-ko image 1" width="756" height="696" data-path="images/creating-packages/novice-part10-ko/image-1.webp" />
</Frame>

]\([https://cdn.filestackcontent.com/auto\_image//compress/cache=expiry:max/CXI6sge7SnWHlk07bgDG](https://cdn.filestackcontent.com/auto_image//compress/cache=expiry:max/CXI6sge7SnWHlk07bgDG))
**간단한 형 변환 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/8_YWxtQNutL7liVJ/images/creating-packages/novice-part10-ko/image-2.webp?fit=max&auto=format&n=8_YWxtQNutL7liVJ&q=85&s=af006c722663d0085531bdad90040dd3" alt="novice-part10-ko image 2" width="987" height="388" data-path="images/creating-packages/novice-part10-ko/image-2.webp" />
</Frame>

]\([https://cdn.filestackcontent.com/auto\_image//compress/cache=expiry:max/mLo9Fb18R2CiORSJ4pnU](https://cdn.filestackcontent.com/auto_image//compress/cache=expiry:max/mLo9Fb18R2CiORSJ4pnU))

## **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 형) 반환 \* 숫자로 **변환 가능**한 문자열이기 때문

\<!-- notionvc: 7afdf2a9-1c83-4659-bb28-7f5494ee44dd -->
**간단한 형 변환 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형은 없습니다.

\<!-- notionvc: fd331d79-15fe-42ae-85fd-b256789a2e10 -->

\[

<Frame>
  <img src="https://mintcdn.com/integrateio/8_YWxtQNutL7liVJ/images/creating-packages/novice-part10-ko/image-3.webp?fit=max&auto=format&n=8_YWxtQNutL7liVJ&q=85&s=b388a7aa2e256ef0ea9c1d9471855fbe" alt="novice-part10-ko image 3" width="1200" height="1185" data-path="images/creating-packages/novice-part10-ko/image-3.webp" />
</Frame>

]\([https://cdn.filestackcontent.com/auto\_image//compress/cache=expiry:max/JcNiAN2sScutrl9nD2xQ](https://cdn.filestackcontent.com/auto_image//compress/cache=expiry:max/JcNiAN2sScutrl9nD2xQ))
**보다 실용적인 데이터 처리**

## **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

\<!-- notionvc: d0c4589f-2966-46ad-9c57-5da8d354f887 -->

##

\<!-- Google Tag Manager hidden fields -->

\<!-- End Google Tag Manager hidden fields -->

\<!-- Text input-->

Get Started

Free 7-day trial. Easy setup. Cancel any time
