현재 데이터웨어 하우스를위한 ETL을 작성하는 중입니다. 우리는 SSIS 2008을 사용하고 있지만 가장 큰 문제는 구성 요소 재사용의 어려움입니다. 각 테이블마다 별도의 패키지가 있으며 각 패키지는 상위 패키지에서 여러 변수를 입력으로 사용합니다. 이러한 입력 변수를 변경함에 따라 각 패키지로 이동해야하고 (현재 15 개 정도이지만이 숫자가 크게 증가 할 것임) 해당 변경을 처리하도록 패키지를 수정해야합니다. 추출을 위해 임의의 SQL을 실행할 수 없거나 로깅 기능이 불량한 등 다른 문제도 있습니다.
코드에서 ETL을 개발하여 코드 재사용, 공통 라이브러리, 더 나은 단위 테스트 등을 수행 할 수있는 방법이 있다면이 전체 프로세스는 훨씬 더 강력 해집니다. SQL Server에 사실상 표준 ETL 언어 / API가 있습니까? GUI 도구를 최대한 피하고 싶습니다.
편집 : 내 배경을 언급해야합니다. 나는 DBA가 아니며 공식 (또는 비공식) DBA 교육을받지 못했지만 기본적으로 내가 따라갈 때이 자료를 알아 냈으므로 SSIS에서 부적절한 일을 시도 하거나이 ETL에 접근 할 가능성이 있습니다. 잘못된 각도에서 투사하십시오. 또한 저는 현재 주 정부에 고용되어 있으므로 새 소프트웨어 패키지를 구입해야하는 솔루션은 불가능합니다.
다음은 우리의 작업 중 하나입니다. 우리는 단일 SSIS 패키지를 사용하여 창고에 각 테이블을로드합니다. 각 팩트 패키지와 차원 패키지는 일반적으로 동일합니다.
- 소스 데이터베이스에서 추출
- 데이터 흐름에서의 조작
- 대상 테이블로 병합
내가 할 수있는 일 (SSIS에서하기 어려운 것으로 밝혀 짐)
- 텍스트 파일에서 추출 쿼리를로드하십시오. 개발자가 추출 쿼리를 작성하고 테스트 할 때 SSIS가 실행하기 전에 쿼리를 조작 할 필요가 없으며 쿼리를 잘라내어 DB 소스 개체에 붙여 넣을 필요가 없습니다.
- 각 구성 요소를 개별적으로 테스트하십시오. 다른 테이블로드와 관계없이 개별 테이블에 대한 전체 ETL 프로세스를 개별적으로 테스트 할 수 있어야합니다.
- 한 곳에서 공유 논리를 수정하고 개별 패키지를 편집 할 필요는 없습니다. 모든 패키지는 동일한 방식으로 감사 테이블에 데이터를로드합니다. 감사 된 데이터를 변경하려면 15 개의 패키지를 모두 편집 할 필요는 없습니다 (이 숫자는 시간이 지남에 따라 훨씬 커질 것입니다).
전체 프로세스는 공유 코드를 올바르게 사용하여 프로그래밍 방식으로 수행하면 구현하기가 훨씬 쉽고 강력 해 보입니다.