자동 데이터 품질 개요

이 문서에서는 데이터 품질을 정의하고 측정할 수 있는 Dataplex 자동 데이터 품질을 설명합니다. 데이터 스캔을 자동화하고 정의된 규칙에 따라 데이터를 검증하며 데이터가 품질 요구사항을 충족하지 않으면 알림을 로깅할 수 있습니다. 데이터 품질 규칙 및 배포를 코드로 관리하여 데이터 프로덕션 파이프라인의 무결성을 향상시킬 수 있습니다.

Dataplex 데이터 프로파일링 규칙 권장사항을 사용하거나 Google Cloud 콘솔에서 커스텀 규칙을 빌드하여 시작할 수 있습니다. Dataplex는 Dataplex 자동 데이터 품질과 통합된 모니터링, 문제 해결, Cloud Logging 알림을 제공합니다.

개념 모델

데이터 품질 스캔은 테이블 데이터에 품질 규칙을 적용하여 결과를 보고합니다.

데이터 스캔은 BigQuery 및 Cloud Storage에서 데이터를 샘플링하고 다양한 유형의 메타데이터를 추론하는 Dataplex 작업입니다. 자동 데이터 품질을 사용하여 테이블의 품질을 측정하려면 data quality 유형의 DataScan 객체를 만듭니다. 스캔은 하나의 BigQuery 테이블에서만 실행됩니다. 스캔은 Google 테넌트 프로젝트의 리소스를 사용하므로 자체 인프라를 설정할 필요가 없습니다.

데이터 품질 스캔을 만들고 사용하는 단계는 다음과 같습니다.

  1. 데이터 품질 규칙 정의
  2. 규칙 실행 구성
  3. 데이터 품질 스캔 결과 분석
  4. 모니터링 및 알림 설정
  5. 데이터 품질 오류 문제 해결

규칙 정의

데이터 품질 스캔과 관련된 데이터 품질 규칙은 데이터 기대치를 정의합니다. 다음과 같은 방법으로 데이터 품질 규칙을 만들 수 있습니다.

사전 정의된 규칙

Dataplex는 행 수준 또는 집계의 두 가지 사전 정의된 규칙 카테고리를 지원합니다.

행 수준

행 수준 카테고리 규칙의 경우 각 데이터 행에 대해 예측이 적용됩니다. 각 행은 조건을 독립적으로 통과하거나 실패합니다. 예를 들면 column_A_value < 1입니다.

행 수준 확인을 수행하려면 통과 기준을 지정해야 합니다. 규칙을 통과하는 행의 비율이 기준 값 아래로 떨어지면 규칙은 실패합니다.

집계

집계 규칙의 경우 예측은 전체 데이터에서 집계된 단일 값에 적용됩니다. 예를 들면 Avg(someCol) >= 10입니다. 통과하려면 검사가 불리언 true로 평가되어야 합니다. 집계 규칙은 각 행에 대해 독립적인 통과 또는 실패 수를 제공하지 않습니다.

두 규칙 카테고리 모두에서 다음 매개변수를 설정할 수 있습니다.

  • 규칙이 적용되는 열
  • 사전 정의된 측정기준 집합에서 가져온 측정기준

다음 표에는 지원되는 행 수준 및 집계 규칙 유형이 나열되어 있습니다.

규칙 유형
(Google Cloud 콘솔에서의 이름)
행 수준 또는 집계 규칙 설명 지원되는 열 유형 규칙별 매개변수
RangeExpectation
(범위 확인)
행 수준 값이 최솟값과 최댓값 사이인지 확인합니다. 모든 숫자, 날짜, 타임스탬프 유형 열 필수:
  • 통과 기준 비율
  • mean, min 또는 max 값: 값을 최소 하나 이상 지정합니다.
선택사항:
  • strict min 사용 설정: 사용 설정하면 규칙 검사에서 '>=' 대신 '>'를 사용합니다.
  • strict max 사용 설정: 사용 설정하면 규칙 검사에서 '<=' 대신 '<'를 사용합니다.
  • ignore null 사용 설정: 사용 설정하면 규칙 검사에서 null 값이 무시됩니다.
NonNullExpectation
(null 확인)
행 수준 열 값이 NULL이 아닌지 확인합니다. 지원되는 모든 열 유형 필수:
  • 통과 기준의 비율
