개발ETC/pentaho pdi kettle

[kettle pentaho] 환경변수별 파라미터 전달, 파라미터로 동적인 값 설정, 비교 validator

벨포트조던 2023. 3. 31.
반응형

문제상황

1. 서버 환경 (dev, qa, prd ) 에 따라 파라미터를 변경하여, 케틀동작시에 다른 값을 전달하고 싶은 상황

2. 웹서버의 profile을 구현하고 싶음 

 

해결방안

 우선 내가 직접적으로 해결한게 아니고, 기존 동료가 만들어둔걸로 해결 

1. 쉘 명령어로, 해당 서버의 환경변수를 가져온다 ( 환경변수에 dev, qa, prd 존재 ) 

#!/bin/bash

# Check an environment
case "$(echo ${env} | tr "A-Z" "a-z")" in
    prd)
        echo "Set for RELEASE"
        ENV="release"
        ;;
 
    dev)
        echo "Set for DEV"
        ENV="dev"
        ;;
    *)
        echo "Set for local"
        ENV="local"
esac

# Generate a path of environment directory
ENV_PATH=${HOME}/vod/.env

# Set a global variables
echo "=== COMMON ENV VARIABLES ==="
cat ${ENV_PATH}/common.env
source ${ENV_PATH}/common.env
echo "=== ${ENV} ENV VARIABLES ==="
cat ${ENV_PATH}/${ENV}.env
source ${ENV_PATH}/${ENV}.env

if [[ ! (-e ${LOG_DIR} && -d ${LOG_DIR}) ]]; then
    echo "${LOG_DIR} created."
    mkdir ${LOG_DIR}
fi

echo "Setup done."

각 환경별 선언할 상수값 파일을 만듬

그리고 실행시에 케틀의 파라미터를 넘겨줌 

 

${APP_DIR}/kitchen.sh -file:${KETTLE_FILE} \
  -param:IMG_URL=${IMG_URL}

케틀에서 파라미터를 설정 

 

job에 설정후 각 transformation 에 파라미터를 전달 가능 

 

이후 쿼리 조회시에 

스크립트의 변수 받기로하면, 이렇게 쓸수 있음

${parameter___} 

 

원래는 Set and Get Variables 이걸 이용해서 가져오는데, 가져오는 방식은 여러가지가 있는듯 

 

참고 동영상

https://www.youtube.com/watch?v=19T2VY4spGE 

 

-- 추가

나는 지금까지 비교를 filter row 로만 사용했었는데, 

validator Step 이 더 기능이 많은것 같다.

이것도 사용해보자

 

https://www.youtube.com/watch?v=JvxOrtcWhSs&t=5s 

 

반응형

댓글