BLOG

[Techblog] Deequ 및 AWS Glue를 사용하여 서버리스 데이터 품질 및 분석 프레임 워크 구축하기
작성일: 2021-01-21

활용 가능한 데이터의 양이 증가함에 따라 기업들은 관리하는 데이터의 양뿐만 아니라 퀄리티 관리에 많은 어려움을 겪습니다. 실제로 데이터 양과 속도와 마찬가지로 정확성 또한 데이터 분석에 중요한 문제입니다. 이는 데이터 분석과 데이터의 가치를 보장하기 위한 중요한 조건으로 간주됩니다. 고품질 데이터는 대게 목적에 적합하고 실제 구조를 잘 나타냅니다. 데이터 소스가 이러한 요구 사항을 충족하는지 확인하는 것은 어려운 작업이지만 자동화된 접근 방식과 적절한 도구를 통해 해결할 수 있습니다.

 

데이터 품질을 대규모로 관리할 때의 문제점으로는 적합한 데이터 품질 관리 도구를 선택, 데이터에 적용할 규칙과 제약 조건 관리, 프로덕션 인프라 설정에 필요한 대규모 초기 비용 등이 있습니다.

 

Amazon에서 내부적으로 개발한 오픈 소스 데이터 품질 라이브러리인 Deequ 는 수십억 개의 레코드가 있는 데이터 세트로 확장할 수 있는 데이터에 대한 단위 테스트를 정의하여 이러한 요구 사항을 해결합니다. 자동 제약 제안 및 확인, 메트릭 계산 및 데이터 프로파일 링과 같은 여러 기능을 제공합니다. Amazon에서 Deequ를 사용하는 방법에 대한 자세한 내용은 Deequ를 사용하여 대규모 데이터 품질 데이터 테스트 단원을 참고하세요.

 

인프라 구축, 사용자 지정 AWS Glue 작업 작성, 데이터 프로파일링 및 적용 전에 규칙 생성을 포함하여 프로덕션에서 Deequ를 구현하려면 여러 단계를 수행해야 합니다. 그렇다면 오늘은 이 프로세스와 오케스트레이션을 단순화하는 오픈 소스 데이터 품질 및 분석 프레임 워크 (DQAF)를 소개해 드리겠습니다. Deequ를 기반으로 구축된 이 프레임 워크를 사용하면 필요한 데이터 품질 작업을 쉽게 생성하고, 웹 UI를 통해 관련 제약 조건을 관리하고, 데이터 레이크로 수집할 때 데이터에서 실행할 수 있습니다.

 

 

아키텍처

다음 아키텍처 다이어그램에 나와있는 것처럼 DQAF는 서버리스 AWS 기술을 독점적으로 사용합니다. AWS Glue 데이터 카탈로그의 데이터베이스와 테이블을 AWS Glue 작업의 인풋으로 사용하고 다양한 데이터 품질 지표를 Amazon Simple Storage Service (Amazon S3)에 출력합니다. 또한 이전에 사용하지 않은 데이터에 대한 제약 조건을 자동으로 생성하여 시간을 절약합니다. 제안 결과는 Amazon DynamoDB 테이블에 저장되며 AWS Amplify 관리형 UI 에서 데이터 소유자가 언제든지 검토하고 수정할 수 있습니다. Amplify를 사용하면 AWS에서 확장 가능한 웹 애플리케이션을 쉽게 생성, 구성 및 구현할 수 있습니다. 이러한 작업의 오케스트레이션은 AWS Step Functions에서 수행됩니다. 코드, 아티팩트 및 설치 가이드는 GitHub 저장소에서 사용할 수 있습니다.

 

 

이 게시물에서는 샘플 데이터를 사용하여 DQAF를 배포하는 과정을 살펴 봅니다. 프레임 워크를 배포하는 동일한 리전에서 하나 이상의 테이블을 호스팅하는 AWS Glue 데이터 카탈로그에 데이터베이스가 있다고 가정합니다. 우리는legislators 데이터 베이스와 미국 국회의원에 대한 데이터를 참조하는 두 개의 테이블 (persons_json및 organizations_json)이 있는 데이터베이스를 사용합니다. 이 데이터베이스에 대한 자세한 내용은 코드 예제: 데이터 결합 및 관계 화를 참고하세요.

 

 

 

솔루션 배포

아래 버튼을 클릭하여 마지막으로 사용한 리전의 AWS 계정에 솔루션을 배포하는 AWS CloudFormation 스택을 시작하세요.

 

 

 

