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

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

AWS Glue 데이터 품질은 AWS Glue의 미리 보기 릴리스이므로 변경될 수 있습니다.

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

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

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")

표현식

규칙 유형이 부울 응답을 생성하지 않는 경우 부울 응답을 생성하려면 표현식을 파라미터로 제공해야 합니다. 예를 들어 다음 규칙은 열에 있는 모든 값의 평균을 표현식과 비교하여 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보다 큰 경우 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"
in [a, b, c, ...] 규칙 유형 응답이 지정된 세트 내에 있는 경우 true로 확인됩니다.
ColumnValues "colA" in [ 1, 2, 3 ], ColumnValues "colA" in [ "a", "b", "c" ]
matches /ab+c/i 규칙 유형 응답이 정규 표현식과 일치하는 경우 true로 확인됩니다.
ColumnValues "colA" matches "[a-ZA-Z]*"
now() ColumnValues 규칙 유형에서만 작동하여 날짜 표현식을 생성합니다.
ColumnValues "load_date" > (now() - 3 days)
matches/in […] with threshold 규칙 조건과 일치하는 값의 백분율을 지정합니다. ColumnValues 규칙 유형에만 적용됩니다.
ColumnValues "colA" in ["A", "B"] with threshold > 0.8, ColumnValues "colA" matches "[a-zA-Z]*" with threshold between 0.2 and 0.9

DQDL 규칙 유형 참조

이 섹션에서는 AWS Glue 데이터 품질에서 지원하는 각 규칙 유형에 대한 참조를 제공합니다.

참고

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

ColumnCorrelation

주어진 표현식을 기준으로 두 열 간의 상관 관계를 확인합니다. AWS Glue 데이터 품질에서는 피어슨 상관 계수를 사용하여 두 열 간의 선형 상관 관계를 측정합니다. 결과는 관계의 강도와 방향을 측정하는 -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 - 부울 값을 생성하기 위해 규칙 유형 응답에 대해 실행할 표현식입니다. 자세한 내용은 표현식 섹션을 참조하세요.

예: 열 상관 관계

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

ColumnCorrelation "height" "weight" > 0.8

ColumnExists

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

구문

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

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

예: 열이 존재함

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

ColumnExists "Middle_Name"

ColumnLength

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

구문

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

    지원되는 열 유형: 문자열

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

예: 열 행 길이

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

ColumnLength "Postal_Code" = 5

ColumnValues

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

구문

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

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

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

예: 허용된 값

다음 예제 규칙은 지정된 열의 각 값이 허용된 값 집합에 속하는지 여부를 확인합니다.

ColumnValues "Country" in [ "US", "CA", "UK" ]

예: 정규 표현식

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

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

예: 날짜 값

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

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

예: 숫자 값

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

ColumnValues "Customer_ID" between 1 and 2000

완전성

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

구문

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

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

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

예: Null 값 백분율

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

Completeness "First_Name" > 0.95

CustomSql

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

구문

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

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

예: 사용자 지정 SQL

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

중요

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

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

DataFreshness

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

구문

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

    지원되는 열 유형: 날짜

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

예: 데이터 최신성

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

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

DistinctValuesCount

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

구문

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

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

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

예: 고유 열 값 개수

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

DistinctValuesCount "State" > 3

Entropy

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

구문

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

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

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

예: 열 엔트로피

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

Entropy "Star_Rating" > 1

IsComplete

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

구문

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

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

예: Null 값

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

IsComplete "email"

IsPrimaryKey

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

구문

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

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

예: 기본 키

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

IsPrimaryKey "Customer_ID"

IsUnique

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

구문

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

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

예: 고유한 열 값

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

IsUnique "email"

Mean

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

구문

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

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

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

예: 평균값

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

Mean "Star_Rating" > 3

RowCount

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

구문

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

예: 행 수 수치 검사

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

RowCount between 10 and 100

StandardDeviation

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

구문

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

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

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

예: 표준 편차

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

StandardDeviation "Star_Rating" < 1.5

합계

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

구문

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

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

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

예: 합계

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

Sum "transaction_total" > 500000

Uniqueness

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

구문

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

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

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

예: 고유성 백분율

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

Uniqueness "email" = 1.0

UniqueValueRatio

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

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

구문

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

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

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

예: 고유 값 비율

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

UniqueValueRatio "test_score" between 0 and 0.5