중급 Part01: User 변수 사용

Xplenty에서는 변수를 다루는 것으로 세밀한 설정이 가능합니다. 이번에는 사용자가 정의할 수 있는 User변수에 대해 소개하고 싶습니다.

사용예 1: 소스에서 데이터 취득 시의 날짜 범위를 동적설정

예) Google Analytics의 경우

Step1: 변수 설정

thumbnail image

이번 설정하는 변수는 이하의 2개입니다.

# 오늘 (한국 시간) 날짜를 가져옵니다.
today_ggl_anl
ToString(SwitchTimeZone(CurrentTime(),'Asia/Seoul'),'yyyy-MM-dd')

# 오늘(한국 시간)으로부터 3개월 전의 일자를 취득한다
from_ggl_anl
ToString(SubtractDuration(SwitchTimeZone(CurrentTime(),'Asia/Seoul'),'P3M'), 'yyyy-MM-dd')
1년  전의 경우
ToString(SubtractDuration(SwitchTimeZone(CurrentTime(),'Asia/Seoul'),'P1Y'), 'yyyy-MM-dd')

3시간 전의 경우
ToString(SubtractDuration(SwitchTimeZone(CurrentTime(),'Asia/Seoul'),'PT3H'), 'yyyy-MM-dd HH:mm:ss')

힌트: 기간 지정 값에 대하여
SubtractDuration 및 AddDuration 함수의 기간 지정에 사용되는 기호에 대한 자세한 내용은 다음과 같습니다.

P: 기간 표현의 시작 부분에 배치됨

  • Y: 연수

  • M: 월수

  • W: 주수

  • D: 일수

T: 시간 단위의 선두에 배치된다.

  • H: 시간수

  • M: 분수

  • S: 초수

예) "P3Y6M4DT12H30M5S"는 "3년 6개월 4일 12시간 30분 5초"의 기간을 나타냅니다.

자세한 내용은 이 페이지를(영어 / 한글) 를 참조하십시오.

편리한 예:

  • 월초 날짜의 계산
    ToString(ToDate(ISOToMonth(SwitchTimeZone(CurrentTime(),'Asia/Seoul'))),'yyyy-MM-dd')

  • 월말 날짜의 계산
    ToString(AddDuration(ToDate(ISOToMonth(SwitchTimeZone(CurrentTime(),'Asia/Seoul'))),'P1M-1D'),'yyyy-MM-dd')

  • 전월말 날짜의 계산
    ToString(SubtractDuration(ToDate(ISOToMonth(SwitchTimeZone(CurrentTime(),'Asia/Seoul'))),'P1D'),'yyyy-MM-dd')

Step2: 변수를 사용한 조건 설정

다음은 변수를 날짜 범위로 설정합니다. 참고로 변수를 사용하는 경우 변수 이름 앞에 $를 붙이면 변수로 인식됩니다.

thumbnail image

구현 시의 중요한 포인트
변수는 패키지 실행시에만 참조됩니다. 이 원칙을 잊지 않도록주의하십시오.

이 때문에, 패키지 작성중에 올바르게 데이터를 취득할 수 있을지 어떨지를 데이터 소스의 프리뷰 기능으로 확인할 수 없습니다. 패키지 작성중에는 고정값을 입력한 다음에 올바르게 동작하는 것을 검증 후, 고정값을 변수에 옮기는 것이 좋습니다.

용예 2: RestAPI의 인증 정보(액세스 토큰) 취득에 사용

예) Marketo의 경우

Step1: 변수 설정

변수 화면에서 액세스 토큰을 검색하는 데 필요한 변수를 설정합니다.

또한 위의 변수를 사용하여 Curl Function에서 액세스 토큰을 검색하는 식을 설정합니다.

accessToken :JsonStringToMap(Curl(CONCAT($BaseURL,'/identity/oauth/token?grant_type=client_credentials&client_id=',$ClientID,'&client_secret=',$ClientSecret),'GET','{"accept":"application/json"}')#'body')#'access_token'

thumbnail image

힌트 : 변수의 설정 순서로 accessToken은 식에서 사용하는 변수보다 아랫 순서로 정의해야 합니다. 이것으로 변수 "accessToken"에 토큰 값이 설정됩니다.

Step2: 변수를 사용하여 조건 설정

다음은 Rest API 컴포넌트에서 URL과 헤더 정보를 Step1의 변수를 사용하여 설정하는 것만으로 완료됩니다.

thumbnail image

사용예 3: SQL문 안에서 변수 사용

주의하세요!! : Workflow SQL 태스크, DB 컴포넌트, BigQuery 등의 DWH 커넥터안에서 기술하는 SQL문에 변수를 이용할 경우는 아래와 같이 기술해 주세요.

예)
수치형의 경우SELECT * FROM tableA Where price>=${변수명}

문자열형 / 날짜형의 경우
SELECT * FROM tableA BETWEEN '${start_date}' AND '${end_date}'
※ 변수의 전후에 홑 따옴표를 붙인다

MongoDB의 경우

{"\\$and": [{"LastModifiedDate": {"\\$lt": {"\\$date": "$last_modified"}}}, {"CreatedDate": {"\\$gte": {"\\$date": "$created_at"}}}, {"SLA__c": "Bronze"}]}
※ MongoDB 소스 컴포넌트의 필터 조건으로 변수를 사용하는 경우는, "$last_modified"같이 「$변수명」을 이중 따옴표로 둘러싼다

Workflow 변수와 Dataflow 변수의 관계 이해

Workflow 패키지 레벨의 변수는 Dataflow 레벨의 변수를 겹쳐쓰기(재정의)하는 데 사용할 수 있습니다.

예 1: Workflow 변수와 Dataflow 변수가 모두 같은 변수이름인 경우

Workflow 변수를 Dataflow 변수에 할당해야 합니다.

thumbnail image

예 2: Workflow 레벨에서만 변수가 정의된 경우

Workflow의 Dataflow에서 해당 Dataflow에 정의되지 않은 변수를 사용하더라도 Workflow 수준에서 값이 설정된 경우 해당 Dataflow 작업은 Workflow 변수의 값을 사용하여 실행됩니다.

변수 표기법 참고:

SQL에서 변수를 지정하는 방법 :  ${변수이름}
일반 패키지의 URL 및 파일 경로 등 :  $변수이름

마치며

변수를 사용하면 유연한 작업을 구현할 수 있습니다. 이것 이외에도 사용법은 다양하지만, 파일 스토리지(취득 혹은 보존시)등에서의 사용 예를 알고 싶은 경우는, 이 블로그(일본어)도 체크해 보세요.