SetExpectation
(설정 확인)
행 수준 열의 값이 세트에 지정된 값 중 하나인지 확인합니다. 지원되는 모든 열 유형(RecordStruct 제외) 필수:
  • 확인할 문자열 값의 집합입니다.
  • 통과 기준의 비율
선택사항:
  • ignore null 사용 설정: 사용 설정하면 규칙 검사에서 null 값이 무시됩니다.
RegexExpectation
(정규 표현식 확인)
행 수준 지정된 정규 표현식으로 값을 다시 확인합니다. 문자열 필수:
  • 확인에 사용되는 정규 표현식 패턴입니다.
  • 통과 기준의 비율
  • 참고: Cloud 표준 SQL은 re2 라이브러리를 사용하여 정규 표현식을 지원합니다. 정규 표현식 문법은 해당 문서를 참조하세요.
선택사항:
  • ignore null 사용 설정: 사용 설정하면 규칙 검사에서 null 값이 무시됩니다.
Uniqueness
(고유성 확인)
집계 열의 모든 값이 고유한지 확인합니다. 지원되는 모든 열 유형(RecordStruct 제외) 필수:
  • 지원되는 매개변수의 열 및 측정기준입니다.
선택사항:
  • ignore null 사용 설정: 사용 설정하면 규칙 검사에서 null 값이 무시됩니다.
StatisticRangeExpectation
(통계 확인)
집계 제공된 통계 측정이 예상 범위와 일치하는지 확인합니다. 지원되는 모든 숫자 열 유형입니다. 필수:
  • mean, min 또는 max 값: 값을 최소 하나 이상 지정합니다.
선택사항:
  • strict min 사용 설정: 사용 설정하면 규칙 검사에서 '>=' 대신 '>'를 사용합니다.
  • strict max 사용 설정: 사용 설정하면 규칙 검사에서 '<=' 대신 '<'를 사용합니다.

지원되는 커스텀 SQL 규칙 유형

SQL 규칙은 커스텀 로직으로 검증을 확장할 수 있는 유연성을 제공합니다. 이러한 규칙은 다음 유형으로 제공됩니다.

규칙 유형 행 수준 또는 집계 규칙 설명 지원되는 열 유형 규칙별 매개변수 예시
행 조건 행 수준

WHERE 절에 SQL 표현식을 정의하여 모든 행에 대한 예측을 지정합니다. SQL 표현식은 행당 true(통과) 또는 false(실패)로 평가되어야 합니다. Dataplex는 이 기대치를 통과하는 행의 비율을 계산하고 이 값과 통과 기준 비율을 비교하여 규칙의 성공 또는 실패를 결정합니다.

예를 들어 참조 무결성 검사를 만들기 위해 표현식은 다른 테이블에 대한 참조를 포함할 수 있습니다.

모든 열 필수:
  • 사용할 SQL 조건
  • 통과 기준 비율
  • 측정기준
선택사항:
  • 이 규칙을 연결할 열입니다.
grossWeight <= netWeight
테이블 조건
(집계 SQL 표현식)
집계

이러한 규칙은 테이블당 한 번 실행됩니다. 불리언 true(통과) 또는 false(실패)로 평가되는 SQL 표현식을 제공합니다.

SQL 표현식에는 표현식 서브 쿼리를 사용하여 다른 테이블에 대한 참조를 포함할 수 있습니다.

모든 열 필수:
  • 사용할 SQL 조건
  • 측정기준
선택사항:
  • 이 규칙을 연결할 열

간단한 집계 예시:
avg(price) > 100

표현식 서브 쿼리를 사용하여 서로 다른 테이블 값 비교:
(SELECT COUNT(*) FROM `example_project.example_dataset.different-table`) < COUNT(*)

SQL 어설션 집계

어설션 규칙은 데이터 품질 쿼리를 사용하여 쿼리에 지정된 조건 하나 이상에 실패한 행을 찾습니다. 잘못된 상태와 일치하는 행을 반환하도록 평가되는 SQL 문을 제공합니다. 쿼리가 행을 반환하면 규칙이 실패합니다.

SQL 문에서 후행 세미콜론을 생략합니다.

SQL 문에는 표현식 서브 쿼리를 사용하여 다른 테이블에 대한 참조를 포함할 수 있습니다.

모든 열 필수:
  • 잘못된 상태를 확인하는 SQL 문
  • 측정기준
