데이터 품질 정의 언어(DQDL) 참조 - AWS Glue

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

데이터 품질 정의 언어(DQDL) 참조

데이터 품질 정의 언어 (DQDL) 는 AWS Glue 데이터 품질에 대한 규칙을 정의하는 데 사용하는 도메인별 언어입니다.

이 안내서에서는 언어를 이해하는 데 도움이 되는 주요 DQDL 개념을 소개합니다. 또한 구문 및 예제와 함께 DQDL 규칙 유형에 대한 참조를 제공합니다. 이 가이드를 사용하기 전에 AWS Glue Data Quality에 익숙해지는 것이 좋습니다. 자세한 설명은 AWS Glue 데이터 품질 섹션을 참조하세요.

참고

DynamicRules AWS GlueETL에서만 지원됩니다.

DQDL 구문

DQDL 문서는 대/소문자를 구분하며 개별 데이터 품질 규칙을 그룹화하는 규칙 세트를 포함합니다. 규칙 세트를 구성하려면 한 쌍의 대괄호로 구분된 Rules(대문자) 목록을 생성해야 합니다. 목록에는 다음 예와 같이 쉼표로 구분된 DQDL 규칙이 하나 이상 포함되어야 합니다.

Rules = [ IsComplete "order-id", IsUnique "order-id" ]

규칙 구조

DQDL 규칙의 구조는 규칙 유형에 따라 달라집니다. 하지만 DQDL 규칙은 일반적으로 다음 형식에 적합합니다.

<RuleType> <Parameter> <Parameter> <Expression>

RuleType은 구성하려는 규칙 유형의 이름(대/소문자 구분)입니다. 예: IsComplete, IsUnique 또는 CustomSql. 규칙 파라미터는 규칙 유형마다 다릅니다. DQDL 규칙 유형 및 파라미터에 대한 전체 참조는 DQDL 규칙 유형 참조 섹션을 참조하세요.

복합 규칙

DQDL은 규칙을 결합하는 데 사용될 수 있는 다음과 같은 논리 연산자를 지원합니다. 이러한 규칙을 복합 규칙이라고 합니다.

그리고

논리 and 연산자는 연결하는 규칙이 true인 경우에만 true 결과를 얻습니다. 그렇지 않으면 결합된 규칙에 따라 false 결과를 얻습니다. and 연산자와 연결하는 각 규칙은 괄호로 묶어야 합니다.

다음 예제에서는 and 연산자를 사용하여 두 DQDL 규칙을 결합합니다.

(IsComplete "id") and (IsUnique "id")
또는

논리 or 연산자는 연결하는 규칙 중 하나 이상이 true인 경우에만 true 결과를 얻습니다. or 연산자와 연결하는 각 규칙은 괄호로 묶어야 합니다.

다음 예제에서는 or 연산자를 사용하여 두 DQDL 규칙을 결합합니다.

(RowCount "id" > 100) or (IsPrimaryKey "id")

동일한 연산자를 사용하여 여러 규칙을 연결할 수 있으므로 다음과 같은 규칙 조합이 허용됩니다.

(Mean "Star_Rating" > 3) and (Mean "Order_Total" > 500) and (IsComplete "Order_Id")

하지만 논리 연산자를 단일 표현식으로 결합할 수 없습니다. 예를 들어 다음 결합은 허용되지 않습니다.

(Mean "Star_Rating" > 3) and (Mean "Order_Total" > 500) or (IsComplete "Order_Id")

복합 규칙의 작동 방식

기본적으로 복합 규칙은 전체 데이터셋 또는 테이블에서 개별 규칙으로 평가된 다음 결과를 합산합니다. 즉, 전체 열을 먼저 평가한 다음 연산자를 적용합니다. 이 기본 동작은 예제와 함께 아래에 설명되어 있습니다.

# Dataset +------+------+ |myCol1|myCol2| +------+------+ | 2| 1| | 0| 3| +------+------+ # Overall outcome +----------------------------------------------------------+-------+ |Rule |Outcome| +----------------------------------------------------------+-------+ |(ColumnValues "myCol1" > 1) OR (ColumnValues "myCol2" > 2)|Failed | +----------------------------------------------------------+-------+

위 예시에서는 AWS Glue Data Quality 먼저 (ColumnValues "myCol1" > 1) 어느 것이 실패로 이어질지 평가합니다. 그런 다음 (ColumnValues "myCol2" > 2) 어느 쪽도 실패할지 평가합니다. 두 결과의 조합은 실패로 표시됩니다.

하지만 행 전체를 평가해야 하는 SQL과 유사한 동작을 선호하는 경우 아래 코드 additionalOptions 스니펫에 표시된 대로 ruleEvaluation.scope 매개변수를 명시적으로 설정해야 합니다.

object GlueApp { val datasource = glueContext.getCatalogSource( database="<db>", tableName="<table>", transformationContext="datasource" ).getDynamicFrame() val ruleset = """ Rules = [ (ColumnValues "age" >= 26) OR (ColumnLength "name" >= 4) ] """ val dq_results = EvaluateDataQuality.processRows( frame=datasource, ruleset=ruleset, additionalOptions=JsonOptions(""" { "compositeRuleEvaluation.method":"ROW" } """ ) ) }

일단 설정되면 복합 규칙은 전체 행을 평가하는 단일 규칙처럼 동작합니다. 다음 예제는 이러한 동작을 보여줍니다.

# Row Level outcome +------+------+------------------------------------------------------------+---------------------------+ |myCol1|myCol2|DataQualityRulesPass |DataQualityEvaluationResult| +------+------+------------------------------------------------------------+---------------------------+ |2 |1 |[(ColumnValues "myCol1" > 1) OR (ColumnValues "myCol2" > 2)]|Passed | |0 |3 |[(ColumnValues "myCol1" > 1) OR (ColumnValues "myCol2" > 2)]|Passed | +------+------+------------------------------------------------------------+---------------------------+

전체 결과가 임계값이나 비율에 따라 달라지기 때문에 일부 규칙은 이 기능에서 지원되지 않습니다. 해당 목록은 다음과 같습니다.

비율에 따른 규칙:

  • 완전성

  • DatasetMatch

  • ReferentialIntegrity

  • Uniqueness

임계값에 따른 규칙:

다음 규칙에 임계값이 포함된 경우 해당 규칙은 지원되지 않습니다. 하지만 포함되지 않은 규칙은 with threshold 계속 지원됩니다.

  • ColumnDataType

  • ColumnValues

  • CustomSQL

Expressions

규칙 유형이 부울 응답을 생성하지 않는 경우 부울 응답을 생성하려면 표현식을 파라미터로 제공해야 합니다. 예를 들어 다음 규칙은 열에 있는 모든 값의 중앙값(평균)을 표현식과 비교하여 true 또는 false 결과를 반환합니다.

Mean "colA" between 80 and 100

IsUniqueIsComplete와 같은 일부 규칙 유형은 이미 부울 응답을 반환합니다.

다음 표는 DQDL 규칙에서 사용할 수 있는 표현식을 나열합니다.

