總結

Great Expectations 資料品質入門

Davina Moossazadeh

Data Scientist

第 1 章:連接資料

建立 Data Context

context = gx.get_context()
Great Expectations 資料品質入門

第 1 章:連接資料

連接資料

從 Data Context 建立 Data Source:

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

從 Data Source 建立 Data Asset:

data_asset = data_source.add_dataframe_asset(
    name: str
)
Great Expectations 資料品質入門

第 1 章:連接資料

批次讀取資料

從 Data Asset 建立 Batch Definition:

batch_definition = data_asset. \
add_batch_definition_whole_dataframe(
  name: str
)

從 Batch Definition 建立 Batch:

batch = batch_definition.get_batch(
  batch_parameters={"dataframe": dataframe}
)

$$

取得 Batch 的 DataFrame 前幾列:

batch.head(fetch_all: bool)  

取得 Batch 的欄位清單:

batch.columns()
Great Expectations 資料品質入門

第 2 章:建立 Expectations

建立 Expectations

建立一個 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 章:建立 Expectations

結構類 Expectations

表格形狀檢查:

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 章:建立 Expectations

建立 Expectation Suite

建立 Expectation Suite:

suite = gx.ExpectationSuite(name: str)

將 Expectation 加入 Suite:

suite.add_expectation(expectation)

存取 Suite 內的 Expectations:

suite.expectations

$$

驗證 Expectation Suite:

validation_results = batch.validate(
    expect=suite
)

檢視驗證結果:

validation_results.success
validation_results.describe()
Great Expectations 資料品質入門

第 2 章:建立 Expectations

驗證 Expectation Suite

將 Expectation Suite 加入 Data Context:

context.suites.add(suite)

建立 Validation Definition:

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 實務操作

部署 Validation Definition

將 Validation Definition 加入 Data Context:

context.validation_definitions.add(
    validation_definition
)

建立 Checkpoint:

checkpoint = gx.Checkpoint(
    name: str, 
    validation_definitions: list,
)

$$

執行 Checkpoint:

checkpoint_results = checkpoint.run(
    batch_parameters={
        "dataframe": dataframe
    }
)

檢視 Checkpoint 結果:

checkpoint_results.success
Great Expectations 資料品質入門

第 3 章:GX 實務操作

更新 Expectation Suite

複製 Expectation:

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

檢查 Expectation 是否在 Suite 中:

expectation in suite.expectations

刪除 Expectation:

suite.delete_expectation(expectation)

$$

更新 Expectation 的 value:

expectation.value = new_value

儲存 Expectation 的變更:

expectation.save()

儲存 Expectation Suite 的變更:

suite.save()
Great Expectations 資料品質入門

第 3 章:GX 實務操作

管理元件

將元件加入 Data Context:

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 章:深入 Expectations

基本欄位 Expectations

列層級檢查:

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 章:深入 Expectations

型別專屬 Expectations

數值型檢查:

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 章:深入 Expectations

條件式 Expectations

expectation = gx.expectations.Expect...(
    expetation_parameters,
    ...,
    condition_parser='pandas',
    row_condition: str,
)
Great Expectations 資料品質入門

結語

Great Expectations 資料品質入門

恭喜你!

Great Expectations 資料品質入門

Preparing Video For Download...