선택사항:
  • 이 규칙을 연결할 열입니다.

discount_pct가 100보다 크지 않은지 확인하는 간단한 집계 예시:
SELECT * FROM example_project.example_dataset.table WHERE discount_pct > 100

표현식 서브 쿼리를 사용하여 서로 다른 테이블 값 비교:
SELECT * FROM `example_project.example_dataset.different-table` WHERE gross_weight > (SELECT avg(gross_weight) FROM `example_project.example_dataset.different-table`)

규칙의 예시는 자동 데이터 품질 샘플 규칙을 참조하세요.

지원되는 SQL 함수는 GoogleSQL 참조를 확인하세요.

측정기준

측정기준을 사용하면 모니터링 및 알림에 사용되는 여러 데이터 품질 규칙의 결과를 집계할 수 있습니다. 모든 데이터 품질 규칙을 측정기준과 연결해야 합니다. Dataplex는 다음 측정기준을 지원합니다.

  • 최신 상태
  • 볼륨
  • 완료도
  • 유효성
  • 일관성
  • 정확성
  • 고유성

규칙에 입력된 입력

모든 값의 매개변수는 문자열 값으로 API에 전달됩니다. Dataplex를 사용하려면 BigQuery 지정 형식을 따르기 위한 입력이 필요합니다.

바이너리 유형 매개변수는 base64로 인코딩된 문자열로 전달될 수 있습니다.

유형 지원되는 형식 예시
바이너리 Base64로 인코딩된 값 YXBwbGU=
타임스탬프 YYYY-[M]M-[D]D[( |T)[H]H:[M]M:[S]S[.F]] [time_zone]
또는 YYYY-[M]M-[D]D[( |T)[H]H:[M]M:[S]S[.F]][time_zone_offset]
2014-09-27 12:30:00.45-08
날짜 YYYY-M[M]-D[D] 2014-09-27
시간 [H]H:[M]M:[S]S[.DDDDDD] 12:30:00.45
DateTime YYYY-[M]M-[D]D [[H]H:[M]M:[S]S[.DDDDDD]] 2014-09-27 12:30:00.45

데이터 참조 매개변수

커스텀 SQL 규칙을 만들 때 소스 테이블과 해당 필터를 명시적으로 언급하는 대신 규칙의 데이터 참조 매개변수 ${data()}를 사용하여 데이터 소스 테이블과 모든 전제조건 필터를 참조할 수 있습니다. Dataplex는 매개변수를 소스 테이블과 필터에 대한 참조로 해석합니다. 전제조건 필터 예시에는 행 필터, 샘플링 비율, 증분 필터 등이 있습니다.

예를 들어 my_project_id.dim_dataset.dim_currency라는 데이터 소스 테이블이 있다고 가정해 보겠습니다. 새로운 일일 데이터만 스캔하는 증분 데이터 품질 스캔을 실행하려고 합니다. 오늘 항목을 필터링하는 행 필터인 transaction_timestamp >= current_date()가 테이블에 적용됩니다.

오늘 discount_pct가 포함된 행을 찾는 커스텀 SQL 규칙은 다음과 같습니다.

discount_pct IN (SELECT discount_pct FROM my_project_id.dim_dataset.dim_currency WHERE transaction_timestamp >= current_date())

데이터 참조 매개변수를 사용하는 경우 규칙을 간소화할 수 있습니다. 테이블과 해당 전제조건 필터의 멘션을 ${data()} 매개변수로 바꿉니다.

discount_pct IN (SELECT discount_pct FROM ${data()})

Dataplex는 ${data()} 매개변수를 현재 항목 my_project_id.dim_dataset.dim_currency WHERE transaction_timestamp >= current_date()가 있는 데이터 소스 테이블에 대한 참조로 해석합니다. 이 예시에서 데이터 참조 매개변수는 증분 데이터만 참조합니다.

${data()} 매개변수는 대소문자를 구분합니다.

서브 쿼리 내에서 별칭을 사용하여 소스 테이블의 열을 참조하는 경우 데이터 참조 매개변수를 사용하여 소스 테이블을 참조하거나 테이블 참조를 생략합니다. WHERE 절에 직접 테이블 참조를 사용하여 소스 테이블의 열을 참조하지 마세요.

