Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

데이터 상태 검사 구성과 보고서 자료형

상태 검사(Check)는 대상과 검사 조건을 정의합니다. 보고서(CheckReport)는 검사를 실행한 결과와 그 시점의 검사 구성을 저장합니다. 이후 검사를 수정해도 기존 보고서 안의 구성 스냅샷은 바뀌지 않습니다.

아래 config는 생성 요청과 조회 응답의 전체 구성입니다. 검사 교체는 대상과 열 선택을 다시 받지 않는 별도 구성 형식을 사용합니다.

CheckReport

필드자료형필수 여부의미
ridstring필수상태 검사 보고서 RID
checkCheck object필수보고서 생성 시점의 검사 구성 스냅샷
resultCheckResult object필수검사 결과
createdTimestring, ISO 8601필수보고서 생성 시각

보고서 RID 형식의 예는 ri.data-health.main.check-report.a1b2c3d4-e5f6-7890-abcd-ef1234567890입니다.

Check

필드자료형필수 여부의미
ridstring필수검사 RID. 예: ri.data-health.main.check.8e27b13a-e21b-4232-ae1b-76ccf5ff42b3
groupslist<CheckGroupRid>선택검사 그룹 RID 목록
configtagged union필수아래 검사 유형 중 하나의 구성
intentstring선택검사를 설정한 이유
createdBystring선택검사를 만든 사용자 식별자
updatedTimestring, ISO 8601선택마지막 갱신 시각

그룹 RID 예시는 ri.data-health.main.check-group.08e376a8-607d-4f44-b8dd-b4587be6ce9b입니다. intent에는 Check to ensure builds are passing. 같은 설명을 넣을 수 있습니다.

CheckResult

필드자료형필수 여부의미
statusenum필수실행 결과 상태
messagestring선택결과의 추가 설명

status는 PASSED, FAILED, WARNING, ERROR, NOT_APPLICABLE, NOT_COMPUTABLE 중 하나입니다.

{"status": "PASSED"}

config의 검사 유형

config.type으로 유형을 선택합니다. 각 유형은 아래 필드를 같은 객체에 넣습니다. 표의 필드는 별도 표시가 없으면 필수입니다.

type검사 대상유형별 필드
numericColumnRange수치 열의 값 범위데이터셋 subject, columnName, numericBoundsConfig
jobStatus데이터셋의 최근 작업 상태데이터셋 subject, statusCheckConfig
numericColumnMean수치 열 평균데이터셋 subject, numericColumnCheckConfig
dateColumnRange날짜 열 값의 범위데이터셋 subject, columnName, dateBoundsConfig
jobDuration작업 완료 소요 시간데이터셋 subject, timeCheckConfig
approximateUniquePercentage열의 대략적인 고유 값 비율데이터셋 subject, percentageCheckConfig
buildStatus데이터셋의 최근 빌드 상태데이터셋 subject, statusCheckConfig
columnType열 존재 및 선택적인 자료형 확인데이터셋 subject, columnTypeConfig
allowedColumnValues열 값이 허용 집합에 속하는지 확인데이터셋 subject, columnName, severity; 선택적인 allowedValues, allowNull
timeSinceLastUpdated마지막 데이터 갱신 이후 시간데이터셋 subject, 트랜잭션 시간용 timeCheckConfig
scheduleStatus최근 일정 실행 상태일정 subject, statusCheckConfig
nullPercentage열의 null 비율데이터셋 subject, percentageCheckConfig
scheduleDuration일정 완료 소요 시간일정 subject, timeCheckConfig
totalColumnCount전체 열 수데이터셋 subject, columnCountConfig
numericColumnMedian수치 열 중앙값데이터셋 subject, numericColumnCheckConfig
buildDuration빌드 완료 소요 시간데이터셋 subject, timeCheckConfig
schemaComparison기대 스키마와 비교데이터셋 subject, schemaComparisonConfig
primaryKey하나 이상 열의 고유성과 null이 아님을 확인데이터셋 subject, primaryKeyConfig

columnName은 문자열입니다. 예시 값은 amount, user_id, status 등이며 실제 열 이름을 사용합니다.

검사 대상 subject

데이터셋 대상에는 다음 두 필드가 모두 필요합니다.

필드자료형의미
datasetRidstring데이터셋 RID
branchIdstring브랜치 이름. 예: master

V2 조회 요청의 branchName과 달리 이 중첩 대상의 필드는 branchId입니다.

{
  "datasetRid": "ri.foundry.main.dataset.c26f11c8-cdb3-4f44-9f5d-9816ea1c82da",
  "branchId": "master"
}