지원되는 DQDL 표현식
표현식 설명
= x 규칙 유형 응답이 x와 같은 경우 true로 확인됩니다.
Completeness "colA" = "1.0", ColumnValues "colA" = "2022-06-30"
! = x x 규칙 유형 응답이 x와 같지 않으면 true로 해석됩니다.
ColumnValues "colA" != "a", ColumnValues "colA" != "2022-06-30"
> x 규칙 유형 응답이 x보다 큰 경우 true로 확인됩니다.
ColumnValues "colA" > 10
< x 규칙 유형 응답이 x보다 작은 경우 true로 확인됩니다.
ColumnValues "colA" < 1000, ColumnValues "colA" < "2022-06-30"
>= x 규칙 유형 응답이 x보다 크거나 같은 경우 true로 확인됩니다.
ColumnValues "colA" >= 10
<= x 규칙 유형 응답이 x보다 작거나 같은 경우 true로 확인됩니다.
ColumnValues "colA" <= 1000
between x and y 규칙 유형 응답이 지정된 범위(제외)에 속하는 경우 true로 확인됩니다. 이 표현식 유형은 숫자 및 날짜 유형에만 사용해야 합니다.
Mean "colA" between 8 and 100, ColumnValues "colA" between "2022-05-31" and "2022-06-30"
x와 y 사이가 아닙니다. 규칙 유형 응답이 지정된 범위 (포함) 에 속하지 않는 경우 true로 확인됩니다. 이 표현식 유형은 숫자 및 날짜 유형에만 사용해야 합니다.
ColumnValues "colA" not between "2022-05-31" and "2022-06-30"
in [a, b, c, ...] 규칙 유형 응답이 지정된 세트 내에 있는 경우 true로 확인됩니다.
ColumnValues "colA" in [ 1, 2, 3 ], ColumnValues "colA" in [ "a", "b", "c" ]
[a, b, c,... 에는 없습니다. ] 규칙 유형 응답이 지정된 세트에 없는 true 경우로 해결됩니다.
ColumnValues "colA" not in [ 1, 2, 3 ], ColumnValues "colA" not in [ "a", "b", "c" ]
matches /ab+c/i 규칙 유형 응답이 정규 표현식과 일치하는 경우 true로 확인됩니다.
ColumnValues "colA" matches "[a-ZA-Z]*"
/ab+c/i와 일치하지 않음 규칙 유형 응답이 정규 표현식과 일치하지 않는 true 경우로 해결됩니다.
ColumnValues "colA" not matches "[a-ZA-Z]*"
now() ColumnValues 규칙 유형에서만 작동하여 날짜 표현식을 생성합니다.
ColumnValues "load_date" > (now() - 3 days)
[...] 에서 일치/입력 [...] /일치하지 않음/[...] 에서 일치하지 않음 with threshold 규칙 조건과 일치하는 값의 백분율을 지정합니다. ColumnValues,ColumnDataType, CustomSQL 규칙 유형에서만 작동합니다.
ColumnValues "colA" in ["A", "B"] with threshold > 0.8, ColumnValues "colA" matches "[a-zA-Z]*" with threshold between 0.2 and 0.9 ColumnDataType "colA" = "Timestamp" with threshold > 0.9

NULL, 빈, 공백의 키워드_ONLY

문자열 열에 null, 빈 문자열 또는 공백만 있는 문자열이 있는지 확인하려면 다음 키워드를 사용할 수 있습니다.

  • NULL/null — 이 키워드는 문자열 열의 null 값에 대해 true로 해석됩니다.

    ColumnValues "colA" != NULL with threshold > 0.5데이터의 50% 이상에 null 값이 없으면 true를 반환합니다.

    (ColumnValues "colA" = NULL) or (ColumnLength "colA" > 5)값이 null이거나 길이가 5보다 큰 모든 행에 대해 true를 반환합니다. 참고로 이 경우 “compositeRuleEvaluation.method” = “ROW” 옵션을 사용해야 합니다.

  • EMPTY/empty — 이 키워드는 문자열 열의 빈 문자열 (“”) 값에 대해 true로 변환됩니다. 일부 데이터 형식은 문자열 열의 null을 빈 문자열로 변환합니다. 이 키워드는 데이터에서 빈 문자열을 필터링하는 데 도움이 됩니다.

    (ColumnValues "colA" = EMPTY) or (ColumnValues "colA" in ["a", "b"])행이 비어 있는 경우 (“a” 또는 “b”) true를 반환합니다. 참고로 이 경우 “compositeRuleEvaluation.method” = “ROW” 옵션을 사용해야 합니다.

  • WHITESPACES_ONLY/whitespaces_only — 이 키워드는 문자열 열에 공백 (“”) 값만 있는 문자열의 경우 true로 변환됩니다.

    ColumnValues "colA" not in ["a", "b", WHITESPACES_ONLY]행이 “a” 또는 “b”도 아니고 공백도 아닌 경우 true를 반환합니다.

    지원되는 규칙:

숫자 또는 날짜 기반 표현식의 경우 열에 null이 있는지 확인하려면 다음 키워드를 사용할 수 있습니다.

  • NULL/null — 이 키워드는 문자열 열에 null 값이 있는 경우 true로 변환됩니다.

    ColumnValues "colA" in [NULL, "2023-01-01"]열의 날짜가 0이거나 0인 경우 true를 반환합니다. 2023-01-01

    (ColumnValues "colA" = NULL) or (ColumnValues "colA" between 1 and 9)값이 null이거나 값이 1에서 9 사이인 모든 행에 대해 true를 반환합니다. 참고로 이 경우 “compositeRuleEvaluation.method” = “ROW” 옵션을 사용해야 합니다.

    지원되는 규칙:

동적 규칙

이제 동적 규칙을 작성하여 규칙에 의해 생성된 현재 지표를 기록 값과 비교할 수 있습니다. 이러한 기록 비교는 표현식에 last() 연산자를 사용하여 사용할 수 있습니다. 예를 들어 현재 실행 중인 행 수가 동일한 데이터 세트에 대한 가장 최근의 이전 행 수보다 많을 때 규칙 RowCount > last()가 성공합니다. last()는 고려할 기록 지표의 개수를 나타내는 선택적 자연수 인수를 취하고, last(k)는 마지막 k 지표를 참조하는 k >= 1을 취합니다.

  • 사용 가능한 데이터 포인트가 없는 경우 last(k)는 기본값 0.0을 반환합니다.

  • 사용할 수 있는 지표가 k개 미만인 경우 last(k)는 이전 지표를 모두 반환합니다.

유효한 표현식을 만들려면 last(k)를 사용합니다. 여기서 k > 1에는 여러 개의 기록 결과를 하나의 숫자로 줄이는 집계 함수가 필요합니다. 예를 들어 RowCount > avg(last(5))는 현재 데이터 세트의 행 수가 동일한 데이터 세트의 최근 5개 행 수의 평균보다 확실하게 큰지 확인합니다. RowCount > last(5)는 현재 데이터 세트 행 수를 목록과 유의미하게 비교할 수 없기 때문에 오류를 생성합니다.

지원되는 집계 함수:

  • avg

  • median

  • max

  • min

  • sum

  • std(표준 편차)

  • abs(절대값)

  • index(last(k), i)를 사용하면 최근 k개 중 가장 최근인 i번째 값을 선택할 수 있습니다. i는 0으로 인덱싱되므로 index(last(3), 0)은 가장 최근의 데이터 포인트를 반환하고, index(last(3), 3)은 데이터 포인트가 3개뿐이지만 4번째 가장 최근의 데이터 포인트를 인덱싱하려고 시도하기 때문에 오류가 발생합니다.

샘플 표현식

ColumnCorrelation

  • ColumnCorrelation "colA" "colB" < avg(last(10))

DistinctValuesCount

  • DistinctValuesCount "colA" between min(last(10))-1 and max(last(10))+1

숫자 조건 또는 임곗값이 있는 대부분의 규칙 유형은 동적 규칙을 지원합니다. 제공된 테이블인 분석기 및 규칙을 참조하여 해당 규칙 유형에 동적 규칙이 지원되는지 확인하세요.

분석기

DQDL 규칙은 분석기라는 함수를 사용하여 데이터에 대한 정보를 수집합니다. 이 정보는 규칙의 부울 표현식에 의해 사용되어 규칙의 성공 또는 실패 여부를 결정합니다. 예를 들어 RowCount RowCount > 5 규칙에서는 행 개수 분석기를 사용하여 데이터셋의 행 수를 검색하고 이 개수를 식과 > 5 비교하여 현재 데이터세트에 5개 이상의 행이 있는지 확인합니다.

때로는 규칙을 작성하는 대신 분석기를 생성한 다음 이상을 탐지하는 데 사용할 수 있는 통계를 생성하는 것을 권장합니다. 이러한 경우에는 분석기를 생성할 수 있습니다. 분석기는 다음과 같은 점에서 규칙과 다릅니다.

기능 분석기 규칙
규칙 세트의 일부
통계 생성
관찰 결과 생성
조건 평가 및 어설션 가능 아니요
실패 시 작업 중지, 작업 계속 처리 등의 작업을 구성할 수 있음 아니요

