v4.2에서 v5.0으로 외부 DAG 마이그레이션
이 가이드에서는 외부 DAG (Directed Acyclic Graph)의 출력 테이블을 Cortex Data Foundation v5.0 아키텍처 내의 새 위치로 재배치하는 데 필요한 단계를 설명합니다. 예를 들어 날씨 및 트렌드입니다. 이 가이드는 이전 Cortex Framework Data Foundation 버전 (4.2~5.0)에서 외부 DAG를 구현하고 이제 업그레이드하는 사용자를 위해 특별히 설계되었습니다. 외부 DAG를 사용하지 않았거나 SAP를 배포하지 않은 경우 이 가이드는 적용되지 않습니다.
컨텍스트
4.2 이전의 Cortex Framework Data Foundation 버전에서는 _GEN_EXT 플래그를 사용하여 외부 데이터 소스의 배포를 관리했으며 일부 소스는 특정 워크로드 (예: SAP의 통화 변환)에 연결되었습니다. 그러나 버전 5.0에서는 이 플래그가 삭제되었습니다. 이제 여러 워크로드를 처리할 수 있는 DAG를 관리하는 데 전용인 새 모듈이 있습니다. 이 가이드에서는 이 새로운 구조로 작동하도록 기존 데이터 파이프라인을 조정하는 단계를 설명합니다.
워크로드 간 재사용 가능한 DAG
Cortex Framework Data Foundation v5.0에는 다양한 데이터 소스에서 공유되는 재사용 가능한 데이터 요소를 수집, 처리, 모델링하는 새로운 구성요소인 K9이 도입되었습니다. 이제 보고 뷰는 K9_PROCESSING 데이터 세트를 참조하여 이러한 재사용 가능한 구성요소에 액세스하므로 데이터 액세스를 간소화하고 중복을 줄입니다. 이제 다음 외부 데이터 소스가 K9의 일부로 K9_PROCESSING 데이터 세트에 배포됩니다.
date_dimensionholiday_calendartrendsweather
SAP 종속 DAG
다음 SAP 종속 DAG는 여전히 generate_external_dags.sh 스크립트에 의해 트리거되지만 이제 보고서 빌드 단계에서 실행되고 CDC(변경 데이터 캡처) 단계 대신 SAP 보고 데이터 세트에 기록됩니다.
currency_conversioninventory_snapshotsprod_hierarchy_texts
마이그레이션 가이드
이 가이드에서는 Cortex Framework Data Foundation을 버전 5.0으로 업그레이드하는 단계를 설명합니다.
Cortex Framework Data Foundation 5.0 배포
먼저 다음 가이드라인에 따라 Cortex Framework Data Foundation의 최신 버전 (v5.0)을 프로젝트에 배포합니다.
- 배포 중에 수정되지 않으므로 이전 개발 또는 스테이징 배포의 기존 RAW 및 CDC 데이터 세트를 이 배포의 RAW 및 CDC 데이터 세트로 사용합니다.
config/config.json에서testData와SAP.deployCDC를 모두False로 설정합니다.- 테스트 목적으로 기존 v4.2 환경과 별도로 새 SAP 보고 프로젝트를 만듭니다. 이렇게 하면 현재 운영에 영향을 미치지 않고 업그레이드 프로세스를 안전하게 평가할 수 있습니다.
- 선택사항입니다. 이전 Cortex Framework Data Foundation 버전에서 실행 중인 활성 Airflow DAG가 있는 경우 마이그레이션을 진행하기 전에 일시중지합니다. 이 작업은 Airflow UI를 통해 수행할 수 있습니다. 자세한 안내는 Composer에서 Airflow UI 열기 및 DAG 일시중지 문서를 참고하세요.
이 단계를 따르면 Cortex Framework Data Foundation 버전 5.0으로 안전하게 전환하고 새로운 기능과 기능을 검증할 수 있습니다.
기존 테이블 마이그레이션
기존 테이블을 새 위치로 마이그레이션하려면 jinja-cli를 사용하여 제공된 마이그레이션 스크립트 템플릿의 형식을 지정하여 마이그레이션을 완료합니다.
다음 명령어를 사용하여 jinja-cli를 설치합니다.
pip install jinja-cli기존 버전 4.2 및 새 버전 5.0 배포에서 다음 매개변수를 식별합니다.
<td"> 이름 <td"> 설명 </td"></td"><td">project_id_src<td"> Source Google Cloud Project: 버전 4.2 배포의 기존 SAP CDC 데이터 세트가 있는 프로젝트입니다.K9_PROCESSING데이터 세트 도 이 프로젝트에서 생성됩니다. </td"></td"><td">project_id_tgt<td"> Target Google Cloud 새 버전 5.0 배포에서 새로 배포된 SAP 보고 데이터 세트가 있는 위치입니다. 소스 프로젝트와 다를 수 있습니다. </td"></td"><td">dataset_cdc_processed<td"> CDC BigQuery 데이터 세트: CDC 처리된 데이터가 최신 사용 가능한 레코드를 가져오는 BigQuery 데이터 세트입니다. 소스 데이터 세트와 동일할 수 있습니다. </td"></td"><td">dataset_reporting_tgt<td"> 대상 BigQuery 보고 데이터 세트: SAP용 Data Foundation 사전 정의 데이터 모델이 배포되는 BigQuery 데이터 세트입니다. </td"></td"><td">k9_datasets_processing<td"> K9 BigQuery 데이터 세트: K9 (확장된 데이터 소스)이 배포되는 BigQuery 데이터 세트입니다. </td"></td">필요한 입력 데이터로 JSON 파일을 만듭니다. 마이그레이션하지 않을 DAG는
migrate_list섹션에서 삭제해야 합니다.{ "project_id_src": "your-source-project", "project_id_tgt": "your-target-project", "dataset_cdc_processed": "your-cdc-processed-dataset", "dataset_reporting_tgt": "your-reporting-target-dataset-OR-SAP_REPORTING", "k9_datasets_processing": "your-k9-processing-dataset-OR-K9_REPORTING", "migrate_list": [ "holiday_calendar", "trends", "weather", "currency_conversion", "inventory_snapshots", "prod_hierarchy_texts" ] } EOF예를 들어
weather및trends를 삭제하려면 스크립트가 다음과 같이 표시됩니다.{ "project_id_src": "kittycorn-demo", "project_id_tgt": "kittycorn-demo", "dataset_cdc_processed": "CDC_PROCESSED", "dataset_reporting_tgt": "SAP_REPORTING", "k9_datasets_processing": "K9_PROCESSING", "migrate_list": [ "holiday_calendar", "currency_conversion", "inventory_snapshots", "prod_hierarchy_texts" ] }다음 명령어를 사용하여 출력 폴더를 만듭니다.
mkdir output다음 명령어를 사용하여 파싱된 마이그레이션 스크립트를 생성합니다 (이 명령어는 저장소의 루트에 있다고 가정함).
jinja -d data.json -o output/migrate_external_dags.sql docs/external_dag_migration/scripts/migrate_external_dags.sql출력 SQL 파일을 검토하고 BigQuery에서 실행하여 테이블을 새 위치로 마이그레이션합니다.
Airflow DAG 업데이트 및 일시중지 해제
Airflow 버킷에서 현재 DAG 파일을 백업합니다. 그런 다음 Cortex Framework Data Foundation 버전 5.0 배포에서 새로 생성된 파일로 바꿉니다. 자세한 안내는 다음 문서를 참고하세요.
검증 및 정리
이제 마이그레이션이 완료되었습니다. 이제 새 v5.0 보고 배포의 모든 보고 뷰가 올바르게 작동하는지 검증할 수 있습니다. 모든 항목이 제대로 작동하면 프로세스를 다시 진행합니다. 이번에는 프로덕션 보고 세트에 v5.0 배포를 타겟팅합니다. 그런 다음 다음 스크립트를 사용하여 모든 테이블을 삭제할 수 있습니다.
jinja -d data.json -o output/delete_old_dag_tables.sql docs/external_dag_migration/scripts/delete_old_dag_tables.sql