2010-02-18 4 views
1

MS SQL Server에서 ETL 프로세스를 만들고 있는데 특정 행의 특정 열에 대한 오류가 발생합니다. 예를 들어, 데이터는 처음에 excel 파일에서 모든 열이 varchar(2000) 인 테이블 (우리는 초기 테이블이라고 부름)로로드 된 다음 더 구체적인 데이터 형식 (datetime)을 포함하는 다른 테이블 (DataTypedTable, int 등) 또는 더 엄격하게 구속 된 varchar 길이. 다음과 같은 특정 필드에 대한 오류 메시지를 생성 할 수 있어야합니다. "1 월 13 일"은 제출 날짜에 유효한 날짜 형식이 아닙니다. MM/DD/YYYY 형식을 사용하십시오.ETL에 대한 필드 특정 오류

이러한 오류 메시지는 나중에 자동 프로세스에서 각 메시지가 특정 행을 참조하도록 오류 메시지가있는 보고서를 만들 수 있도록 저장해야합니다. 필드 (누군가가 돌아가서 소스 시스템의 데이터를 정정하고 Excel 파일을 다시 제출해야합니다). 이상적으로 그것은 어떤 종류의 실패 테이블에 삽입되고 실패한 행의 기본 키, 열 이름 및 오류 메시지를 포함합니다.

질문 : 그래서 SSIS 또는 Talend와 같은 일부 오픈 소스 도구로 수행 할 수 있는지 궁금합니다. 그렇다면 일반적인 접근 방법은 무엇입니까? 아니면 당신이 취할 코드화 된 접근 방식을 손으로합니까?

커플 내가 SQL을 사용하지 않는 생각했습니다 접근 (더 내가 SQL 발동에 손으로 ETL을했을 때까지,하지만 다른 방법을 고려하는 것이 좋습니다 가능한 C 번호를도..) :

를 사용하여 커서를 읽고 초기 테이블을 통해, 그리고 각 행에 대해 DataTyped 테이블에 기본 키만있는 빈 레코드를 삽입 한 다음 각 열에 대해 하나의 update 문을 사용합니다. 따라서 해당 업데이트가 실패하면 해당 특정 오류 메시지를 삽입 할 수 있습니다 오류 메시지 테이블의 열.

DataTyped 테이블에 모든 데이터를 그대로 삽입하지만 SubmissionDateSubmissionDateOld 같은 중복 열이 있습니다. 초기 삽입 후 * Old 열에는 데이터가 있고 나머지는 비어 있으며 SubmissionDateOld를 기반으로 SubmissionDate를 설정하는 각 열에 대해 하나의 업데이트 만 있습니다.

접근 방식을 제안하는 것 외에도, 내가 그 작업 방식을 사용하고 있는지 또는 이미 수행 한 작업에서 비슷한 것을 사용하고 있는지 알고 싶습니다.

답변

2

데이터 흐름에 조건부 분할을 넣을 때 aproach를 사용합니다. 조건에 부합하지 않는 레코드 (유효하지 않은 날짜, 필수 필드의 데이터 없음 등)는 레코드 식별자, 불량 데이터, 실패한 이유를 포함하는 예외 테이블로 전송됩니다. 나중에이 정보에서 스프레드 시트 나 오류 텍스트 파일을 만들어 파일을 제공하는 그룹으로 다시 보낼 수 있습니다. 좋은 기록은 물론 pther 경로로 이동하여 테이블에 삽입됩니다.

+0

+1 감사합니다. 오류는 매우 애매하고 열 식별자는 숫자이며 이름으로 변환하기 위해 해킹 프로세스가 필요하다는 점만 제외하면 대부분 잘 작동하는 것처럼 보였습니다. 또 다른 문제는 SQL Server에서 일반적으로 허용되지 않는 작업을 SSIS가 수행하는 것입니다. 잘못 입력 한 지역 코드를 "386-"문자열에서 int 열로 할당 할 때와 같이 -386으로 변환하여 오류가 발생하는 것이 좋습니다. SQL의 경우와 같이 캐스트 오류가 발생합니다. 아마도 스크립트 변형 작업을 사용하고 좀 더 엄격하게 만들기 위해이 유효성 검사의 코드를 직접 작성해야 할 것입니다. – AaronLS

0

준비 (초기 테이블이라고 부르는) 테이블을로드하기 전에 클리닝/변환을 수행하는 것이 어떻습니까? Excel에서 탭 또는 쉼표로 구분 된 파일로 데이터를 덤프 한 다음 원하는 프로그래밍 언어를 사용하여 사용자가 지적한 데이터 정리를 수행하십시오. 또한 각 데이터의로드는 얼마나됩니까? 멀티 스레드 또는 다중 프로세스 응용 프로그램을 사용하여 주요로드 (한 번에 몇 백만 행로드)를 처리 할 수 ​​있습니다. 이 프로세스 중에 _ 생하는 오류는 ID, 오류 및 주석 세부 사항이있는 예외 테이블에로드 될 수 있습니다. 이 기술은 데이터 정리 단계에서 더 나은 제어를하는 데 도움이됩니다.

부하가 높지 않고 데이터베이스 (SQL)에서 대부분의 작업을 수행하려는 경우 가능한 많은 데이터 프로파일 링을 수행하고 예상 할 수있는 데이터 유사성을 충분히 고려할 수 있습니다 .이를 통해 적절한 구성 요소 (Talend 또는 SSIS)를 사용하여 변환을 수행하거나 데이터 흐름을 제어 할 수 있습니다. 또한 정규 표현식을 사용하면 집합 규칙에서 벗어나는 엔티티를 찾을 수 있습니다.

관련 문제