DataStage에서 필요시 쿼리 결과값을 job 파라미터로 활용이 가능하다.
파라미터셋을 별도로 추가(변수명, 파일명 지정) 하고, 쿼리 결과를 파일에 기록하면 (파라미터셋에서 지정한 파일명으로) 사용하고자 하는 Job에서 파라미터로 활용하는 방식.
ex) 타겟테이블의 특정 컬럼의 max값 기준으로 ETL 하고자 할 때
1. 파라미터셋 생성
Parameters 탭에서 name 지정 (여기서 지정한 Parameter name을 파라미터로 사용하기 위해 수행할 쿼리 결과값에 concat 시켜야함.)
Values 탭에서 파일명 지정 (지정한 경로에 써질 파일명)
위 처럼 추가하면, DS서버에서 ParameterSets/ParameterSet명(위 예에서 test_param) 폴더 아래에 Value File name에 지정한 이름으로 파일이 생성됨. (test_param_file)
ex)
$ cat test_param_file
P_DAY=20210420
P_TIME=220844
2. 쿼리 결과를 파일에 저장하는 Job 생성
파라미터로 전달하기 위해 select 쿼리 수행하여, 해당 결과값을 파일에 기록하는 구조로 job 생성
1) 소스 스테이지
쿼리 작성시 위 1.번에서 지정한 'Parameter name='을 앞쪽에 나오도록 concat 해야함
ex) select 'P_DAY='|| max(updateTime) from table
2) Sequential File
Properties 탭에서 파일 경로 지정 (위 1.번의 parameterset 통해서 생성한 파일을 경로로 지정) 및 Update Mode = Overwrite로 지정
Format은 두개 이상 쓰려면 아래처럼 지정
- Final delimiter = end
- Delimeter = \n
- Quote = none
위 처럼 셋팅하면 아래 처럼 파일에 써짐.
ex)
P_DAY=20210420
P_TIME=220844
--> P_DAY, P_TIME 2개 변수 사용가능
"P_DAY=20210420","P_TIME=220844"
--> Filed Delimiter로 "" 또는 '' 들어가있으면 아래 3.번 Job 에서 인식하지 못해서 에러발생
3. 파라미터 전달받아 사용할 Job
Job Properties에서 Add Parameter Set : 위 1.번에서 생성한 파라미터셋을 추가 해준다. (ex. test_param)
SQL내에서는 아래처럼 사용가능 #추가한ParameterSet명.Parameter name#
ex) #test_param.P_DAY# , #test_param.P_TIME#
위 2.번에서 쿼리 결과를 쓴 파일명은 Sequence 통해서만 지정가능. 이 Job에서 추가한 파라미터셋을 외부 sequence에서 파일명으로 지정
4. 위 3.번 Job을 호출할 Sequence에서 파일의 값을 파라미터로 사용할 수 있게 정의
Value Expression에서 위 1.번 또는 2-2)번에서 지정한 파일명을 지정 가능
이 Sequence Job에서 위 2.번 Job을 선행으로, 3.번 Job을 후행으로 하여 스케쥴 걸면 갱신된 쿼리 결과 값이 파라미터로서 활용됨.
'학습장 > Data Engineering' 카테고리의 다른 글
spark dataframe to vertica (0) | 2021.06.29 |
---|---|
spark 에서 jdbc 활용하여 RDB로 데이터 적재 (0) | 2021.04.27 |
vertica-spark 연동 (0) | 2021.04.05 |
sqoop upsert시 Mixed update/insert is not supported against the target database yet (0) | 2021.04.02 |
sqoop export 시 org.apache.parquet.io.ParquetDecodingException (0) | 2021.04.02 |
댓글