ETL 테스트 – 면접 질문
ETL은 추출, 변환 및로드를 나타냅니다. 데이터웨어 하우징 시스템에서 중요한 개념입니다.Extraction 트랜잭션 시스템 또는 애플리케이션과 같은 다른 데이터 소스에서 데이터를 추출하는 것을 의미합니다. Transformation분석보고에 적합하도록 데이터에 변환 규칙을 적용하는 것을 의미합니다. 그만큼loading 프로세스에는 데이터를 대상 시스템 (일반적으로 데이터웨어 하우스)으로 이동하는 것이 포함됩니다.
ETL주기에 관련된 세 계층은 다음과 같습니다.
Staging Layer − 스테이징 레이어는 다른 소스 데이터 시스템에서 추출 된 데이터를 저장하는 데 사용됩니다.
Data Integration Layer − 통합 계층은 스테이징 계층의 데이터를 변환하고 데이터를 데이터베이스로 이동합니다. 여기서 데이터는 종종 계층 적 그룹으로 정렬됩니다. dimensions, 그리고 사실과 집계 사실로. DW 시스템에서 팩트와 차원 테이블의 조합을schema.
Access Layer − 액세스 계층은 최종 사용자가 분석보고를 위해 데이터를 검색하는 데 사용됩니다.
ETL 도구는 다른 데이터 소스에서 데이터를 추출하고 데이터를 변환 한 다음 DW 시스템에로드하는 데 사용됩니다. 대조적으로 BI 도구는 최종 사용자를위한 대화 형 및 임시 보고서, 고위 경영진을위한 대시 보드, 월간, 분기 별 및 연간 이사회를위한 데이터 시각화를 생성하는 데 사용됩니다.
가장 일반적인 ETL 도구로는 SAP BO 데이터 서비스 (BODS), Informatica, Microsoft – SSIS, Oracle Data Integrator ODI, Talend Open Studio, Clover ETL 오픈 소스 등이 있습니다.
가장 일반적인 BI 도구에는 SAP Business Objects, SAP Lumira, IBM Cognos, JasperSoft, Microsoft BI Platform, Tableau, Oracle Business Intelligence Enterprise Edition 등이 포함됩니다.
시장에서 사용 가능한 인기있는 ETL 도구는 다음과 같습니다.
- Informatica-파워 센터
- IBM-Websphere DataStage (이전 명칭 Ascential DataStage)
- SAP − 비즈니스 오브젝트 데이터 서비스 BODS
- IBM − Cognos Data Manager (이전 명칭 : Cognos Decision Stream)
- 마이크로 소프트-SQL 서버 통합 서비스 SSIS
- Oracle − Data Integrator ODI (이전 명칭 : Sunopsis Data Conductor)
- SAS − 데이터 통합 스튜디오
- 오라클-웨어 하우스 빌더
- ABInitio
- 오픈 소스 Clover ETL
스테이징 영역은 데이터 소스와 데이터웨어 하우스 / 데이터 마트 시스템 사이에있는 중간 영역입니다. 스테이징 영역은 많은 이점을 제공하도록 설계 할 수 있지만이 영역을 사용하는 주된 동기는 ETL 프로세스의 효율성을 높이고 데이터 무결성을 보장하며 데이터 품질 작업을 지원하는 것입니다.
데이터웨어 하우징은 데이터 마이닝에 비해 더 광범위한 개념입니다. 데이터 마이닝에는 데이터에서 숨겨진 정보를 추출하고 향후 예측을 위해 해석하는 작업이 포함됩니다. 대조적으로 데이터웨어 하우징에는 상세 보고서 및 임시 보고서를 생성하는 분석보고, 대화 형 대시 보드 및 차트를 생성하는 정보 처리와 같은 작업이 포함됩니다.
OLTP는 일반적으로 관계형 데이터베이스이며 일상적인 트랜잭션을 관리하는 데 사용되는 온라인 트랜잭션 처리 시스템을 의미합니다.
OLAP는 일반적으로 다차원 시스템이며 데이터웨어 하우스라고도하는 온라인 분석 처리 시스템을 의미합니다.
회사가 고객에게 제품을 판매한다고 가정 해보십시오. 모든 판매는 회사 내에서 발생하는 사실이며 사실 테이블은 이러한 사실을 기록하는 데 사용됩니다. 각 팩트 테이블은 팩트 테이블을 차원 테이블 및 측정 값 / 팩트에 조인하기위한 기본 키를 저장합니다.
Example − Fact_Units
Cust_ID | Prod_Id | Time_Id | 판매 수량 |
---|---|---|---|
101 | 24 | 1 | 25 |
102 | 25 | 2 | 15 |
103 | 26 | 삼 | 30 |
차원 테이블은 팩트 테이블의 객체를 설명하는 속성 또는 차원을 저장합니다. 팩트 테이블에 대한 동반 테이블 세트입니다.
Example − Dim_Customer
Cust_id | Cust_Name | 성별 |
---|---|---|
101 | 제이슨 | 미디엄 |
102 | 안나 | 에프 |
데이터 마트는 단순한 형태의 데이터웨어 하우스이며 단일 기능 영역에 중점을 둡니다. 일반적으로 몇 가지 소스에서만 데이터를 가져옵니다.
Example − 조직에서 재무, 마케팅, 인사 및 특정 기능과 관련된 데이터를 저장하는 기타 개별 부서를위한 데이터 마트가 존재할 수 있습니다.
집계 함수는 단일 열의 여러 행을 그룹화하여 더 중요한 측정을 형성하는 데 사용됩니다. 또한 집계 된 테이블을 데이터웨어 하우스에 저장할 때 성능 최적화에도 사용됩니다.
일반적인 집계 함수는 다음과 같습니다.
분 | 주어진 열에서 가장 작은 값을 반환합니다. |
MAX | 주어진 열에서 가장 큰 값을 반환합니다. |
합집합 | 주어진 열에있는 숫자 값의 합계를 반환합니다. |
평균 | 주어진 열의 평균값을 반환합니다. |
카운트 | 주어진 열의 총 값 수를 반환합니다. |
카운트(*) | 테이블의 행 수를 반환합니다. |
Example
SELECT AVG(salary)
FROM employee
WHERE title = 'developer';
데이터 정의 언어 (DDL) 문은 데이터베이스 구조 또는 스키마를 정의하는 데 사용됩니다.
Examples −
CREATE − 데이터베이스에 개체 생성
ALTER − 데이터베이스 구조 변경
DML (Data Manipulation Language) 문은 데이터베이스 내의 데이터를 조작하는 데 사용됩니다.
Examples −
SELECT − 데이터베이스에서 데이터 검색
INSERT − 테이블에 데이터 삽입
UPDATE − 테이블 내의 기존 데이터 업데이트
DELETE − 테이블에서 모든 레코드를 삭제하고 레코드 공간은 그대로 유지
데이터 제어 언어 (DCL) 문은 데이터베이스 개체에 대한 액세스를 제어하는 데 사용됩니다.
Examples −
GRANT − 데이터베이스에 대한 사용자의 액세스 권한을 부여합니다.
REVOKE − GRANT 명령으로 주어진 접근 권한을 철회합니다.
연산자는 SQL 문에서 조건을 지정하고 명령문에서 여러 조건에 대한 접속사 역할을하는 데 사용됩니다. 일반적인 연산자 유형은 다음과 같습니다.
- 산술 연산자
- 비교 / 관계 연산자
- 논리 연산자
- 집합 연산자
- 조건을 부정하는 데 사용되는 연산자
SQL의 공통 집합 연산자는 다음과 같습니다.
- UNION
- UNION ALL
- INTERSECT
- MINUS
교차 연산은 두 개의 SELECT 문을 결합하는 데 사용되지만 두 SELECT 문에서 공통된 레코드 만 반환합니다. Intersect의 경우 열 수와 데이터 유형이 동일해야합니다. MySQL은 INTERSECT 연산자를 지원하지 않습니다. Intersect 쿼리는 다음과 같습니다.
select * from First
INTERSECT
select * from second
마이너스 연산은 두 개의 Select 문의 결과를 결합하고 첫 번째 결과 집합에 속하는 결과 만 반환합니다. 마이너스 쿼리는 다음과 같습니다.
select * from First
MINUS
select * from second
소스 마이너스 대상 및 대상 마이너스 소스를 수행하고 마이너스 쿼리가 값을 반환하면 행이 일치하지 않는 경우로 간주해야합니다.
마이너스 쿼리가 값을 반환하고 교차 개수가 소스 개수 또는 대상 테이블보다 작 으면 소스 및 대상 테이블에 중복 행이 포함됩니다.
Group-by 절은 select 유사한 유형의 데이터를 수집하는 명령문. HAVING 매우 유사하다 WHERE 그 안에있는 진술은 총체적 성격을 띠는 것을 제외하고.
Syntax −
SELECT dept_no, count ( 1 ) FROM employee GROUP BY dept_no;
SELECT dept_no, count ( 1 ) FROM employee GROUP BY dept_no HAVING COUNT( 1 ) > 1;
Example − 직원 테이블
Country | Salary |
인도 | 3000 |
우리 | 2500 |
인도 | 500 |
우리 | 1500 년 |
Group by Country
Country | Salary |
인도 | 3000 |
인도 | 500 |
우리 | 2500 |
우리 | 1500 년 |
ETL 테스트는 데이터가 프로덕션 데이터웨어 하우스 시스템으로 이동되기 전에 수행됩니다. 때때로 테이블 밸런싱 또는 프로덕션 조정이라고도합니다.
ETL 테스트의 주요 목적은 분석보고를 위해 데이터를 처리하기 전에 발생하는 데이터 결함 및 일반 오류를 식별하고 완화하는 것입니다.
다음 표는 데이터베이스 및 ETL 테스트의 주요 기능과 비교를 보여줍니다.
함수 | 데이터베이스 테스트 | ETL 테스트 |
---|---|---|
주요 목표 | 데이터 검증 및 통합 | BI보고를위한 데이터 추출, 변환 및로드 |
적용 가능한 시스템 | 비즈니스 흐름이 발생하는 트랜잭션 시스템 | 비즈니스 흐름 환경이 아닌 기록 데이터를 포함하는 시스템 |
시장의 일반적인 도구 | QTP, 셀레늄 등 | QuerySurge, Informatica 등 |
비즈니스 요구 | 여러 애플리케이션의 데이터를 통합하는 데 사용되며 심각한 영향을 미칩니다. | 분석보고, 정보 및 예측에 사용됩니다. |
모델링 | ER 방법 | 다차원 |
데이터베이스 유형 | 일반적으로 OLTP 시스템에서 사용됩니다. | OLAP 시스템에 적용 |
데이터 형식 | 더 많은 조인이있는 정규화 된 데이터 | 더 적은 조인, 더 많은 인덱스 및 집계로 비정규 화 된 데이터. |
ETL 테스트는 기능에 따라 다음 범주로 나눌 수 있습니다.
Source to Target Count Testing − 소스 시스템과 타겟 시스템의 레코드 개수 일치를 포함합니다.
Source to Target Data Testing− 소스와 타겟 시스템 간의 데이터 유효성 검사가 포함됩니다. 또한 대상 시스템에서 데이터 통합 및 임계 값 확인 및 중복 데이터 확인이 포함됩니다.
Data Mapping or Transformation Testing− 소스 시스템과 타겟 시스템의 객체 매핑을 확인합니다. 또한 대상 시스템의 데이터 기능을 확인하는 작업도 포함됩니다.
End-User Testing− 최종 사용자가 보고서의 데이터가 예상대로인지 확인하기 위해 보고서를 생성하는 작업이 포함됩니다. 보고서에서 편차를 찾고 보고서 유효성 검사를 위해 대상 시스템의 데이터를 교차 확인하는 작업이 포함됩니다.
Retesting − 대상 시스템 데이터의 버그 및 결함을 수정하고 데이터 유효성 검사를 위해 보고서를 다시 실행하는 작업이 포함됩니다.
System Integration Testing − 모든 개별 시스템을 테스트하고 나중에 결과를 결합하여 편차가 있는지 확인합니다.
ETL 프로세스 중 데이터 손실.
부정확하거나 불완전하거나 중복 된 데이터.
DW 시스템에는 과거 데이터가 포함되어 있으므로 데이터 볼륨이 너무 크고 복잡하여 대상 시스템에서 ETL 테스트를 수행 할 수 없습니다.
ETL 테스터는 일반적으로 ETL 도구에서 작업 일정을 볼 수있는 액세스 권한이 제공되지 않습니다. 보고서 내 보고서 및 데이터의 최종 레이아웃을보기 위해 BI보고 도구에 거의 액세스 할 수 없습니다.
데이터 볼륨이 너무 높고 복잡하기 때문에 테스트 케이스를 생성하고 구축하기가 어렵습니다.
ETL 테스터는 일반적으로 최종 사용자 보고서 요구 사항 및 정보의 비즈니스 흐름에 대한 아이디어가 없습니다.
ETL 테스트에는 대상 시스템의 데이터 유효성 검사를위한 다양한 복잡한 SQL 개념이 포함됩니다.
때로는 테스터에게 소스 대 타겟 매핑 정보가 제공되지 않습니다.
불안정한 테스트 환경으로 인해 개발 및 프로세스 테스트가 지연됩니다.
ETL 테스터의 주요 책임은 다음과 같습니다.
소스 시스템의 테이블 확인-개수 확인, 데이터 유형 확인, 키가 누락되지 않음, 중복 데이터.
데이터를로드하기 전에 변환 논리 적용 : 데이터 임계 값 유효성 검사, 대리 ky 검사 등
준비 영역에서 대상 시스템으로 데이터로드 : 집계 값 및 계산 된 측정 값, 키 필드가 누락되지 않음, 대상 테이블의 개수 확인, BI 보고서 유효성 검사 등
ETL 도구 및 구성 요소 테스트, 테스트 사례-테스트 계획, 테스트 사례, 테스트 ETL 도구 및 기능, 테스트 DW 시스템 등을 생성, 설계 및 실행합니다.
변환은 데이터를 생성, 수정 또는 전달하는 일련의 규칙입니다. 변환은 액티브와 패시브의 두 가지 유형이 있습니다.
활성 변환에서 출력으로 생성되는 행 수는 변환이 발생한 후 변경할 수 있습니다. 이것은 수동 변환 중에는 발생하지 않습니다. 정보는 입력과 동일한 번호를 통해 전달됩니다.
파티셔닝은 데이터 저장소 영역을 부분적으로 나누는 것입니다. 일반적으로 트랜잭션 성능을 향상시키기 위해 수행됩니다.
DW 시스템의 크기가 큰 경우 데이터를 찾는 데 시간이 걸립니다. 저장 공간을 분할하면 데이터를 더 쉽고 빠르게 찾고 분석 할 수 있습니다.
분할은 라운드 로빈 분할과 해시 분할의 두 가지 유형이 될 수 있습니다.
라운드 로빈 파티셔닝에서는 데이터가 모든 파티션에 균등하게 분산되므로 각 파티션의 행 수가 상대적으로 동일합니다. 해시 파티셔닝은 서버가 데이터를 그룹화하는 파티션 키를 생성하기 위해 해시 함수를 사용하는 경우입니다.
Mapplet은 변환 규칙을 정의합니다.
세션은 소스에서 대상 시스템으로 이동할 때 데이터를 지시하도록 정의됩니다.
워크 플로는 작업 실행에 대해 서버에 지시하는 일련의 지침입니다.
매핑은 소스에서 대상으로 데이터를 이동하는 것입니다.
조회 변환을 사용하면 매핑 문서에 정의되지 않은 관계형 테이블의 데이터에 액세스 할 수 있습니다. 천천히 변경되는 차원 테이블을 업데이트하여 레코드가 이미 대상에 있는지 여부를 확인할 수 있습니다.
Surrogate 키는 의미가없는 시퀀스 생성 번호를 가지며 행을 고유하게 식별하기위한 것입니다. 사용자 또는 응용 프로그램에는 표시되지 않습니다. 후보 키라고도합니다.
Surrogate 키에는 의미가없는 시퀀스 생성 번호가 있습니다. 행을 고유하게 식별하기위한 것입니다.
기본 키는 행을 고유하게 식별하는 데 사용됩니다. 사용자에게 표시되며 요구 사항에 따라 변경할 수 있습니다.
이러한 경우 체크섬 방법을 적용 할 수 있습니다. 소스 및 대상 시스템의 레코드 수를 확인하여 시작할 수 있습니다. 합계를 선택하고 정보를 비교하십시오.
이 테스트에서 테스터는 데이터 범위를 검증합니다. 대상 시스템의 모든 임계 값을 확인하여 예상 결과에 맞는지 확인해야합니다.
Example − 연령 속성은 100보다 큰 값을 가질 수 없습니다. 날짜 열 DD / MM / YY에서 월 필드는 12보다 큰 값을 가질 수 없습니다.
Select Cust_Id, Cust_NAME, Quantity, COUNT (*)
FROM Customer GROUP BY Cust_Id, Cust_NAME, Quantity HAVING COUNT (*) >1;
기본 키가 정의되지 않은 경우 중복 값이 나타날 수 있습니다.
잘못된 매핑 및 소스에서 대상 시스템으로 데이터를 전송하는 동안 수동 오류로 인해 데이터 중복이 발생할 수도 있습니다.
회귀 테스트는 데이터 변환 및 집계 규칙을 변경하여 새로운 기능을 추가하고 테스터가 새로운 오류를 찾는 데 도움을주는 것입니다. 회귀 테스트에서 제공되는 데이터에 나타나는 버그를 회귀라고합니다.
세 가지 접근 방식은 하향식, 상향식 및 하이브리드입니다.
가장 일반적인 ETL 테스트 시나리오는 다음과 같습니다.
- 구조 검증
- 매핑 문서 검증
- 제약 조건 검증
- 데이터 일관성 검사
- 데이터 완전성 검증
- 데이터 정확성 검증
- 데이터 변환 유효성 검사
- 데이터 품질 검증
- Null 유효성 검사
- 중복 검증
- 날짜 유효성 검사
- 마이너스 쿼리를 사용한 전체 데이터 유효성 검사
- 기타 테스트 시나리오
- 데이터 정리
데이터 제거는 데이터웨어 하우스에서 데이터를 삭제하는 프로세스입니다. null 값 또는 추가 공백이있는 행과 같은 정크 데이터를 제거합니다.
외형 버그는 애플리케이션의 GUI와 관련이 있습니다. 글꼴 스타일, 글꼴 크기, 색상, 정렬, 맞춤법 오류, 탐색 등과 관련 될 수 있습니다.
이를 경계 값 분석 관련 버그라고합니다.
매핑 변수와 필터링 된 변환을 생성하여 수행 할 수 있습니다. 필요한 구체적으로 정렬 된 레코드를 가지려면 시퀀스를 생성해야 할 수 있습니다.
Value comparison− 변환을 최소화하거나 변환하지 않고 소스 및 대상 시스템의 데이터를 비교합니다. Informatica의 Source Qualifier Transformation과 같은 다양한 ETL 테스트 도구를 사용하여 수행 할 수 있습니다.
중요한 데이터 열은 소스 및 대상 시스템의 고유 한 값을 비교하여 확인할 수 있습니다.
Minus 및 Intersect 문을 사용하여 데이터 완전성 유효성 검사를 수행 할 수 있습니다. 소스 마이너스 대상 및 대상 마이너스 소스를 수행하고 마이너스 쿼리가 값을 반환하면 행이 일치하지 않는다는 신호입니다.
마이너스 쿼리가 값을 반환하고 교차 개수가 소스 개수 또는 대상 테이블보다 작 으면 중복 행이 존재합니다.
Shortcut Transformation공유 폴더에서 사용할 수있는 개체에 대한 참조입니다. 이러한 참조는 일반적으로 서로 다른 프로젝트 또는 환경간에 공유되는 다양한 소스 및 대상에 사용됩니다.
Repository Manager에서 'Shared'상태를 할당하여 바로 가기를 생성합니다. 나중에이 폴더에서 다른 폴더로 개체를 끌 수 있습니다. 이 프로세스는 개체에 대한 단일 제어 지점을 허용하며 여러 프로젝트에는 로컬 폴더에 대한 모든 가져 오기 소스 및 대상이 없습니다.
Reusable Transformation 폴더에 로컬입니다. Example− 창고 고객 ID 할당을위한 재사용 가능한 시퀀스 생성기. 여러 소스 시스템에서 고객 세부 정보를로드하고 각각의 새 소스 키에 고유 한 ID를 할당하는 것이 유용합니다.
단일 테이블을 자신에게 조인하는 경우이를 Self-Join이라고합니다.
데이터베이스 정규화는 데이터 중복성을 최소화하기 위해 관계형 데이터베이스의 속성과 테이블을 구성하는 프로세스입니다.
정규화는 테이블을 덜 중복 된 (더 작은) 테이블로 분해하지만 정보 손실은 포함하지 않습니다.
사실이없는 사실 테이블은 측정 값이없는 사실 테이블입니다. 본질적으로 차원의 교차점입니다. 팩트리스 테이블에는 두 가지 유형이 있습니다. 하나는 이벤트 캡처 용이고 다른 하나는 조건 설명 용입니다.
느리게 변경되는 차원은 시간이 지남에 따라 속성 값이 변경되는 것을 나타냅니다. SCD는 유형 1, 유형 2 및 유형 3의 세 가지 유형이 있습니다.