まとめ

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章: Expectationの定義

Expectationの作成

Expectationを作成: gx.expectations.Expect...(...)

行数のExpectationを作成:

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

$$

Expectationを検証:

validation_results = batch.validate(
    expect=expectation
)

検証結果を確認:

validation_results.describe()
validation_results.success
validation_results.result
Great Expectationsで始めるデータ品質入門

第2章: Expectationの定義

スキーマのExpectation

形状に関するExpectation:

ExpectTableRowCountToEqual(value: int)
ExpectTableRowCountToBeBetween(
    min_value: int, max_value: int
)
ExpectTableColumnCountToEqual(
    value: int
)
ExpectTableColumnCountToBeBetween(
    min_value: int, max_value: int
)

$$

列名に関するExpectation:

ExpectTableColumnsToMatchSet(
    column_set: set
)
ExpectColumnToExist(column: str)
Great Expectationsで始めるデータ品質入門

第2章: Expectationの定義

Expectationスイートの作成

Expectationスイートを作成:

suite = gx.ExpectationSuite(name: str)

スイートにExpectationを追加:

suite.add_expectation(expectation)

スイート内のExpectationを参照:

suite.expectations

$$

Expectationスイートを検証:

validation_results = batch.validate(
    expect=suite
)

検証結果を確認:

validation_results.success
validation_results.describe()
Great Expectationsで始めるデータ品質入門

第2章: Expectationの定義

Expectationスイートの検証

データコンテキストにスイートを追加:

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スイートを更新

Expectationをコピー:

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

Expectationがスイート内にあるか確認:

expectation in suite.expectations

Expectationを削除:

suite.delete_expectation(expectation)

$$

Expectationの値を更新:

expectation.value = new_value

Expectationの変更を保存:

expectation.save()

Expectationスイートの変更を保存:

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章: Expectationの基本

基本的な列のExpectation

行レベルのExpectation:

ExpectColumnValuesToNotBeNull(
    column: str
)
ExpectColumnValuesToBeOfType(
    column: str, type_: str
)

$$

集計レベルのExpectation:

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章: Expectationの基本

型別のExpectation

数値系のExpectation:

ExpectColumn<METRIC>ToBeBetween(
  column: str, min_value: int, max_value: int
)
# <METRIC> は 
# {"Mean", "Median", "Stdev", "Sum"}
ExpectColumnValuesToBeBetween(
  column: str, min_value: int, max_value: int
)
ExpectColumnValuesToBeIncreasing(column: str)
ExpectColumnValuesToBeDecreasing(column: str)

$$

文字列系のExpectation:

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の基本

条件付きExpectation

expectation = gx.expectations.Expect...(
    expetation_parameters,
    ...,
    condition_parser='pandas',
    row_condition: str,
)
Great Expectationsで始めるデータ品質入門

最後に

Great Expectationsで始めるデータ品質入門

おめでとうございます!

Great Expectationsで始めるデータ品質入門

Preparing Video For Download...