다음을 권장합니다.

  • 데이터 참조 매개변수를 사용하여 소스 테이블을 참조합니다.

    discount_pct IN (
    SELECT discount_pct FROM
    `my_project_id.dim_dataset.dim_currency` AS temp-table
    WHERE
    temp-table.transaction_timestamp = ${data()}.timestamp
    )
    
  • 테이블 참조를 생략합니다.

    discount_pct IN (
    SELECT discount_pct FROM
    `my_project_id.dim_dataset.dim_currency` AS temp-table
    WHERE
    temp-table.transaction_timestamp = timestamp
    )
    

다음은 권장하지 않습니다.

  • 직접 테이블 참조를 사용하여 소스 테이블의 열을 참조하지 마세요.

    discount_pct IN (
    SELECT discount_pct FROM
    `my_project_id.dim_dataset.dim_currency` AS temp-table
    WHERE
    temp-table.transaction_timestamp = `my_project_id.dim_dataset.dim_currency`.timestamp
    )
    

규칙 실행

데이터 품질 스캔이 특정 간격으로 실행되도록 예약하거나 요청 시 스캔을 실행할 수 있습니다. 데이터 품질 스캔을 관리하려면 API 또는 Google Cloud 콘솔을 사용하면 됩니다.

데이터 품질 스캔을 실행하면 Dataplex가 작업을 만듭니다. 데이터 품질 스캔 사양의 일부로 작업 범위를 다음 중 하나로 지정할 수 있습니다.

전체 테이블
각 작업은 전체 테이블을 검증합니다.
증분
각 작업은 증분 데이터를 검증합니다. 증분을 결정하려면 마커로 사용할 수 있는 Date/Timestamp 열을 테이블에 제공합니다. 일반적으로 이 테이블은 테이블의 파티션을 나눈 열입니다.

데이터 필터링

Dataplex는 행 필터를 사용하여 데이터 품질을 위해 스캔할 데이터를 필터링할 수 있습니다. 행 필터를 만들면 특정 기간이나 특정 세그먼트(예: 특정 리전) 내의 데이터에 집중할 수 있습니다. 필터를 사용하면 예를 들어 특정 날짜 이전의 타임스탬프가 있는 데이터를 필터링하여 실행 시간과 비용을 줄일 수 있습니다.

샘플 데이터

Dataplex를 사용하면 데이터 품질 스캔을 실행하기 위해 데이터에서 샘플링할 레코드의 비율을 지정할 수 있습니다. 소량의 데이터 샘플에 데이터 품질 스캔을 만들면 실행 시간과 전체 데이터 세트의 쿼리 비용이 절약됩니다.

데이터 품질 스캔 결과

데이터 품질 스캔 결과는 Dataplex에서 제공됩니다. 또한 다음 방법을 사용하여 스캔 결과를 검토하고 분석할 수 있습니다.

  • BigQuery로 결과 내보내기

    추가 분석을 위해 스캔 결과를 BigQuery 테이블로 내보낼 수 있습니다. 보고를 맞춤설정하려면 BigQuery 테이블 데이터를 Looker 대시보드에 연결하면 됩니다. 여러 스캔에서 동일한 결과 테이블을 사용하여 집계 보고서를 빌드할 수 있습니다.

  • Google Cloud 콘솔에 결과 게시

    Google Cloud 콘솔의 소스 테이블 BigQuery 및 Data Catalog 페이지에 데이터 품질 스캔 결과를 게시할 수 있습니다. 소스 테이블의 데이터 품질 탭에서 최신 스캔 결과를 확인할 수 있습니다.

  • 데이터 품질 점수 검토

    각 스캔 결과는 통과된 규칙 비율을 나타내는 데이터 품질 점수를 제공합니다. 점수는 전체 작업 수준, 열 수준(규칙이 열을 기준으로 평가된 경우), 측정기준 수준에서 보고됩니다. 데이터 품질 점수를 사용하여 테이블 또는 열 간의 데이터 품질을 정규화하고 추세를 추적하고 품질 요구사항을 충족하지 않는 데이터를 식별합니다.

자세한 내용은 데이터 품질 스캔 결과 보기를 참조하세요.

모니터링 및 알림

