Great Expectations로 배우는 데이터 품질 입문
Davina Moossazadeh
Data Scientist
context = gx.get_context()
데이터 컨텍스트에서 데이터 소스 생성:
data_source = context.data_sources.add_pandas(
name: str
)
데이터 소스에서 데이터 에셋 생성:
data_asset = data_source.add_dataframe_asset(
name: str
)
데이터 에셋에서 배치 정의 생성:
batch_definition = data_asset. \
add_batch_definition_whole_dataframe(
name: str
)
배치 정의에서 배치 생성:
batch = batch_definition.get_batch(
batch_parameters={"dataframe": dataframe}
)
$$
배치 DataFrame 행 확인:
batch.head(fetch_all: bool)
배치 DataFrame 열 목록:
batch.columns()
기대치 생성:
gx.expectations.Expect...(...)
행 수 기대치 생성:
expectation = gx.expectations. \
ExpectTableRowCountToEqual(
value: int
)
$$
기대치 검증:
validation_results = batch.validate(
expect=expectation
)
검증 결과 확인:
validation_results.describe()
validation_results.success
validation_results.result
형상 기대치:
ExpectTableRowCountToEqual(value: int)
ExpectTableRowCountToBeBetween(
min_value: int, max_value: int
)
ExpectTableColumnCountToEqual(
value: int
)
ExpectTableColumnCountToBeBetween(
min_value: int, max_value: int
)
$$
열 이름 기대치:
ExpectTableColumnsToMatchSet(
column_set: set
)
ExpectColumnToExist(column: str)
기대치 모음 생성:
suite = gx.ExpectationSuite(name: str)
모음에 기대치 추가:
suite.add_expectation(expectation)
모음의 기대치 확인:
suite.expectations
$$
기대치 모음 검증:
validation_results = batch.validate(
expect=suite
)
검증 결과 확인:
validation_results.success
validation_results.describe()
데이터 컨텍스트에 기대치 모음 추가:
context.suites.add(suite)
검증 정의 생성:
validation_definition = \
gx.ValidationDefinition(
name: str,
data=batch_definition,
suite=suite
)
$$
검증 실행:
validation_results = \
validation_definition.run(
batch_parameters={"dataframe": dataframe}
)
검증 결과 확인:
validation_results.success
validation_results.describe()
검증 정의를 데이터 컨텍스트에 추가:
context.validation_definitions.add(
validation_definition
)
체크포인트 생성:
checkpoint = gx.Checkpoint(
name: str,
validation_definitions: list,
)
$$
체크포인트 실행:
checkpoint_results = checkpoint.run(
batch_parameters={
"dataframe": dataframe
}
)
체크포인트 결과 확인:
checkpoint_results.success
기대치 복사:
expectation_copy = expectation.copy()
expectation_copy.id = None
모음에 기대치 포함 여부 확인:
expectation in suite.expectations
기대치 삭제:
suite.delete_expectation(expectation)
$$
기대치 값 업데이트:
expectation.value = new_value
기대치 변경사항 저장:
expectation.save()
기대치 모음 변경사항 저장:
suite.save()
데이터 컨텍스트에 구성 요소 추가:
context.data_sources.add(data_source)
context.suites.add(suite)
context.validation_definitions.add(
validation_definition
)
context.checkpoints.add(checkpoint)
$$
구성 요소 조회:
.get(name: str)
구성 요소 나열:
.all()
구성 요소 삭제:
.delete(name: str)
행 수준 기대치:
ExpectColumnValuesToNotBeNull(
column: str
)
ExpectColumnValuesToBeOfType(
column: str, type_: str
)
$$
집계 수준 기대치:
ExpectColumnDistinctValuesToEqualSet(
column: str, value_set: set
)
ExpectColumnUniqueValueCountToBeBetween(
column: str,
min_value: int, max_value: int
)
ExpectColumnValuesToBeUnique(column: str)
ExpectColumnMostCommonValueToBeInSet(
column: str, value_set: set
)
수치형 기대치:
ExpectColumn<METRIC>ToBeBetween(
column: str, min_value: int, max_value: int
)
# <METRIC> in
# {"Mean", "Median", "Stdev", "Sum"}
ExpectColumnValuesToBeBetween(
column: str, min_value: int, max_value: int
)
ExpectColumnValuesToBeIncreasing(column: str)
ExpectColumnValuesToBeDecreasing(column: str)
$$
문자열 기대치:
ExpectColumnValueLengthsToEqual(
column: str, value: int
)
ExpectColumnValuesToMatchRegex(
column: str, regex: str
)
ExpectColumnValuesToMatchRegexList(
column: str, regex_list: list
)
ExpectColumnValuesToBe{Dateutil,Json}Parseable(
column: str
)
expectation = gx.expectations.Expect...(
expetation_parameters,
...,
condition_parser='pandas',
row_condition: str,
)
Great Expectations로 배우는 데이터 품질 입문