이 프로세스를 완료하는 데 10 ~ 15 분이 걸립니다. CloudFormation 스택이 CREATE_COMPLETE 상태를 표시하는지 확인하여 프레임 워크가 성공적으로 배포되었는지 확인할 수 있습니다.

 

 

데이터 품질 및 분석 프레임 워크 테스트

다음 단계는 테스트 데이터를 이해하고 데이터 품질 제약을 설정하는 것입니다. 제약 조건은 들어오는 데이터가 다양한 차원 (예 : 완전성, 일관성 또는 컨텍스트 정확도)에 따라 특정 요구 사항을 충족하는지 여부를 확인하는 규칙 집합으로 정의할 수 있습니다. 이러한 규칙을 만드는 것은 여러 열이 있는 테이블이 많은 경우 힘든 작업일 수 있지만 DQAF를 사용하면 데이터를 샘플링하고 제약 조건을 자동으로 제안하여 쉽게 만들 수 있습니다.

 

Step Functions 콘솔 data-quality-sm에서 프레임 워크의 데이터 품질에 대한 진입점을 나타내는 상태 머신을 찾습니다. 유효한 입력을 제공하면 Deequ를 실행하는 일련의 AWS Glue 작업이 시작됩니다. 이 단계 기능은 요청 시, 일정에 따라 또는 이벤트를 기반으로 호출 할 수 있습니다. JSON 형식으로 값을 입력하여 상태 머신을 실행합니다.

 

 

 

첫 번째 작업 완료 및 제약 조건 자동 제안

단계 함수가 트리거된 후 수행할 데이터 품질 검사를 결정하는 AWS Glue 컨트롤러 작업을 호출합니다. 제출된 테이블은 이전에 확인된 적이 없기 때문에 첫 번째 단계는 데이터 속성에 대한 데이터 품질 제약을 생성하는 것입니다. Deequ에서 이는 제약 조건의 자동 제안을 통해 이루어지며, 데이터가 프로파일링되고 일련의 휴리스틱 규칙이 적용되어 제약 조건을 제안합니다. 대규모 다중열 데이터 세트를 처리할 때 특히 유용합니다. 프레임 워크에서 이 작업은 AWS Glue 제안 작업에 의해 수행됩니다. 이 작업은 제약 조건을 DataQualitySuggestions DynamoDB 테이블에 기록하고 이러한 제안을 기반으로 하는 예비 품질 검사 결과를 Parquet 파일 형식으로 Amazon S3에 출력합니다.

 

AWS Glue 제안 작업

