마무리

Great Expectations로 배우는 데이터 품질 입문

Davina Moossazadeh

Data Scientist

1장: 데이터 연결

데이터 컨텍스트 생성

context = gx.get_context()
Great Expectations로 배우는 데이터 품질 입문

1장: 데이터 연결

데이터 연결

데이터 컨텍스트에서 데이터 소스 생성:

data_source = context.data_sources.add_pandas(
    name: str
)

데이터 소스에서 데이터 에셋 생성:

data_asset = data_source.add_dataframe_asset(
    name: str
)
Great Expectations로 배우는 데이터 품질 입문

1장: 데이터 연결

배치로 데이터 읽기

데이터 에셋에서 배치 정의 생성:

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()
Great Expectations로 배우는 데이터 품질 입문

2장: 기대치 설정

기대치 만들기

기대치 생성: gx.expectations.Expect...(...)

행 수 기대치 생성:

expectation = gx.expectations. \
ExpectTableRowCountToEqual(
    value: int
)

$$

기대치 검증:

validation_results = batch.validate(
    expect=expectation
)

검증 결과 확인:

validation_results.describe()
validation_results.success
validation_results.result
Great Expectations로 배우는 데이터 품질 입문

2장: 기대치 설정

스키마 기대치

형상 기대치:

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)
Great Expectations로 배우는 데이터 품질 입문

2장: 기대치 설정

기대치 모음 만들기

기대치 모음 생성:

suite = gx.ExpectationSuite(name: str)

모음에 기대치 추가:

suite.add_expectation(expectation)

모음의 기대치 확인:

suite.expectations

$$

기대치 모음 검증:

validation_results = batch.validate(
    expect=suite
)

검증 결과 확인:

validation_results.success
validation_results.describe()
Great Expectations로 배우는 데이터 품질 입문

2장: 기대치 설정

기대치 모음 검증

데이터 컨텍스트에 기대치 모음 추가:

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()
Great Expectations로 배우는 데이터 품질 입문

3장: 실전 GX

검증 정의 배포

검증 정의를 데이터 컨텍스트에 추가:

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
Great Expectations로 배우는 데이터 품질 입문

3장: 실전 GX

기대치 모음 업데이트

기대치 복사:

expectation_copy = expectation.copy()
expectation_copy.id = None

모음에 기대치 포함 여부 확인:

expectation in suite.expectations

기대치 삭제:

suite.delete_expectation(expectation)

$$

기대치 값 업데이트:

expectation.value = new_value

기대치 변경사항 저장:

expectation.save()

기대치 모음 변경사항 저장:

suite.save()
Great Expectations로 배우는 데이터 품질 입문

3장: 실전 GX

구성 요소 관리

데이터 컨텍스트에 구성 요소 추가:

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)
Great Expectations로 배우는 데이터 품질 입문

4장: 기대치 이해

기본 열 기대치

행 수준 기대치:

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
)
Great Expectations로 배우는 데이터 품질 입문

4장: 기대치 이해

타입별 기대치

수치형 기대치:

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
)
Great Expectations로 배우는 데이터 품질 입문

4장: 기대치 이해

조건부 기대치

expectation = gx.expectations.Expect...(
    expetation_parameters,
    ...,
    condition_parser='pandas',
    row_condition: str,
)
Great Expectations로 배우는 데이터 품질 입문

마지막 한마디

Great Expectations로 배우는 데이터 품질 입문

축하합니다!

Great Expectations로 배우는 데이터 품질 입문

Preparing Video For Download...