분석기는 규칙 없이 독립적으로 존재할 수 있으므로 신속하게 구성하고 데이터 품질 규칙을 점진적으로 구축할 수 있습니다.

일부 규칙 유형은 규칙 세트의 Analyzers 블록에 입력하여 분석기에 필요한 규칙을 실행하고 조건에 대한 검사를 적용하지 않고 정보를 수집할 수 있습니다. 일부 분석기는 규칙과 연결되지 않으며 Analyzers 블록에만 입력할 수 있습니다. 다음 테이블에는 각 항목이 규칙 또는 독립 실행형 분석기로 지원되는지 여부와 각 규칙 유형에 대한 추가 세부 정보가 나와 있습니다.

분석기를 사용한 규칙 세트 예제

다음 규칙 세트는 다음을 사용합니다.

  • 데이터 세트가 지난 세 번의 작업 실행에 대한 후행 평균보다 증가하고 있는지 확인하는 동적 규칙

  • 데이터 세트의 Name 열에 고유한 값의 수를 기록하는 DistinctValuesCount 분석기

  • 시간 경과에 따른 최소 및 최대 Name 크기를 추적하는 ColumnLength 분석기

분석기 메트릭 결과는 작업 실행의 Data Quality 탭에서 확인할 수 있습니다.

Rules = [ RowCount > avg(last(3)) ], Analyzers = [ DistinctValuesCount "Name", ColumnLength "Name" ]

설명

'#' 문자를 사용하여 DQDL 문서에 댓글을 추가할 수 있습니다. DQDL은 '#' 문자 이후와 줄 끝까지 오는 모든 내용을 무시합니다.