다음 방법을 사용하여 데이터 품질 스캔에 대한 알림을 모니터링하고 받을 수 있습니다.

  • Cloud Logging에서 알림 설정

    로그 탐색기에서 data_scandata_quality_scan_rule_result 로그를 사용하여 데이터 품질 작업을 모니터링할 수 있습니다.

    데이터 품질 작업마다 data_scan_type 필드가 DATA_QUALITY로 설정된 data_scan 로그에는 다음 정보가 포함됩니다.

    • 데이터 스캔에 사용되는 데이터 소스
    • 생성 시간, 시작 시간, 종료 시간, 작업 상태와 같은 작업 실행 세부정보
    • 데이터 품질 작업 결과: 성공 또는 실패
    • 측정기준 수준 통과 또는 실패

    성공한 모든 작업에는 해당 작업의 각 규칙에 대한 다음 세부정보가 있는 data_quality_scan_rule_result 로그가 포함됩니다.

    • 규칙 이름, 규칙 유형, 평가 유형, 측정기준과 같은 구성 정보
    • 통과 또는 실패, 총 행 수, 통과 행 수, null 행 수, 평가된 행 수와 같은 결과 정보

    로그의 정보는 API 및 Google Cloud 콘솔을 통해 제공됩니다. 이 정보를 사용하여 알림을 설정할 수 있습니다. 자세한 내용은 Logging에서 알림 설정을 참조하세요.

  • 이메일 알림 보내기

    이메일 알림을 전송하여 데이터 품질 작업의 상태와 결과를 사용자에게 알릴 수 있습니다. 다음과 같은 시나리오에서 알림을 사용할 수 있습니다.

    • 데이터 품질 점수가 지정된 목표 점수보다 낮습니다.
    • 작업이 실패했습니다.
    • 작업이 완료되었습니다.

    데이터 품질 스캔을 만들 때 알림을 구성합니다.

데이터 품질 오류 문제 해결

규칙이 실패하면 Dataplex에서 실패한 레코드를 가져오는 쿼리를 생성합니다. 이 쿼리를 실행하여 규칙과 일치하지 않는 레코드를 확인합니다. 자세한 내용은 데이터 품질 오류 문제 해결을 참조하세요.

제한사항

  • 데이터 품질 스캔 결과는 Data Catalog에 태그로 게시되지 않습니다.
  • gcloud CLI에서는 규칙 권장사항이 지원되지 않습니다.
  • 측정기준 선택은 사전 정의된 7가지 측정기준 중 하나로 고정되어 있습니다.
  • 데이터 품질 스캔당 규칙 수는 1,000개로 제한됩니다.
  • 이메일 알림은 gcloud CLI 및 API에서만 지원됩니다.
  • 열 수준에서 보고되는 데이터 품질 점수는 API에서만 지원됩니다.

가격 책정

  • Dataplex는 프리미엄 처리 SKU를 사용하여 자동 데이터 품질에 대한 요금을 청구합니다. 자세한 내용은 Dataplex 가격 책정을 참조하세요.

  • 자동 데이터 품질 결과를 카탈로그에 게시하는 기능은 아직 제공되지 않습니다. 사용할 수 있게 되면 카탈로그 메타데이터 스토리지 가격 책정과 동일한 요금이 부과됩니다. 자세한 내용은 가격 책정을 참조하세요.

  • 자동 데이터 품질을 위한 Dataplex 프리미엄 처리는 1분을 최소로 해서 초 단위로 요금이 청구됩니다.

  • 실패한 데이터 품질 스캔에는 요금이 부과되지 않습니다.

  • 요금은 행 수, 열 수, 스캔한 데이터 양, 데이터 품질 규칙 구성, 테이블의 파티션 나누기 및 클러스터링 설정, 스캔 빈도에 따라 달라집니다.

  • 자동 데이터 품질 스캔 비용을 줄일 수 있는 다음과 같은 몇 가지 옵션이 있습니다.

  • 데이터 품질 요금을 Dataplex 프리미엄 처리 SKU의 다른 요금과 분리하고 goog-dataplex-workload-type 라벨에 DATA_QUALITY 값을 사용합니다.

  • 집계 요금을 필터링합니다. 다음 라벨을 사용합니다.

    • goog-dataplex-datascan-data-source-dataplex-entity
    • goog-dataplex-datascan-data-source-dataplex-lake
    • goog-dataplex-datascan-data-source-dataplex-zone
    • goog-dataplex-datascan-data-source-project
    • goog-dataplex-datascan-data-source-region
    • goog-dataplex-datascan-id
    • goog-dataplex-datascan-job-id

다음 단계