Deequ 제안 작업은 세 가지 주요 차원을 기반으로 제약 조건을 생성합니다.

  • 완전성 – null 값의 존재를 측정 (예 : isComplete(“gender”)또는isComplete(“name”)
  • 일관성 – 데이터 유형 및 값 범위의 일관성 예 .isUnique(“id”)또는 isContainedIn(“gender”, Array(“female”,”male”))
  • 통계 – 데이터의 일 변량 측정 기준 (예 : .hasMax(“Salary”, “90000”)또는.hasSize(_>=10)

 

다음 표에는 자동으로 제안된 제약 조건 외에 수동으로 추가 할 수 있는 사용 가능한 제약 조건이 나열되어 있습니다.

제약 매개변수 시맨틱
차원 완전성
isComplete 열에 누락된 값 확인
hasCompleteness 열, udf 열에서 누락된 값의 사용자 지정 유효성 검사
차원 일관성
isUnique 열 중복 확인
hasUniqueness 열, udf 열의 고유 값 비율에 대한 사용자 지정 유효성 검사
hasDistinctness 열, udf 열의 고유 행 비율에 대한 사용자 지정 유효성 검사
isInRange 열, 값 범위 유효한 범위에 있는 값의 일부에 대한 유효성 검사
hasConsistentType 유형이 동일한 값의 가장 큰 부분에 대한 유효성 검사
isNonNegative 숫자 열의 모든 값 음수 여부 확인
isLessThan 첫 번째 열의 모든 값이 항상 두 번째 열보다 작은지의 여부 확인
satisfies 제약조건 모든 행이 제약 조건과 일치하는지 여부 유효성 검증
satisfiesIf 제약조건 첫 번째 술어와 일치하는 모든 행이 두 번째 술어와 일치하는지 여부 유효성 검증
hasPredictability 열, 열, udf 열 예측 가능성에 대한 사용자 정의 유효성 검사
통계 (차원 일관성을 확인하는 데 사용할 수 있음)
hasSize udf 레코드 수의 사용자 지정 유효성 검사
hasTypeConsistency 열, udf 동일한 데이터 유형 값의 최대 부분에 대한 사용자 지정 유효성 검사
hastCountDistinct 열에 있는 고유한 Null이 아닌 값의 수에 대한 사용자 지정 유효성 검사
hasApproxCountDistinct 열, udf 고유한 null이 아닌 값의 대략적인 수에 대한 사용자 지정 유효성 검사
hasMin 열, udf 열의 최소값에 대한 사용자 지정 유효성 검사
hasMax 열, udf 열의 최대 값에 대한 사용자 지정 유효성 검사
hasMean 열, udf 열의 평균값에 대한 사용자 지정 유효성 검사
hasStandardDeviation 열, udf 열의 표준 편차 값에 대한 사용자 지정 유효성 검사
hasApproxQuantile 열, 분위수, udf 열의 특정 분위 수에 대한 사용자 지정 유효성 검사 (근사치)
hasEntropy 열, udf 열 엔트로피의 사용자 지정 유효성 검사
hasMutualInformation 열 쌍, udf 열 쌍의 상호 정보에 대한 사용자 지정 유효성 검사
hasHistogramValues 열, udf 열 히스토그램의 사용자 지정 유효성 검사
hasCorrelation 열 쌍, udf 열 쌍의 상관 관계에 대한 사용자 지정 유효성 검사

 

다음 스크린 샷은 AWS Glue 작업에서 생성된 제약 조건 제안과 함께 DynamoDB 테이블 출력을 보여줍니다.

 

 

AWS Glue 데이터 프로파일러 작업

Deequ는 또한 데이터의 단일 열 프로파일링을 지원하며 구현은 수십억 개의 행이 있는 대규모 데이터 세트로 확장됩니다. 결과적으로 데이터의 각 열에 대한 프로필을 가져와 열의 완전성, 대략적인 고유 값 수 및 추론된 데이터 유형을 검사할 수 있습니다.

 

컨트롤러는 제안 작업과 동시에 AWS Glue 데이터 프로파일러 작업을 트리거합니다. 이 프로파일러 Deequ 프로세스는 데이터에 대해 세 번의 패스를 실행하고 대규모 데이터 세트로 쉽게 확장할 수 있도록 셔플을 방지합니다. 결과는 S3 데이터 품질 버킷에 Parquet 파일로 저장됩니다.

 

컨트롤러 작업이 완료되면 데이터 품질 상태 시스템의 두 번째 단계는 Amazon S3 출력 데이터를 AWS Glue 데이터 카탈로그의 data_quality_db 데이터베이스로 크롤링한 다음 즉시 Amazon Athena 에서 쿼리할 수 ​​있습니다. 다음 스크린 샷은 이 AWS Glue 프레임 워크에서 생성된 테이블 목록과 데이터 프로파일러 결과의 샘플 출력을 보여줍니다.

 

 

데이터 품질 제약 검토 및 확인

Deequ가 데이터 품질 규칙을 제안하는 것처럼 데이터 관리자는 프로덕션에 적용하기 전에 먼저 제약 조건을 검토해야 합니다. DynamoDB에서 직접 큰 테이블을 편집하는 것은 번거로울 수 있으므로 제약 조건을 추가하거나 수정할 수 있는 웹 앱을 만들었습니다. 변경 사항은 백그라운드의 관련 DynamoDB 테이블에서 업데이트됩니다.

 

 

웹 프런트 엔드에 액세스

사용자 인터페이스에 액세스하려면 AWS Amplify 콘솔에서 deequ-constraints앱을 선택하세요. URL (https://<env>.<appsync_app_id>.amplifyapp.com)을 선택하면 데이터 품질 제약 프런트 엔드가 열립니다. Amazon Cognito로 등록 프로세스를 완료하고 (계정 생성) 로그인하면 다음 스크린 샷과 유사한 UI가 표시됩니다.

 

 

이전 단계에서 AWS Glue 작업에서 생성된 데이터 품질 제약 제안을 나열합니다. 데이터 소유자는 UI를 통해 언제든지 이러한 제약 조건을 추가 또는 제거하고 활성화 또는 비활성화 할 수 있습니다. 제안은 기본적으로 활성화되어 있지 않습니다. 이렇게하 면 모든 제약 조건이 처리되기 전에 사람이 검토해야 합니다. 확인란을 선택하면 제약 조건이 활성화됩니다.

 

 

데이터 분석기 (메트릭 계산)

프로파일링과 함께 Deequ는 데이터 분석기 메트릭 (예 : 완전성, 최대 값 및 상관 관계) 이라는 열 수준 통계를 생성할 수도 있습니다 . 예를 들어 기본 키에서 null 값의 공유 또는 두 열 간의 상관 관계를 강조하여 데이터 품질 문제를 발견하는 데 도움이 될 수 있습니다.

 

다음 표에는 모든 열에 적용 할 수 있는 측정 항목이 나열되어 있습니다.

미터법 시맨틱
차원 완전성
Completeness 열에 결측값이 아닌 값의 분수
차원 일관성
Size 기록 수
Compliance 제약조건과 일치하는 컬럼 비율
Uniqueness 열의 고유한 값 비율
Distinctness 열의 고유한 행 비율
ValueRange 열에 대한 값 범위 확인
DataType 열에 대한 데이터 유형 추론
Predictability 열 값의 예측 가능성
통계 (차원 일관성을 확인하는 데 사용할 수 있음)
Minimum 열의 최소 값
Maximum 열의 최대 값
Mean 열의 평균값
StandardDeviation 열 값 분포의 표준 편차
CountDistinct 열의 고유 값 수
ApproxCountDistinct 열의 고유 값 수
ApproxQuantile 열에 있는 값의 대략적인 분위 수
Correlation 두 열 간의 상관 관계
Entropy 열의 값 분포 엔트로피
Histogram 선택적으로 비닝 된 열의 히스토그램
MutualInformation 두 열 간의 상호 정보

 

웹 UI에서 이러한 측정 항목을 Analyzers탭 에 추가 할 수 있습니다. 다음 스크린 샷에서는 id  열에 ApproxCountDistinct메트릭을 추가합니다. 선택하면 DynamoDB Create analyzer의 DataQualityAnalyzer테이블에 레코드가 삽입되고 제약 조건이 활성화됩니다.

 

 

AWS Glue 확인 작업

이제 규칙을 프로덕션에 적용 할 준비가 되었으며 Athena를 사용하여 결과를 볼 수 있습니다. 입력과 동일한 JSON을 사용하여 단계 함수 실행을 시작할 수 있습니다.

{

  “glueDatabase”: “legislators”,

  “glueTables”: “persons_json, organizations_json”

}

 

 

이번에는 AWS Glue 확인 작업이 컨트롤러에 의해 트리거됩니다. 이 작업은 제안 제약 조건을 확인하고 메트릭 계산을 수행하는 두 가지 작업을 수행합니다. constraints_verification_results테이블 아래의 Athena에서 결과를 즉시 쿼리 할 수 ​​있습니다.

 

다음 스크린 샷은 확인 출력을 보여줍니다.

 

다음 스크린 샷은 메트릭 계산 결과를 보여줍니다.

 

 

요약

대규모의 실제 데이터 세트를 처리하려면 데이터 품질에 대한 확장 가능하고 자동화된 접근 방식이 필요합니다. Deequ는 대규모 프로덕션 데이터 세트의 품질을 측정할 때 Amazon에서 선택하는 도구입니다. 데이터 품질 메트릭을 계산하고 제약 조건을 제안 및 확인하며 데이터를 프로파일링하는 데 사용됩니다.

 

지금까지 필요한 인프라를 설정하고 데이터 품질 제약을 쉽게 관리할 수 ​​있도록 하여 프로덕션 환경에서 Deequ를 배포하는 프로세스를 단순화하는 것을 목표로 하는 오픈 소스, 서버리스 데이터 품질 및 분석 프레임 워크를 소개했습니다. 이를 통해 데이터 소유자는 이전에 보지 못한 데이터에 대해 자동 된 데이터 품질 제안을 생성한 다음 UI에서 검토하고 수정할 수 있습니다. 이러한 제약은 Athena를 통해 쿼리 가능한 데이터 품질 결과를 생성하기 위해 다양한 AWS Glue 작업에 대한 입력으로 사용됩니다. 데이터에 이 프레임 워크를 사용해보고 이를 개선하는 방법에 대한 id 제안을 오픈 소스 GitHub 저장소 에 남겨주세요.

원문URL: https://aws.amazon.com/ko/blogs/big-data/building-a-serverless-data-quality-and-analysis-framework-with-deequ-and-aws-glue/

 

메가존 클라우드 TechBlog는 AWS BLOG 영문 게재 글이나 관련 기사 중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아 정기적으로 게재하고 있습니다. 추가로 번역 및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS 페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.