Expectation Suite 검증

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

Davina Moossazadeh

Data Scientist

Validation Definition

Validation Definition - Expectation Suite를 해당 데이터에 연결하는 참조

데이터와 Expectation Suite를 입력으로, Validation Results를 출력으로 하는 Validation Definition 도식.

1 https://docs.greatexpectations.io/docs/core/run_validations/create_a_validation_definition/
Great Expectations로 배우는 데이터 품질 입문

Validation Definition 만들기

ValidationDefinition 클래스로 Validation Definition을 생성합니다:

validation_definition = gx.ValidationDefinition(

name="my_validation_definition",
data=batch_definition,
suite=suite, )
print(validation_definition)
Great Expectations로 배우는 데이터 품질 입문

Validation Definition 확인하기

name='my_validation_definition' 
data=BatchDefinition(
    id='1fcb36d6-fac6-4b9a-8ba6-a659978fd59e', 
    name='my_batch_definition', 
    partitioner=None
) 
suite={
  "name": "my_suite",
  "id": "0a123b9c-e370-4b18-b703-785dde88732d",
  "expectations": [],
  "meta": {"great_expectations_version": "1.2.4"},
  "notes": null
} 
id=None
Great Expectations로 배우는 데이터 품질 입문

Validation Definition 확인하기

print(validation_definition.name)
'my_validation_definition' 
print(validation_definition.data)
id='1fcb36d6-fac6-4b9a-8ba6-a659978fd59e' 
name='my_batch_definition' 
partitioner=None
print(validation_definition.suite)
{
  "name": "my_suite",
  "id": "0a123b9c-e370-4b18-b703-785dde88732d",
  "expectations": [],
  "meta": {"great_expectations_version": "1.2.4"},
  "notes": null
} 
print(validation_definition.id)
None
Great Expectations로 배우는 데이터 품질 입문

Validation Definition 확인하기

print(validation_definition.data_source)
assets:
  - batch_definitions:
      - name: my_batch_definition
        partitioner: null
    batch_metadata: {}
    id: 83682084-3bc4-4898-a807-fadc0f911415
    name: 'my_dataframe_asset'
    type: dataframe
id: f71d275e-a5b2-402e-a53c-8dad6975cce5
name: 'my_pandas_data_source'
type: pandas
Great Expectations로 배우는 데이터 품질 입문

Validation Definition 실행하기

Validation Definition의 .run() 메서드로 Validation을 실행하고, batch_parameters로 DataFrame을 전달합니다:

validation_results = validation_definition.run(

batch_parameters={"dataframe": dataframe} )
Great Expectations로 배우는 데이터 품질 입문

Validation Definition 오류

오류를 확인합니다:

ValidationDefinitionRelatedResourcesFreshnessError:
ExpectationSuite 'my_suite' must be added to the DataContext before it can be 
updated. Please call `context.suites.add(<SUITE_OBJECT>)`, then try your action 
again.

Expectation Suite를 Data Context에 추가하기 전에 Validation Definition을 실행하면 오류가 발생합니다

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

Expectation Suite 추가하기

.suites.add()로 Data Context에 Expectation Suite를 추가합니다:

suite = context.suites.add(

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

Validation Definition 평가하기

validation_results = validation_definition.run(
    batch_parameters={"dataframe": dataframe}
)
Calculating Metrics: 0/0 [00:00<?, ?it/s]
print(validation_results.success)
False
print(validation_results.describe())
Great Expectations로 배우는 데이터 품질 입문

Validation Definition 평가하기

{ "success": false,
  "statistics": {
    "evaluated_expectations": 1, "successful_expectations": 0,
    "unsuccessful_expectations": 1, "success_percent": 0.0
  },
  "expectations": [{
    "expectation_type": "expect_table_row_count_to_equal",
    "success": false,
    "kwargs": {"batch_id": ""my_datasource-my_dataframe_asset", "value": 118000}, 
    "result": {"observed_value": 11866}}
  ],
  "result_url": "https://app.greatexpectations.io/organizations/my_org/data-assets/*/validations/expectation-suites/0a123b9c-e370-4b18-b703-785dde88732d/results/cb093105-6ede-47d4-a141-dee10c632e18"
}
Great Expectations로 배우는 데이터 품질 입문

GX 참고 사항

  • Great Expectations는 유사 작업에 여러 워크플로를 제공합니다
    • 예: Batch Definition vs. Validation Definition
  • 본 과정은 개요를 제공합니다. 다른 GX 구현은 다른 접근을 쓸 수 있습니다
Great Expectations로 배우는 데이터 품질 입문

치트시트

Expectation Suite를 Data Context에 추가:

context.suites.add(suite)

Validation Definition 생성:

validation_definition = \
gx.ValidationDefinition(
  name: str, 
  data=batch_definition, 
  suite=suite
)

Validation 실행:

validation_results = \
validation_definition.run(
  batch_parameters={"dataframe": dataframe}
)

Validation 결과 확인:

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

연습해 봅시다!

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

Preparing Video For Download...