Xplenty에서는 변수를 다루는 것으로 세밀한 설정이 가능합니다. 이번에는 사용자가 정의할 수 있는 User변수에 대해 소개하고 싶습니다.
사용예 1: 소스에서 데이터 취득 시의 날짜 범위를 동적설정
예) Google Analytics의 경우
Step1: 변수 설정
이번 설정하는 변수는 이하의 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: 변수를 사용한 조건 설정
다음은 변수를 날짜 범위로 설정합니다. 참고로 변수를 사용하는 경우 변수 이름 앞에 $
를 붙이면 변수로 인식됩니다.
구현 시의 중요한 포인트
변수는 패키지 실행시에만 참조됩니다. 이 원칙을 잊지 않도록주의하십시오.
이 때문에, 패키지 작성중에 올바르게 데이터를 취득할 수 있을지 어떨지를 데이터 소스의 프리뷰 기능으로 확인할 수 없습니다. 패키지 작성중에는 고정값을 입력한 다음에 올바르게 동작하는 것을 검증 후, 고정값을 변수에 옮기는 것이 좋습니다.
사용예 2: RestAPI의 인증 정보(액세스 토큰) 취득에 사용
예) Marketo의 경우
Step1: 변수 설정
변수 화면에서 액세스 토큰을 검색하는 데 필요한 변수를 설정합니다.
- BaseURL :' https://xxx-xxx-xxx.yyyy.com/rest '
- ClientID : 'xxxxxxxxxxxxxxxxxxxxx'
- ClientSecret : 'xxxxxxxxxxxxxxxxxxxx'
또한 위의 변수를 사용하여 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'
힌트 : 변수의 설정 순서로 accessToken은 식에서 사용하는 변수보다 아랫 순서로 정의해야 합니다. 이것으로 변수 "accessToken"에 토큰 값이 설정됩니다.
Step2: 변수를 사용하여 조건 설정
다음은 Rest API 컴포넌트에서 URL과 헤더 정보를 Step1의 변수를 사용하여 설정하는 것만으로 완료됩니다.
사용예 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 변수에 할당해야 합니다.
예 2: Workflow 레벨에서만 변수가 정의된 경우
Workflow의 Dataflow에서 해당 Dataflow에 정의되지 않은 변수를 사용하더라도 Workflow 수준에서 값이 설정된 경우 해당 Dataflow 작업은 Workflow 변수의 값을 사용하여 실행됩니다.
변수 표기법 참고:
SQL에서 변수를 지정하는 방법 : ${변수이름}
일반 패키지의 URL 및 파일 경로 등 : $변수이름
마치며
변수를 사용하면 유연한 작업을 구현할 수 있습니다. 이것 이외에도 사용법은 다양하지만, 파일 스토리지(취득 혹은 보존시)등에서의 사용 예를 알고 싶은 경우는, 이 블로그(일본어)도 체크해 보세요.