개발ETC/pentaho pdi kettle

[kettle pentaho] pdi proflie 파라미터 환경변수 별 실행

벨포트조던 2023. 4. 11.
반응형

문제상황

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"
        ;;
    qa)
        echo "Set for QA"
        ENV="qa"
        ;;
    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 이걸 이용해서 가져오는데, 가져오는 방식은 여러가지가 있는듯 

 

 

- 추가

job에서 생성한 데이터베이스 연결은 아래 트랜스포메이션까지 연동된다.

이렇게 하면 데이터베이스연결을 한번에 관리할 수 있다.

 

pentaho kettle 문서 

https://help.hitachivantara.com/Documentation/Pentaho/8.1/Products/Data_Integration/Transformation_Step_Reference

1차적으로 이 문서에서 검색 해서 찾아보는게 결국 도움되었다.

 

 

 

 

참고 동영상

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

 

반응형

댓글