일정 대상은 필수 문자열 scheduleRid를 사용합니다.

{"scheduleRid": "ri.scheduler.main.schedule.8843955e-37d1-4363-85eb-539833e10a41"}

심각도와 상태 검사

각 구성의 severity는 필수이며 MODERATE 또는 CRITICAL입니다. statusCheckConfig에는 필수 severity와 선택적인 escalationConfig가 있습니다.

escalationConfig 필드자료형필수 여부의미
failuresToCriticalinteger필수CRITICAL로 올리는 실패 횟수
timeIntervalInSecondsstring, long선택실패 횟수를 평가할 초 단위 시간 구간

다음은 30초 구간과 실패 횟수 1을 사용하는 가상 설정입니다. 예시 값은 기본값을 의미하지 않습니다.

{
  "severity": "MODERATE",
  "escalationConfig": {"failuresToCritical": 1, "timeIntervalInSeconds": "30"}
}

범위 구성

각 범위 구성 객체에는 범위와 severity가 필수입니다. 범위 안의 하한 및 상한은 각각 선택 항목입니다.

구성 객체범위 필드하한상한값 형식
numericBoundsConfignumericBoundslowerBoundupperBoundnumber, double
dateBoundsConfigdateBoundslowerBoundupperBoundISO 8601 시각 문자열
timeBounds 구성timeBoundslowerBoundInSecondsupperBoundInSecondslong을 나타내는 문자열, 초 단위
percentageBounds 구성percentageBoundslowerBoundPercentageupperBoundPercentagenumber, double, 0.0 이상 100.0 이하

수치 범위 예시:

{"numericBounds": {"lowerBound": 0.0, "upperBound": 1000.0}, "severity": "MODERATE"}

날짜 범위 예시:

{
  "dateBounds": {"lowerBound": "2024-01-01T00:00:00Z", "upperBound": "2024-12-31T23:59:59Z"},
  "severity": "MODERATE"
}

시간 범위와 백분율 범위 예시:

{
  "timeBounds": {"lowerBoundInSeconds": "3600", "upperBoundInSeconds": "3600"},
  "severity": "MODERATE"
}
{
  "percentageBounds": {"lowerBoundPercentage": 50.0, "upperBoundPercentage": 50.0},
  "severity": "MODERATE"
}

수치 열 평균과 중앙값

numericColumnCheckConfig는 다음 필드를 사용합니다.

필드자료형필수 여부의미
columnNamestring필수대상 열
numericBounds심각도를 포함한 수치 범위 구성선택절대 값의 범위
trend추세 구성선택시간에 따른 변화

numericBounds와 trend 중 적어도 하나가 필요합니다. 둘 다 지정하면 절대 범위와 추세를 함께 검사합니다.

추세 구성

trend에는 필수 severity와 선택적인 trendType, differenceBounds가 있습니다. trendType과 differenceBounds 중 적어도 하나를 지정하며 둘 다 사용할 수도 있습니다. differenceBounds는 선택적인 double lowerBound, upperBound로 변화량 범위를 표현합니다.

trendType조건
NON_INCREASING시간이 지나도 증가하지 않음
NON_DECREASING시간이 지나도 감소하지 않음
STRICTLY_INCREASING엄격히 증가
STRICTLY_DECREASING엄격히 감소
CONSTANT일정한 값 유지
{
  "columnName": "amount",
  "numericBounds": {
    "numericBounds": {"lowerBound": 0.0, "upperBound": 1000.0},
    "severity": "MODERATE"
  },
  "trend": {
    "trendType": "NON_DECREASING",
    "differenceBounds": {"lowerBound": 0.0, "upperBound": 1000.0},
    "severity": "MODERATE"
  }
}

중앙값 편차

medianDeviation 구성에는 필수 severity와 필수 내부 medianDeviation 객체가 있습니다.

내부 필드자료형필수 여부의미
boundsTypeenum선택중앙값보다 낮은 편차, 높은 편차 또는 양쪽을 평가
dataPointsinteger필수계산에 사용할 데이터 지점 수
deviationThresholdnumber, double필수편차 임계값

boundsType의 값은 LOWER_BOUND, UPPER_BOUND, TWO_TAILED입니다. 각각 중앙값 아래, 위, 양쪽의 유의한 편차를 평가합니다.

{
  "medianDeviation": {"boundsType": "TWO_TAILED", "dataPoints": 10, "deviationThreshold": 2.0},
  "severity": "MODERATE"
}