Rules = [ # More items should generally mean a higher price, so correlation should be positive ColumnCorrelation "price" "num_items" > 0 ]

DQDL 규칙 유형 참조

이 섹션에서는 AWS Glue Data Quality가 지원하는 각 규칙 유형에 대한 참조를 제공합니다.

참고
  • DQDL은 현재 중첩형 또는 목록형 열 데이터를 지원하지 않습니다.

  • 아래 테이블의 괄호로 묶인 값은 규칙 인수에 제공된 정보로 대체됩니다.

  • 규칙에는 일반적으로 표현식에 대한 추가 인수가 필요합니다.

Ruletype 설명 인수 보고된 지표 규칙으로 지원되나요? 분석기로 지원되나요? 행 수준 결과를 반환하나요? 동적 규칙이 지원되나요? 관찰 결과 생성
AggregateMatch 총 판매액과 같은 요약 지표를 비교하여 두 데이터 세트가 일치하는지 확인합니다. 금융 기관에서 모든 데이터가 소스 시스템에서 수집되었는지 비교할 때 유용합니다. 하나 이상의 집계

첫 번째 및 두 번째 집계 열 이름이 일치하는 경우:

Column.[Column].AggregateMatch

첫 번째 및 두 번째 집계 열 이름이 다른 경우:

Column.[Column1,Column2].AggregateMatch

아니요 아니요 아니요 아니요
AllStatistics 제공된 열 또는 데이터 세트의 모든 열에 대한 여러 지표를 수집하는 독립 실행형 분석기. 단일 컬럼 이름 또는 "AllColumns”

모든 유형의 열에 적용됩니다.

Dataset.*.RowCount

Column.[Column].Completeness

Column.[Column].Uniqueness

문자열 값 열에 대한 추가 지표:

ColumnLength metrics

숫자 값 열에 대한 추가 지표:

ColumnValues metrics

아니요 아니요 아니요 아니요
ColumnCorrelation 두 열의 상관 관계 적합도를 확인합니다. 정확히 두 개의 열 이름 Multicolumn.[Column1],[Column2].ColumnCorrelation 아니요 아니요
ColumnCount 삭제된 열이 있는지 확인합니다. None Dataset.*.ColumnCount 아니요 아니요
ColumnDataType 열이 데이터 형식을 준수하는지 확인합니다. 정확히 하나의 열 이름 Column.[Column].ColumnDataType.Compliance 아니요 아니요 예, 행 수준 임곗값 표현식에서 아니요
ColumnExists 데이터 세트에 열이 있는지 확인합니다. 이를 통해 고객은 특정 열을 사용할 수 있도록 셀프 서비스 데이터 플랫폼을 구축할 수 있습니다. 정확히 하나의 열 이름 N/A 아니요 아니요 아니요 아니요
ColumnLength 데이터 길이가 일관되는지 확인합니다. 정확히 하나의 열 이름

Column.[Column].MaximumLength

Column.[Column].MinimumLength

행 수준 임곗값이 제공된 경우 추가 지표:

Column.[Column].ColumnValues.Compliance

예, 행 수준 임곗값이 제공된 경우 아니요 예 최소 및 최대 길이를 분석하여 관찰 결과만 생성합니다.
ColumnNamesMatchPattern 열 이름이 정의된 패턴과 일치하는지 확인합니다. 거버넌스 팀이 열 이름의 일관성을 적용하는 데 유용합니다. 열 이름에 대한 정규식 Dataset.*.ColumnNamesPatternMatchRatio 아니요 아니요 아니요 아니요
ColumnValues 데이터가 정의된 값에 따라 일관되는지 확인합니다. 이 규칙은 정규식을 지원합니다. 정확히 하나의 열 이름

Column.[Column].Maximum

Column.[Column].Minimum

행 수준 임곗값이 제공된 경우 추가 지표:

Column.[Column].ColumnValues.Compliance

아니요 예, 행 수준 임곗값이 제공된 경우 아니요 예 최솟값 및 최댓값을 분석하여 관찰 결과만 생성합니다.
완전성 데이터에 공백 또는 NULL이 있는지 확인합니다. 정확히 하나의 열 이름

Column.[Column].Completeness

CustomSql 고객은 거의 모든 유형의 데이터 품질 검사를 SQL로 구현할 수 있습니다.

SQL 문

(선택 사항) 행 수준 임곗값

Dataset.*.CustomSQL

행 수준 임곗값이 제공된 경우 추가 지표:

Dataset.*.CustomSQL.Compliance

예, 행 수준 임곗값이 제공된 경우 아니요
DataFreshness 데이터가 최신인지 확인합니다. 정확히 하나의 열 이름 Column.[Column].DataFreshness.Compliance 아니요 아니요 아니요
DatasetMatch 두 데이터 세트를 비교하여 두 데이터 세트가 동기화되었는지 확인합니다.

참조 데이터 세트 이름

열 매핑

(선택 사항) 일치하는 항목이 있는지 확인하는 열

Dataset.[ReferenceDatasetAlias].DatasetMatch 아니요 아니요
DistinctValuesCount 중복된 값이 있는지 확인합니다. 정확히 하나의 열 이름 Column.[Column].DistinctValuesCount
DetectAnomalies 다른 규칙 유형의 보고된 지표에서 이상이 있는지 확인합니다. 규칙 유형 규칙 유형 인수로 보고된 지표 아니요 아니요 아니요 아니요
Entropy 데이터의 엔트로피를 확인합니다. 정확히 하나의 열 이름 Column.[Column].Entropy 아니요 아니요
IsComplete 데이터가 100% 완전한지 확인합니다. 정확히 하나의 열 이름 Column.[Column].Completeness 아니요 아니요 아니요
IsPrimaryKey 열이 프라이머리 키(NULL이 아니고 고유함)인지 확인합니다. 정확히 하나의 열 이름

단일 열의 경우:

Column.[Column].Uniqueness

여러 열의 경우:

Multicolumn[CommaDelimitedColumns].Uniqueness

아니요 아니요 아니요
IsUnique 데이터가 100% 고유한지 확인합니다. 정확히 하나의 열 이름 Column.[Column].Uniqueness 아니요 아니요 아니요
평균 평균이 설정된 임곗값과 일치하는지 확인합니다. 정확히 하나의 열 이름 Column.[Column].Mean 아니요
ReferentialIntegrity 두 데이터 세트에 참조 무결성이 있는지 확인합니다.

데이터 세트에서 하나 이상의 열 이름

참조 데이터 세트에서 하나 이상의 열 이름

Column.[ReferenceDatasetAlias].ReferentialIntegrity 아니요 아니요
RowCount 레코드 수가 임곗값과 일치하는지 확인합니다. None Dataset.*.RowCount 아니요
RowCountMatch 두 데이터 세트 사이에서 레코드 수가 일치하는지 확인합니다. 참조 데이터 세트 별칭 Dataset.[ReferenceDatasetAlias].RowCountMatch 아니요 아니요 아니요
StandardDeviation 표준 편차가 임곗값과 일치하는지 확인합니다. 정확히 하나의 열 이름 Column.[Column].StandardDeviation 아니요
SchemaMatch 두 데이터 세트 사이에서 스키마가 일치하는지 확인합니다. 참조 데이터 세트 별칭 Dataset.[ReferenceDatasetAlias].SchemaMatch 아니요 아니요 아니요
Sum 합계가 설정된 임곗값과 일치하는지 확인합니다. 정확히 하나의 열 이름 Column.[Column].Sum 아니요 아니요
Uniqueness 데이터 세트의 고유성이 임곗값과 일치하는지 확인합니다. 정확히 하나의 열 이름 Column.[Column].Uniqueness 아니요
UniqueValueRatio 고유 값 비율이 임곗값과 일치하는지 확인합니다. 정확히 하나의 열 이름 Column.[Column].UniqueValueRatio 아니요

AggregateMatch

지정된 표현식에서 두 열의 집계 비율을 확인합니다. 이 규칙 유형은 여러 데이터 세트에 적용됩니다. 두 열의 집계를 평가하고 첫 번째 열 집계 결과를 두 번째 열 집계 결과로 나누어 비율을 생성합니다. 제공된 표현식에서 비율을 확인하여 부울 응답을 생성합니다.

구문

열 집계

ColumnExists <AGG_OPERATION> (<OPTIONAL_REFERENCE_ALIAS>.<COL_NAME>)
  • AGG_OPERATION – 집계에 사용할 연산입니다. 현재 sumavg가 지원됩니다.

    지원되는 열 유형: Byte, Decimal, Double, Float, Integer, Long, Short

  • OPTIONAL_REFERENCE_ALIAS – 기본 데이터 세트가 아닌 참조 데이터 세트에서 열을 가져온 경우 이 파라미터를 제공해야 합니다. AWS <database_name>Glue Data Catalog에서 이 규칙을 사용하는 경우 참조 별칭은 "형식을 따라야 합니다. <table_name>. <column_name>

    지원되는 열 유형: Byte, Decimal, Double, Float, Integer, Long, Short

  • COL_NAME - 집계할 열의 이름입니다.

    지원되는 열 유형: Byte, Decimal, Double, Float, Integer, Long, Short

예: 평균

"avg(rating)"

예: 합계

"sum(amount)"

예: 참조 데이터 세트의 열 평균

"avg(reference.rating)"

규칙

AggregateMatch <AGG_EXP_1> <AGG_EXP_2> <EXPRESSION>
  • AGG_EXP_1 - 첫 번째 열 집계입니다.

    지원되는 열 유형: Byte, Decimal, Double, Float, Integer, Long, Short

    지원되는 열 유형: Byte, Decimal, Double, Float, Integer, Long, Short

  • AGG_EXP_2 - 두 번째 열 집계입니다.

    지원되는 열 유형: Byte, Decimal, Double, Float, Integer, Long, Short

    지원되는 열 유형: Byte, Decimal, Double, Float, Integer, Long, Short

  • EXPRESSION - 부울 값을 생성하기 위해 규칙 유형 응답에 대해 실행할 표현식입니다. 자세한 설명은 Expressions 섹션을 참조하세요.

예: 합계를 사용한 일치 항목 집계

다음 예제 규칙은 amount 열에서 값의 합계가 total_amount 열에서 값의 합계와 정확히 같은지 여부를 확인합니다.

AggregateMatch "sum(amount)" "sum(total_amount)" = 1.0

예: 평균을 사용한 일치 항목 집계

다음 예제 규칙은 ratings 열에서 값의 평균이 reference 데이터 세트 내 ratings 열에서 값의 평균 중 90% 이상인지를 확인합니다. 참조 데이터 세트는 ETL 또는 데이터 카탈로그 환경에서 추가 데이터 소스로 제공됩니다.

AWS Glue ETL에서는 다음을 사용할 수 있습니다.

AggregateMatch "avg(ratings)" "avg(reference.ratings)" >= 0.9

AWS Glue 데이터 카탈로그에서는 다음을 사용할 수 있습니다.

AggregateMatch "avg(ratings)" "avg(database_name.tablename.ratings)" >= 0.9

Null 동작

AggregateMatch 규칙은 집계 방법 (합계/평균) 계산 시 NULL 값이 있는 행을 무시합니다. 예:

+---+-----------+ |id |units | +---+-----------+ |100|0 | |101|null | |102|20 | |103|null | |104|40 | +---+-----------+

열의 units 평균은 (0 + 20 + 40)/3 = 20이 됩니다. 101행과 103행은 이 계산에서 고려되지 않습니다.

ColumnCorrelation

지정된 표현식을 기준으로 두 열 간의 상관 관계를 확인합니다. AWS Glue Data Quality는 피어슨 상관 계수를 사용하여 두 열 간의 선형 상관 관계를 측정합니다. 결과는 관계의 강도와 방향을 측정하는 -1과 1 사이의 숫자입니다.

구문

ColumnCorrelation <COL_1_NAME> <COL_2_NAME> <EXPRESSION>
  • COL_1_NAME - 데이터 품질 규칙을 평가할 첫 번째 열의 이름입니다.

    지원되는 열 유형: Byte, Decimal, Double, Float, Integer, Long, Short

  • COL_2_NAME - 데이터 품질 규칙을 평가할 첫 번째 열의 이름입니다.

    지원되는 열 유형: Byte, Decimal, Double, Float, Integer, Long, Short

  • EXPRESSION - 부울 값을 생성하기 위해 규칙 유형 응답에 대해 실행할 표현식입니다. 자세한 설명은 Expressions 섹션을 참조하세요.

예: 열 상관 관계

다음 예제 규칙은 열 heightweight 간의 상관 계수가 강한 양의 상관 관계(0.8보다 큰 계수 값)를 갖는지 여부를 확인합니다.

ColumnCorrelation "height" "weight" > 0.8

샘플 동적 규칙

  • ColumnCorrelation "colA" "colB" between min(last(10)) and max(last(10))

  • ColumnCorrelation "colA" "colB" < avg(last(5)) + std(last(5))

무효 동작

ColumnCorrelation 규칙은 상관 관계 계산 시 NULL 값이 있는 행을 무시합니다. 예:

+---+-----------+ |id |units | +---+-----------+ |100|0 | |101|null | |102|20 | |103|null | |104|40 | +---+-----------+

101행과 103행은 무시되며 1.0이 ColumnCorrelation 됩니다.

ColumnCount

지정된 표현식을 기준으로 기본 데이터 세트의 열 수를 확인합니다. 표현식에서 >< 같은 연산자를 사용하여 열 수 또는 열 범위를 지정할 수 있습니다.

구문

ColumnCount <EXPRESSION>
  • EXPRESSION - 부울 값을 생성하기 위해 규칙 유형 응답에 대해 실행할 표현식입니다. 자세한 설명은 Expressions 섹션을 참조하세요.

예: 열 수 숫자 검사

다음 예제 규칙은 열 수가 지정된 범위 내에 있는지 확인합니다.

ColumnCount between 10 and 20

샘플 동적 규칙

  • ColumnCount >= avg(last(10))

  • ColumnCount between min(last(10))-1 and max(last(10))+1

ColumnDataType

제공된 예상 유형과 비교하여 지정된 열에 있는 값의 고유한 데이터 형식을 확인합니다. with threshold 식을 수락하여 열에 있는 값의 하위 세트를 확인합니다.

구문

ColumnDataType <COL_NAME> = <EXPECTED_TYPE> ColumnDataType <COL_NAME> = <EXPECTED_TYPE> with threshold <EXPRESSION>
  • COL_NAME - 데이터 품질 규칙을 평가할 열의 이름입니다.

    지원되는 열 유형: 문자열 유형

    지원되는 열 유형: Byte, Decimal, Double, Float, Integer, Long, Short

  • EXPECTED_TYPE - 열에 있는 값의 예상 유형입니다.

    지원되는 값: Boolean, Date, Timestamp, Integer, Double, Float, Long

    지원되는 열 유형: Byte, Decimal, Double, Float, Integer, Long, Short

  • EXPRESSION - 예상 유형이어야 하는 값의 백분율을 지정하는 선택적 표현식입니다.

    지원되는 열 유형: Byte, Decimal, Double, Float, Integer, Long, Short

예: 열 데이터 형식 정수 역할의 문자열

다음 예제 규칙은 문자열 유형인 지정된 열의 값이 실제로 정수인지 여부를 확인합니다.

ColumnDataType "colA" = "INTEGER"

예: 열 데이터 형식 정수 역할의 문자열에서 값의 하위 세트 확인

다음 예제 규칙은 문자열 유형인 지정된 열의 값 중 90%가 실제로 정수인지 여부를 확인합니다.

ColumnDataType "colA" = "INTEGER" with threshold > 0.9

ColumnExists

열이 존재하는지 확인합니다.

구문

ColumnExists <COL_NAME>
  • COL_NAME - 데이터 품질 규칙을 평가할 열의 이름입니다.

    지원되는 열 유형: 모든 열 유형

예: 열이 존재함

다음 예제 규칙은 Middle_Name 열이 존재하는지 여부를 확인합니다.

ColumnExists "Middle_Name"

ColumnLength

열에 있는 각 행의 길이가 지정된 표현식을 준수하는지 확인합니다.

구문

ColumnLength <COL_NAME><EXPRESSION>
  • COL_NAME - 데이터 품질 규칙을 평가할 열의 이름입니다.

    지원되는 열 유형: 문자열

  • EXPRESSION - 부울 값을 생성하기 위해 규칙 유형 응답에 대해 실행할 표현식입니다. 자세한 설명은 Expressions 섹션을 참조하세요.

예: 열 행 길이

다음 예제 규칙은 Postal_Code 열의 각 행에 있는 값의 길이가 5자인지 여부를 확인합니다.

ColumnLength "Postal_Code" = 5

무효 동작

ColumnLength 규칙은 NULL s를 길이가 0인 문자열로 취급합니다. NULL행의 경우:

ColumnLength "Postal_Code" > 4 # this will fail
ColumnLength "Postal_Code" < 6 # this will succeed

다음 예제 복합 규칙은 값에 명시적으로 오류를 NULL 발생시키는 방법을 제공합니다.

(ColumnLength "Postal_Code" > 4) AND (ColumnValues != NULL)

ColumnNamesMatchPattern

기본 데이터 세트의 모든 열 이름이 지정된 정규식과 일치하는지 확인합니다.

구문

ColumnNamesMatchPattern <PATTERN>
  • PATTERN – 데이터 품질 규칙을 평가하는 데 사용할 패턴입니다.

    지원되는 열 유형: Byte, Decimal, Double, Float, Integer, Long, Short

예: 열 이름 일치 패턴

다음 예제 규칙은 모든 열이 접두사 'aws_'로 시작하는지 여부를 확인합니다.

ColumnNamesMatchPattern "aws_.*"

ColumnValues

열의 값에 대해 표현식을 실행합니다.

구문

ColumnValues <COL_NAME> <EXPRESSION>
  • COL_NAME - 데이터 품질 규칙을 평가할 열의 이름입니다.

    지원되는 열 유형: 모든 열 유형

  • EXPRESSION - 부울 값을 생성하기 위해 규칙 유형 응답에 대해 실행할 표현식입니다. 자세한 설명은 Expressions 섹션을 참조하세요.

예: 허용된 값

다음 예제 규칙은 지정된 열의 각 값이 허용된 값 집합 (null, 비어 있는 문자열, 공백만 있는 문자열 포함) 에 속하는지 확인합니다.

ColumnValues "Country" in [ "US", "CA", "UK", NULL, EMPTY, WHITESPACES_ONLY ]

예: 정규 표현식

다음 예제 규칙은 열의 값을 정규 표현식과 비교하여 검사합니다.

ColumnValues "First_Name" matches "[a-ZA-Z]*"

예: 날짜 값

다음 예제 규칙은 날짜 열의 값을 날짜 표현식과 비교하여 검사합니다.

ColumnValues "Load_Date" > (now() - 3 days)

예: 숫자 값

다음 예제 규칙은 열 값이 특정 숫자 제약 조건과 일치하는지 여부를 확인합니다.

ColumnValues "Customer_ID" between 1 and 2000

Null 동작

모든 ColumnValues 규칙 (!=및 제외NOT IN) 의 경우 NULL 행이 규칙을 통과하지 못합니다. null 값으로 인해 규칙이 실패하는 경우 실패 사유에는 다음이 표시됩니다.

Value: NULL does not meet the constraint requirement!

다음 예제 복합 규칙은 값을 명시적으로 허용하는 방법을 제공합니다. NULL

(ColumnValues "Age" > 21) OR (ColumnValues "Age" = NULL)

!=not in 구문을 사용하는 부정된 ColumnValues 규칙은 행에 전달됩니다. NULL 예:

ColumnValues "Age" != 21
ColumnValues "Age" not in [21, 22, 23]

다음 예제는 값에 명시적으로 오류를 발생시키는 방법을 제공합니다. NULL

(ColumnValues "Age" != 21) AND (ColumnValues "Age" != NULL)
ColumnValues "Age" not in [21, 22, 23, NULL]

완전성

지정된 표현식을 기준으로 열에서 전체(null이 아닌) 값의 백분율을 검사합니다.

구문

Completeness <COL_NAME> <EXPRESSION>
  • COL_NAME - 데이터 품질 규칙을 평가할 열의 이름입니다.

    지원되는 열 유형: 모든 열 유형

  • EXPRESSION - 부울 값을 생성하기 위해 규칙 유형 응답에 대해 실행할 표현식입니다. 자세한 설명은 Expressions 섹션을 참조하세요.

예: Null 값 백분율

다음 예제 규칙은 열에 있는 값의 95% 이상이 완전한지를 확인합니다.

Completeness "First_Name" > 0.95

샘플 동적 규칙

  • Completeness "colA" between min(last(5)) - 1 and max(last(5)) + 1

  • Completeness "colA" <= avg(last(10))

Null 동작

CSV 데이터 형식 참고 사항: CSV 열의 빈 행에는 여러 동작이 표시될 수 있습니다.

  • String 유형이 다음과 같으면 빈 행은 빈 문자열로 인식되며 규칙을 위반하지 않습니다. Completeness

  • 열이 다음과 같은 다른 데이터 Int 유형인 경우 빈 행은 Completeness 규칙으로 NULL 인식되어 규칙에 따르지 않습니다.

CustomSQL

이 규칙 유형은 다음과 같은 두 가지 사용 사례를 지원하도록 확장되었습니다.

  • 데이터 세트에 대해 사용자 지정 SQL 문을 실행하고 지정된 표현식을 기준으로 반환 값을 확인합니다.

  • 일부 조건과 비교하여 행 수준 결과를 얻는 SELECT 문에 열 이름을 지정하는 사용자 지정 SQL 문을 실행합니다.

구문

CustomSql <SQL_STATEMENT> <EXPRESSION>
  • SQL_STATEMENT - 큰따옴표로 묶인 단일 숫자 값을 반환하는 SQL 문입니다.

  • EXPRESSION - 부울 값을 생성하기 위해 규칙 유형 응답에 대해 실행할 표현식입니다. 자세한 설명은 Expressions 섹션을 참조하세요.

예: 전체 규칙 결과를 검색하기 위한 사용자 지정 SQL

이 예제 규칙에서는 SQL 문을 사용하여 데이터 세트의 레코드 수를 검색합니다. 그런 다음 레코드 수가 10~20 사이인지 확인합니다.

CustomSql "select count(*) from primary" between 10 and 20

예: 행 수준 결과를 검색하기 위한 사용자 지정 SQL

이 예제 규칙은 일부 조건과 비교하여 행 수준 결과를 얻는 SELECT 문에 열 이름을 지정하는 SQL 문을 사용합니다. 임곗값 조건 표현식에서는 전체 규칙이 실패하기 위해 실패해야 하는 레코드 수의 임곗값을 정의합니다. 규칙에는 조건과 키워드가 모두 포함되지 않을 수도 있습니다.

CustomSql "select Name from primary where Age > 18"

또는

CustomSql "select Name from primary where Age > 18" with threshold > 3
중요

primary 별칭은 평가하려는 데이터 세트의 이름을 나타냅니다. 콘솔에서 시각적 ETL 작업을 수행할 때 primary에서는 항상 EvaluateDataQuality.apply() 변환에 전달 중인 DynamicFrame을 나타냅니다. AWS Glue Data Catalog를 사용하여 테이블에 대해 데이터 품질 작업을 실행하는 경우 primary 테이블이 표시됩니다.

AWS Glue 데이터 카탈로그에 있는 경우 실제 테이블 이름을 사용할 수도 있습니다.

CustomSql "select count(*) from database.table" between 10 and 20

여러 테이블을 조인하여 서로 다른 데이터 요소를 비교할 수도 있습니다.

CustomSql "select count(*) from database.table inner join database.table2 on id1 = id2" between 10 and 20

AWS Glue ETL에서 CustomSQL은 데이터 품질 검사에 실패한 레코드를 식별할 수 있습니다. 이 작업을 수행하려면 데이터 품질을 평가하는 기본 테이블의 일부인 레코드를 반환해야 합니다. 쿼리의 일부로 반환된 레코드는 성공으로 간주되고 반환되지 않은 레코드는 실패로 간주됩니다.

다음 규칙에서는 age가 100 미만인 레코드는 성공으로, 그 이상인 레코드는 실패로 표시됩니다.

CustomSql "select id from primary where age < 100"

레코드 중 50%에서 age가 10을 초과하는 경우 이 CustomSQL 규칙은 통과되며 실패한 레코드도 식별합니다. 이 CustomSQL에서 반환된 레코드는 통과로 간주되고 반환되지 않은 레코드는 실패로 간주됩니다.

CustomSQL "select ID, CustomerID from primary where age > 10" with threshold > 0.5

참고: 데이터 세트에서 사용할 수 없는 레코드를 반환하면 CustomSQL 규칙이 실패합니다.

DataFreshness

현재 시간과 날짜 열 값 간의 차이를 평가하여 열에 있는 데이터의 최신성을 검사합니다. 이 규칙 유형에 시간 기반 표현식을 지정하여 열 값이 최신 상태인지 확인할 수 있습니다.

구문

DataFreshness <COL_NAME> <EXPRESSION>
  • COL_NAME - 데이터 품질 규칙을 평가할 열의 이름입니다.

    지원되는 열 유형: 날짜

  • 표현식 - 시간 또는 일 단위의 숫자 표현식입니다. 표현식에 시간 단위를 지정해야 합니다.

예: 데이터 최신성

다음 예제 규칙은 데이터 최신성을 확인합니다.

DataFreshness "Order_Date" <= 24 hours DataFreshness "Order_Date" between 2 days and 5 days

Null 동작

NULL값이 있는 행의 경우 DataFreshness 규칙이 실패합니다. null 값으로 인해 규칙이 실패하는 경우 실패 사유에 다음이 표시됩니다.

80.00 % of rows passed the threshold

여기서 실패한 행 중 20% 에는 가 있는 NULL 행이 포함됩니다.

다음 예제 복합 규칙은 값을 명시적으로 허용하는 방법을 제공합니다. NULL

(DataFreshness "Order_Date" <= 24 hours) OR (ColumnValues "Order_Date" = NULL)

DatasetMatch

기본 데이터 세트의 데이터가 참조 데이터 세트의 데이터와 일치하는지 확인합니다. 제공된 키 열 매핑을 사용하여 두 데이터 세트를 조인합니다. 해당 열에서만 데이터의 관계(equality)를 확인하려는 경우 추가 열 매핑을 제공할 수 있습니다. 참고로 DataSetMatch, 조인 키는 고유해야 하고 NULL이 아니어야 합니다 (기본 키여야 함). 이러한 조건을 충족하지 않으면 'Provided key map not suitable for given data frames' 오류 메시지가 표시됩니다. 고유한 조인 키를 사용할 수 없는 경우에는 요약 데이터를 기준으로 일치시키는 것과 같은 다른 규칙 유형을 사용하는 AggregateMatch것이 좋습니다.

구문

DatasetMatch <REFERENCE_DATASET_ALIAS> <JOIN CONDITION WITH MAPPING> <OPTIONAL_MATCH_COLUMN_MAPPINGS> <EXPRESSION>
  • REFERENCE_DATASET_ALIAS – 기본 데이터 세트의 데이터를 비교하는 참조 데이터 세트의 별칭입니다.

  • KEY_COLUMN_MAPPINGS – 데이터 세트의 키를 구성하는 쉼표로 구분된 열 이름 목록입니다. 두 데이터 세트의 열 이름이 동일하지 않은 경우 ->로 구분해야 합니다.

  • OPTIONAL_MATCH_COLUMN_MAPPINGS - 특정 열의 데이터만 일치하는지 확인하려는 경우 이 파라미터를 제공할 수 있습니다. 키 열 매핑과 동일한 구문을 사용합니다. 이 파라미터를 제공하지 않으면 나머지 모든 열의 데이터를 일치시킵니다. 키가 아닌 나머지 열은 두 데이터 세트에서 이름이 같아야 합니다.

  • EXPRESSION - 부울 값을 생성하기 위해 규칙 유형 응답에 대해 실행할 표현식입니다. 자세한 설명은 Expressions 섹션을 참조하세요.

예: ID 열을 사용하여 설정된 데이터 세트 일치

다음 예제 규칙은 두 데이터 세트를 조인하기 위해 'ID' 열을 사용하여 기본 데이터 세트 중 90%가 넘는 항목이 참조 데이터 세트와 일치하는지 확인합니다. 이 경우 모든 열을 비교합니다.

DatasetMatch "reference" "ID" >= 0.9

예: 여러 키 열을 사용하는 설정된 데이터 세트 일치

다음 예제에서는 기본 데이터 세트와 참조 데이터 세트의 키 열 이름이 다릅니다. ID_1ID_2는 기본 데이터 세트에서 복합 키를 함께 형성합니다. ID_ref1ID_ref2는 참조 데이터 세트에 복합 키를 함께 형성합니다. 이 시나리오에서는 특수 구문을 사용하여 열 이름을 제공할 수 있습니다.

DatasetMatch "reference" "ID_1->ID_ref1,ID_ref2->ID_ref2" >= 0.9

예: 여러 키 열을 사용하여 설정된 데이터 세트 일치 및 특정 열이 일치하는지 확인

이 예는 이전 예를 기반으로 구축되었습니다. 금액이 포함된 열만 일치하는지 확인하려고 합니다. 이 열의 이름은 기본 데이터 세트에서 Amount1이고, 참조 데이터 세트에서 Amount2입니다. 정확한 일치시키려고 합니다.

DatasetMatch "reference" "ID_1->ID_ref1,ID_ref2->ID_ref2" "Amount1->Amount2" >= 0.9

DistinctValuesCount

지정된 표현식을 기준으로 열의 고유 값 수를 확인합니다.

구문

DistinctValuesCount <COL_NAME> <EXPRESSION>
  • COL_NAME - 데이터 품질 규칙을 평가할 열의 이름입니다.

    지원되는 열 유형: 모든 열 유형

  • EXPRESSION - 부울 값을 생성하기 위해 규칙 유형 응답에 대해 실행할 표현식입니다. 자세한 설명은 Expressions 섹션을 참조하세요.

예: 고유 열 값 개수

다음 예제 규칙은 State 열에 3개 이상의 고유 값이 포함되어 있는지 확인합니다.

DistinctValuesCount "State" > 3

샘플 동적 규칙

  • DistinctValuesCount "colA" between avg(last(10))-1 and avg(last(10))+1

  • DistinctValuesCount "colA" <= index(last(10),2) + std(last(5))

Entropy

열의 엔트로피 값이 지정된 표현식과 일치하는지 확인합니다. 엔트로피는 메시지에 포함된 정보의 수준을 측정합니다. 열의 값에 대한 확률 분포를 고려할 때 엔트로피는 값을 식별하는 데 필요한 비트 수를 설명합니다.

구문

Entropy <COL_NAME> <EXPRESSION>
  • COL_NAME - 데이터 품질 규칙을 평가할 열의 이름입니다.

    지원되는 열 유형: 모든 열 유형

  • EXPRESSION - 부울 값을 생성하기 위해 규칙 유형 응답에 대해 실행할 표현식입니다. 자세한 설명은 Expressions 섹션을 참조하세요.

예: 열 엔트로피

다음 예제 규칙은 Feedback 열의 엔트로피 값이 1보다 큰지 확인합니다.

Entropy "Star_Rating" > 1

샘플 동적 규칙

  • Entropy "colA" < max(last(10))

  • Entropy "colA" between min(last(10)) and max(last(10))

IsComplete

열의 모든 값이 완전한지(null이 아님) 확인합니다.

구문

IsComplete <COL_NAME>
  • COL_NAME - 데이터 품질 규칙을 평가할 열의 이름입니다.

    지원되는 열 유형: 모든 열 유형

예: Null 값

다음 예에서는 email 열의 모든 값이 null이 아닌지 확인합니다.

IsComplete "email"

Null 동작

CSV 데이터 형식 참고 사항: CSV 열의 빈 행에는 여러 동작이 표시될 수 있습니다.

  • String 유형이 다음과 같으면 빈 행은 빈 문자열로 인식되며 규칙을 위반하지 않습니다. Completeness

  • 열이 다음과 같은 다른 데이터 Int 유형인 경우 빈 행은 Completeness 규칙으로 NULL 인식되어 규칙에 따르지 않습니다.

IsPrimaryKey

열에 기본 키가 포함되어 있는지 확인합니다. 열의 모든 값이 고유하고 완전한 경우(null이 아닌 경우) 열에 기본 키가 포함됩니다.

구문

IsPrimaryKey <COL_NAME>
  • COL_NAME - 데이터 품질 규칙을 평가할 열의 이름입니다.

    지원되는 열 유형: 모든 열 유형

예: 기본 키

다음 예제 규칙은 Customer_ID 열에 기본 키가 있는지 여부를 확인합니다.

IsPrimaryKey "Customer_ID"

예: 여러 열이 있는 프라이머리 키입니다. 다음 예제는 유효합니다.

IsPrimaryKey "colA" "colB" IsPrimaryKey "colA" "colB" "colC" IsPrimaryKey colA "colB" "colC"

IsUnique

열의 모든 값이 고유한지 확인하고 부울 값을 반환합니다.

구문

IsUnique <COL_NAME>
  • COL_NAME - 데이터 품질 규칙을 평가할 열의 이름입니다.

    지원되는 열 유형: 모든 열 유형

예: 고유한 열 값

다음 예제 규칙은 email 열의 모든 값이 고유한지 확인합니다.

IsUnique "email"

Mean

열에 있는 모든 값의 평균이 지정된 표현식과 일치하는지 확인합니다.

구문

Mean <COL_NAME> <EXPRESSION>
  • COL_NAME - 데이터 품질 규칙을 평가할 열의 이름입니다.

    지원되는 열 유형: Byte, Decimal, Double, Float, Integer, Long, Short

  • EXPRESSION - 부울 값을 생성하기 위해 규칙 유형 응답에 대해 실행할 표현식입니다. 자세한 설명은 Expressions 섹션을 참조하세요.

예: 평균값

다음 예제 규칙은 열에 있는 모든 값의 평균이 임곗값을 초과하는지 여부를 확인합니다.

Mean "Star_Rating" > 3

샘플 동적 규칙

  • Mean "colA" > avg(last(10)) + std(last(2))

  • Mean "colA" between min(last(5)) - 1 and max(last(5)) + 1

Null 동작

Mean 규칙은 평균을 계산할 때 NULL 값이 있는 행을 무시합니다. 예:

+---+-----------+ |id |units | +---+-----------+ |100|0 | |101|null | |102|20 | |103|null | |104|40 | +---+-----------+

열의 units 평균은 (0 + 20 + 40)/3 = 20이 됩니다. 101행과 103행은 이 계산에서 고려되지 않습니다.

ReferentialIntegrity

기본 데이터 세트의 열 세트 값이 어느 범위까지 참조 데이터 세트의 열 세트 값에 대한 하위 세트인지를 확인합니다.

구문

ReferentialIntegrity <PRIMARY_COLS> <REFERENCE_DATASET_COLS> <EXPRESSION>
  • PRIMARY_COLS - 기본 데이터 세트의 쉼표로 구분된 열 이름 목록입니다.

    지원되는 열 유형: Byte, Decimal, Double, Float, Integer, Long, Short

  • REFERENCE_DATASET_COLS - 이 파라미터는 마침표로 구분된 두 부분을 포함합니다. 첫 번째 부분은 참조 데이터 세트의 별칭입니다. 두 번째 부분은 참조 데이터 세트에서 괄호로 묶인 쉼표로 구분된 열 이름 목록입니다.

    지원되는 열 유형: Byte, Decimal, Double, Float, Integer, Long, Short

  • EXPRESSION - 부울 값을 생성하기 위해 규칙 유형 응답에 대해 실행할 표현식입니다. 자세한 설명은 Expressions 섹션을 참조하세요.

예: zip code 열의 참조 무결성 확인

다음 예제 규칙은 기본 데이터 세트의 zipcode 열에 있는 값 중 90%가 넘는 항목이 reference 데이터 세트의 zipcode 열에 있는지 확인합니다.

ReferentialIntegrity "zipcode" "reference.zipcode" >= 0.9

예: city 및 state 열의 참조 무결성 확인

다음 예제에서는 city 및 state 정보가 포함된 열이 기본 데이터 세트과 참조 데이터 세트에 있습니다. 두 데이터 세트의 열 이름은 서로 다릅니다. 이 규칙은 기본 데이터 세트의 열 값 세트가 참조 데이터 세트의 열 값 세트와 정확히 같은지 확인합니다.

ReferentialIntegrity "city,state" "reference.{ref_city,ref_state}" = 1.0

샘플 동적 규칙

  • ReferentialIntegrity "city,state" "reference.{ref_city,ref_state}" > avg(last(10))

  • ReferentialIntegrity "city,state" "reference.{ref_city,ref_state}" between min(last(10)) - 1 and max(last(10)) + 1

RowCount

지정된 표현식을 기준으로 데이터 세트의 행 수를 확인합니다. 표현식에서 >< 같은 연산자를 사용하여 행 수 또는 행 범위를 지정할 수 있습니다.

구문

RowCount <EXPRESSION>
  • EXPRESSION - 부울 값을 생성하기 위해 규칙 유형 응답에 대해 실행할 표현식입니다. 자세한 설명은 Expressions 섹션을 참조하세요.

예: 행 수 수치 검사

다음 예제 규칙은 행 수가 지정된 범위 내에 있는지 확인합니다.

RowCount between 10 and 100

샘플 동적 규칙

RowCount > avg(lats(10)) *0.8

RowCountMatch

주어진 표현식과 비교하여 기본 데이터 세트의 행 수와 참조 데이터 세트의 행 수 비율을 확인합니다.

구문

RowCountMatch <REFERENCE_DATASET_ALIAS> <EXPRESSION>
  • REFERENCE_DATASET_ALIAS - 행 수를 비교할 참조 데이터 세트의 별칭입니다.

    지원되는 열 유형: Byte, Decimal, Double, Float, Integer, Long, Short

  • EXPRESSION - 부울 값을 생성하기 위해 규칙 유형 응답에 대해 실행할 표현식입니다. 자세한 설명은 Expressions 섹션을 참조하세요.

예: 참조 데이터 세트를 기준으로 행 수 확인

다음 예제 규칙은 기본 데이터 세트의 행 수가 참조 데이터 세트 행 수의 90% 이상인지 확인합니다.

RowCountMatch "reference" >= 0.9

StandardDeviation

지정된 표현식을 기준으로 열에 있는 모든 값의 표준 편차를 검사합니다.

구문

StandardDeviation <COL_NAME> <EXPRESSION>
  • COL_NAME - 데이터 품질 규칙을 평가할 열의 이름입니다.

    지원되는 열 유형: Byte, Decimal, Double, Float, Integer, Long, Short

  • EXPRESSION - 부울 값을 생성하기 위해 규칙 유형 응답에 대해 실행할 표현식입니다. 자세한 설명은 Expressions 섹션을 참조하세요.

예: 표준 편차

다음 예제 규칙은 colA 열에 있는 값의 표준 편차가 지정된 값보다 작은지 여부를 확인합니다.

StandardDeviation "Star_Rating" < 1.5

샘플 동적 규칙

  • StandardDeviation "colA" > avg(last(10) + 0.1

  • StandardDeviation "colA" between min(last(10)) - 1 and max(last(10)) + 1

무효 동작

StandardDeviation 규칙은 표준 편차 계산 시 NULL 값이 있는 행을 무시합니다. 예:

+---+-----------+-----------+ |id |units1 |units2 | +---+-----------+-----------+ |100|0 |0 | |101|null |0 | |102|20 |20 | |103|null |0 | |104|40 |40 | +---+-----------+-----------+

열의 표준 편차는 101행과 103행을 고려하지 않으므로 16.33이 units1 됩니다. 열의 표준 편차는 units2 16이 됩니다.

Sum

지정된 표현식을 기준으로 열에 있는 모든 값의 합계를 확인합니다.

구문

Sum <COL_NAME> <EXPRESSION>
  • COL_NAME - 데이터 품질 규칙을 평가할 열의 이름입니다.

    지원되는 열 유형: Byte, Decimal, Double, Float, Integer, Long, Short

  • EXPRESSION - 부울 값을 생성하기 위해 규칙 유형 응답에 대해 실행할 표현식입니다. 자세한 설명은 Expressions 섹션을 참조하세요.

예: 합계

다음 예제 규칙은 열에 있는 모든 값의 합계가 지정된 임곗값을 초과하는지 여부를 확인합니다.

Sum "transaction_total" > 500000

샘플 동적 규칙

  • Sum "ColA" > avg(last(10))

  • Sum "colA" between min(last(10)) - 1 and max(last(10)) + 1

무효 동작

Sum 규칙은 합계 계산 시 NULL 값이 있는 행을 무시합니다. 예:

+---+-----------+ |id |units | +---+-----------+ |100|0 | |101|null | |102|20 | |103|null | |104|40 | +---+-----------+

열의 합계는 101행과 103행을 고려하지 않으며 결과는 (0 + 20 + 40) = 60이 units 됩니다.

SchemaMatch

기본 데이터 세트의 스키마가 참조 데이터 세트의 스키마와 일치하는지 확인합니다. 스키마 검사는 열 단위로 수행됩니다. 이름이 동일하고 유형이 동일하면 두 열의 스키마가 일치합니다. 열 순서는 중요하지 않습니다.

구문

SchemaMatch <REFERENCE_DATASET_ALIAS> <EXPRESSION>
  • REFERENCE_DATASET_ALIAS - 스키마를 비교할 때 사용할 참조 데이터 세트의 별칭입니다.

    지원되는 열 유형: Byte, Decimal, Double, Float, Integer, Long, Short

  • EXPRESSION - 부울 값을 생성하기 위해 규칙 유형 응답에 대해 실행할 표현식입니다. 자세한 설명은 Expressions 섹션을 참조하세요.

예: SchemaMatch

다음 예제 규칙은 기본 데이터 세트의 스키마가 참조 데이터 세트의 스키마와 정확히 일치하는지 확인합니다.

SchemaMatch "reference" = 1.0

Uniqueness

지정된 표현식을 기준으로 열에서 고유한 값의 백분율을 검사합니다. 고유한 값은 정확히 한 번 발생합니다.

구문

Uniqueness <COL_NAME> <EXPRESSION>
  • COL_NAME - 데이터 품질 규칙을 평가할 열의 이름입니다.

    지원되는 열 유형: 모든 열 유형

  • EXPRESSION - 부울 값을 생성하기 위해 규칙 유형 응답에 대해 실행할 표현식입니다. 자세한 설명은 Expressions 섹션을 참조하세요.

예: 고유성 백분율

다음 예제 규칙은 열의 고유 값 백분율이 특정 숫자 기준과 일치하는지 여부를 확인합니다.

Uniqueness "email" = 1.0

샘플 동적 규칙

  • Uniqueness "colA" between min(last(10)) and max(last(10))

  • Uniqueness "colA" >= avg(last(10))

UniqueValueRatio

지정된 표현식을 기준으로 열의 고유 값 비율을 검사합니다. 고유 값 비율은 고유 값의 비율을 열에 있는 모든 고유 값의 수로 나눈 값입니다. 고유 값은 정확히 한 번 나타나는 반면 개별 값은 한 번 이상 나타납니다.

예를 들어 [a, a, b] 세트에는 고유 값 1개(b)와 개별 값 2개(ab)가 포함됩니다. 따라서 세트의 고유 값 비율은 ½ = 0.5입니다.

구문

UniqueValueRatio <COL_NAME> <EXPRESSION>
  • COL_NAME - 데이터 품질 규칙을 평가할 열의 이름입니다.

    지원되는 열 유형: 모든 열 유형

  • EXPRESSION - 부울 값을 생성하기 위해 규칙 유형 응답에 대해 실행할 표현식입니다. 자세한 설명은 Expressions 섹션을 참조하세요.

예: 고유 값 비율

이 예에서는 열의 고유 값 비율을 값 범위와 비교하여 확인합니다.

UniqueValueRatio "test_score" between 0 and 0.5

샘플 동적 규칙

  • UniqueValueRatio "colA" > avg(last(10))

  • UniqueValueRatio "colA" <= index(last(10),2) + std(last(5))

DetectAnomalies

지정된 Deequ 규칙의 이상을 탐지합니다. DetectAnomalies 규칙을 실행할 때마다 지정된 규칙에 대한 평가 값이 저장됩니다. 수집된 데이터가 충분하면 예외 항목 탐지 알고리즘은 해당 규칙에 대한 모든 과거 데이터를 가져와 예외 항목 탐지를 실행합니다. DetectAnomalies 예외 항목이 탐지되면 규칙이 실패합니다. 어떤 이상이 탐지되었는지에 대한 자세한 정보는 관찰에서 확인할 수 있습니다.

구문

DetectAnomalies <RULE_NAME> <RULE_PARAMETERS>

RULE_NAME - 이상을 평가하고 탐지하려는 규칙의 이름입니다. 지원되는 규칙:

  • "RowCount"

  • "Completeness"

  • "Uniqueness"

  • "Mean"

  • "Sum"

  • "StandardDeviation"

  • "Entropy"

  • "DistinctValuesCount"

  • "UniqueValueRatio"

  • "ColumnLength"

  • "ColumnValues"

  • "ColumnCorrelation"

  • "CustomSql"

RULE_PARAMETERS - 일부 규칙을 실행하려면 추가 파라미터가 필요합니다. 필수 파라미터를 확인하려면 해당 규칙 설명서를 참조하세요.

예: 에 대한 예외 항목 RowCount

예를 들어, RowCount 이상 징후를 탐지하려는 경우 규칙 이름으로 제공합니다. RowCount

DetectAnomalies "RowCount"

예: 에 대한 예외 항목 ColumnLength

예를 들어, ColumnLength 이상 징후를 탐지하려는 경우 규칙 이름과 열 ColumnLength 이름을 제공합니다.

DetectAnomalies "ColumnLength" "id"