Great Expectation 是一个开源的数据验证框架,它可以帮助我们验证数据集的完整性、准确性和一致性。在验证数据集时,我们可能需要将数据集中的“坏记录”与“好记录”分开,以便更容易地了解数据集的健康状态并更好地处理数据。
Great Expectation 提供了许多方式来处理数据集。我们可以使用列级别的期望来验证每个列,也可以使用行级别的期望来验证整个行。针对行级别的期望,Great Expectation 提供了 Data Asset 中的 expect_table_row_count_to_equal
和 expect_column_values_to_be_unique
期望,这些期望可以方便地验证数据集中的行数和列的唯一性。
除此之外,Great Expectation 还提供了一些内置的标记器,可以自动将数据集中的“坏记录”和“好记录”区分开来。例如,在进行单元测试时,我们可以使用 expect_column_values_to_be_in_set
标记器来标记数据集中的有效和无效值,并在数据攻击或其他方面崩溃时自动将其分类。
以下是一个使用 Great Expectation 来标记“坏记录”的代码示例:
import great_expectations as ge
# load dataset
df = ge.read_csv("my_dataset.csv")
# create expectation suite
suite = ge.ValidationSuite("my_suite")
# add expectation
suite.add_expectation(
expectation_type="expect_column_values_to_be_in_set",
kwargs={
"column": "status",
"value_set": ["good", "bad"]
},
meta={
"severity": "high"
}
)
# validate data
results = df.validate(expectation_suite=suite)
# get failed expectations (bad records)
# and successful expectation (good records)
bad_records = results.filter('result=="unexpected_list_items"')
good_records = results.filter('result=="success"')
在这个例子中,我们首先将数据集加载到 DataFrame df
中,然后创建了一个名为 my_suite
的 expectation suite。我们向该 expectation suite 中添加了一个 column-level 的期望,即“将列值设置为集合中的值”。该期望的目标列是 status
,集合中的值包括 good