데이터 품질 문제의 교정(Remediation)

데이터 품질 문제의 교정(Remediation)

Enterprise Edition 기능 — 데이터 품질 모니터링(Data Quality Monitoring)은 Enterprise Edition이 필요해요. 업그레이드 문의는 Snowflake 지원에 연락해 주세요.

데이터 품질 메트릭(DMF)을 사용하면 테이블의 레코드 중 품질 문제가 있을 수 있는 레코드가 몇 개인지 식별할 수 있어요. 예를 들어 SNOWFLAKE.CORE.NULL_COUNT DMF는 특정 컬럼에 NULL 값이 있는 레코드가 몇 개인지 식별할 수 있어요.

이러한 잠재적 품질 문제를 고치는 데 도움이 되도록 SYSTEM$DATA_METRIC_SCAN 시스템 함수를 호출해 DMF가 데이터 품질 검사에 실패한 데이터를 포함한다고 식별한 개별 레코드를 반환받을 수 있어요. 예를 들어 NULL_COUNT DMF를 SYSTEM$DATA_METRIC_SCAN 함수에 인자로 전달하면 NULL 값을 포함한 실제 레코드(단지 NULL 값을 포함한 레코드 수뿐만 아니라)를 얻을 수 있어요.

출처: Documentation

본문

지원되는 DMF

SYSTEM$DATA_METRIC_SCAN 함수는 DMF를 인자로 받아 DMF가 문제 데이터를 포함한다고 식별한 레코드를 반환해요. 다음 시스템 DMF를 인자로 사용할 수 있어요.

제한 사항 및 고려 사항

  • SYSTEM$DATA_METRIC_SCAN 함수의 인자로 사용자 지정 DMF를 사용할 수 없어요.
  • 테이블이 마스킹 정책이나 행 액세스 정책 같은 정책으로 보호되면, 결과가 함수 실행 시 사용자의 역할에 따라 달라지므로 SYSTEM$DATA_METRIC_SCAN 함수가 예상치 못한 데이터나 불완전한 데이터를 반환할 수 있어요.

SYSTEM$DATA_METRIC_SCAN 함수 호출

SYSTEM$DATA_METRIC_SCAN 함수를 호출하면 DMF로 테이블을 분석해 가능한 데이터 품질 문제를 식별해요. SYSTEM$DATA_METRIC_SCAN 함수에 테이블 이름, DMF, 문제 레코드를 식별하는 데 도움이 되는 DMF에 전달되는 인자를 전달해야 해요.

예를 들어 SNOWFLAKE.CORE.NULL_COUNT 시스템 메트릭 함수가 특정 컬럼의 NULL 값 총 수를 반환한다고 가정하면, 다음은 employeesTable 테이블에서 SSN 컬럼에 NULL 값이 있는 행을 반환해요.

SELECT *
  FROM TABLE(SYSTEM$DATA_METRIC_SCAN(
    REF_ENTITY_NAME  => 'governance.sch.employeesTable'
    ,METRIC_NAME  => 'snowflake.core.null_count'
    ,ARGUMENT_NAME => 'SSN'
    ,AT_TIMESTAMP => '2024-08-28 02:00:00 -0700'
  ));

과거에 테이블 또는 뷰에 대한 DMF 평가 결과를 확인하려면 AT_TIMESTAMP 인자를 전달할 수 있어요. AT_TIMESTAMP 인자를 사용하면 Time Travel로 타임스탬프 문자열을 변환해 '2024-08-28 02:00:00 -0700' 타임스탬프에 그 테이블에 존재했던 레코드만 반환할 수 있어요.

ACCEPTED_VALUES DMF

ACCEPTED_VALUES DMF가 데이터 품질 문제를 포함한다고 식별한 레코드를 반환하도록 SYSTEM$DATA_METRIC_SCAN 함수를 호출할 때는 추가 인자를 지정해야 해요. 이 인자 ARGUMENT_EXPRESSION으로 반환할 행을 결정하는 부울 표현식을 지정할 수 있어요. 컬럼의 값이 표현식과 일치하지 않으면 그 행이 반환돼요.

다음 명령은 age 컬럼의 값이 5보다 작거나 같은 행(즉, ARGUMENT_EXPRESSION이 지정한 조건과 일치하지 않는 행)을 반환해요.

SELECT *
  FROM TABLE(SYSTEM$DATA_METRIC_SCAN(
    REF_ENTITY_NAME  => 'governance.sch.employeesTable',
    METRIC_NAME  => 'snowflake.core.accepted_values',
    ARGUMENT_NAME => 'age',
    ARGUMENT_EXPRESSION => 'age > 5'
  ));

SYSTEM$DATA_METRIC_SCAN으로 데이터 고치기

SYSTEM$DATA_METRIC_SCAN 함수는 행 집합을 반환하는 테이블 함수에요. 함수의 출력은 DML 문 안에서 사용해 데이터 품질 검사에 실패한 데이터를 포함한다고 식별된 레코드에 조치를 취할 수 있어요.

t 테이블의 email 컬럼의 빈 값을 NULL 값으로 바꾸려 한다고 가정해요. BLANK_COUNT 데이터 메트릭 함수가 빈 값을 식별하므로 다음 문을 실행할 수 있어요.

UPDATE T
  SET email = null
  WHERE T.ID IN (SELECT ID FROM TABLE(SYSTEM$DATA_METRIC_SCAN(
    REF_ENTITY_NAME => 't'
    ,METRIC_NAME => 'snowflake.core.blank_count'
    ,ARGUMENT_NAME => 'email'
  )));

더 알아보기