시간 및 백분율 검사

timeCheckConfig에는 선택적인 timeBounds 구성과 medianDeviation 구성이 있습니다. 작업, 빌드와 일정의 소요 시간 검사에 사용합니다. 검사를 생성하거나 교체할 때는 둘 중 적어도 하나를 지정해야 합니다.

timeSinceLastUpdated의 트랜잭션 시간 구성에는 이 두 필드 외에 선택적인 ignoreEmptyTransactions가 있습니다. 기본값은 true이며 실제 데이터 변경이 있는 트랜잭션만 마지막 갱신 시각 계산에 사용합니다. 이 구성도 생성하거나 교체할 때 timeBounds 또는 medianDeviation 중 하나 이상이 필요합니다.

percentageCheckConfig에는 필수 문자열 columnName, 선택적인 percentageBounds 구성, 선택적인 medianDeviation 구성이 있습니다. null 비율과 대략적인 고유 값 비율 검사에 사용합니다. 검사를 생성하거나 교체할 때는 두 검사 조건 중 적어도 하나를 지정해야 합니다. 교체 요청은 기존 대상 열을 유지하므로 columnName 필드를 받지 않습니다.

{
  "columnName": "user_id",
  "percentageBounds": {
    "percentageBounds": {"lowerBoundPercentage": 50.0, "upperBoundPercentage": 50.0},
    "severity": "MODERATE"
  },
  "medianDeviation": {
    "medianDeviation": {"boundsType": "TWO_TAILED", "dataPoints": 10, "deviationThreshold": 2.0},
    "severity": "MODERATE"
  }
}

열 유형, 값과 개수

columnTypeConfig

필수 columnName, 필수 severity, 선택적인 expectedType을 지정합니다. expectedType을 생략하면 열의 존재를 확인하고, 지정하면 유형도 확인합니다.

열 유형 값은 ARRAY, BINARY, BOOLEAN, BYTE, DATE, DECIMAL, DOUBLE, FLOAT, INTEGER, LONG, MAP, SHORT, STRING, STRUCT, TIMESTAMP입니다.

{"columnName": "user_id", "expectedType": "STRING", "severity": "MODERATE"}

allowedColumnValues

필수 데이터셋 subject, 필수 columnName, 필수 severity, 선택적인 allowNull 불리언과 allowedValues 배열을 사용합니다. 배열 원소는 type과 필수 value를 가진 다음 네 유형 중 하나입니다.

typevalue 자료형예시
dateISO 8601 시각 문자열"2024-01-01T00:00:00Z"
booleanbooleantrue
stringstring"approved"
numericnumber, double42.0

예를 들어 문자열 값은 {"type":"string","value":"approved"}로 표현합니다.

columnCountConfig

필수 expectedValue는 long을 나타내는 문자열이고 severity도 필수입니다.

{"expectedValue": "10", "severity": "MODERATE"}

스키마 비교

schemaComparisonConfig에는 expectedSchema, schemaComparisonType, severity가 모두 필요합니다. expectedSchema.columns는 선택적인 열 정보 목록입니다. 각 열 정보에는 필수 문자열 name과 선택적인 columnType이 있으며, 열 유형은 위의 15개 값 중 하나입니다.

schemaComparisonType판정
EXACT_MATCH_ORDERED_COLUMNS열과 열 순서가 모두 같아야 함
EXACT_MATCH_UNORDERED_COLUMNS열은 같아야 하지만 순서는 무관
COLUMN_ADDITIONS_ALLOWED기대한 열이 있어야 하고 추가 열을 허용하며, 빠진 열 유형은 무시
COLUMN_ADDITIONS_ALLOWED_STRICT기대한 열이 있어야 하고 추가 열을 허용. 기대 열과 실제 열 모두 유형이 있어야 하며 정확히 같아야 함
{
  "expectedSchema": {"columns": [{"name": "column", "columnType": "ARRAY"}]},
  "schemaComparisonType": "EXACT_MATCH_ORDERED_COLUMNS",
  "severity": "MODERATE"
}

기본 키 검사

primaryKeyConfig에는 선택적인 문자열 목록 columnNames와 필수 severity가 있습니다. 지정한 열들의 고유성과 null이 아닌 값을 검사합니다.

{"columnNames": ["user_id", "account_id"], "severity": "MODERATE"}

이 검사는 데이터셋 View에 기본 키와 중복 해결 계약을 추가하는 작업과 다릅니다. 여기서는 데이터 상태를 평가하고 결과를 보고서로 남깁니다.