实施自动数据质量检查

你可以找到一个如何使用 Dagster 和 Great Expectations 测试数据质量的演示。动态覆盖率测试图有更多的步骤,例如 seed_urls、scrape、parse 等,但为了简单起见,在这个演示中省略了一些操作。然而,它包含了动态覆盖率测试中最重要的部分——数据质量验证。演示图由以下操作组成:

  • load_items: 从文件加载数据 谎言数据​​ 并将其加载为 JSON 对象。
  • load_structure: 从文件加载数据结构。
  • get_flat_items:  使数据平坦化。
  • load_dfs:使用来自 load_structure 操作的结构将数据加载为 Spark DataFrames。
  • ge_validation:对每个 DataFrame 执行 Great Expectations 验证。
  • post_ge_validation:检查 Great Expectations 验证是否通过或失败。

虽然有些操作是不言自明的,但让我们来研究一下可能需要进一步详细说明的一些操作。

生成结构

load_structure 操作本身并不复杂。然而,重要的是结构的类型。它表示为 Spark 模式,因为我们将使用它来将数据加载为 Spark DataFrames,因为 Great Expectations 可以与它​​们配合使用。Pydantic 模型中的每个嵌套对象都将表 战略视频营销时代 示为单独的 Spark 模式,因为 Great Expectations 不能很好地处理嵌套数据。

例如像这样的 Pydantic 模型:

这将表示为两个 Spark 模式:

该演示已包含 Owler 公司数据的数据、结构和期望。但是,如果您想为自己的数据生成结构(以及您自己的结构),可以按照以下步骤进行操作。运行以下命令生成 Spark 结构的示例:

此命令为 Pydantic 模型生成 Spark 结构并将其保存为 gx_demo/data 目录中的 example_spark_structure.json。

准备和验证数据

加载结构后,我们需要准备数据进行验证。这引出了 get_flat_items 操作,该操作负责展平数据。我们需要展平数据,因为每个嵌套对象都将表示为单独 Spark DataFrame 中的一行。因此,如果我们有一份如下所示的公司列表:

展平后,数据将如下所示:

然后,来自 get_flat_items 操作的扁平化数据将根据我们在 load_dfs 操作中的 load_structure 操作中加载的结构加载到每个 Spark DataFrame 中。

load_dfs 操作使用DynamicOut,它允许我们根据在 load_structure 操作中加载的结构创建动态图。

基本上,我们将为结构中的每个嵌套对象创建一个单独的 Spark DataFrame。Dagster 将创建一个单独的 ge_validation 操作,该操作将对每个 DataFrame 的 Great Expectations 验证进行并行化。并行化不仅因为它可以加快进程,还因为它可以创建一个图形来支持任何类型的数据结构。

因此,如果我们抓取一个新目标,我们可以轻松添加一个新结构,并且图表将能够处理它。

产生期望

演示和结构中也已经生 博目录 成了期望。但是,本节将向您展示如何为您自己的数据生成结构和期望。

如果您要生成具有相同名称的新期望,请确保删除以前生成的期望。要为 的期望。在本例中,我们有 1,000 条 Owler 公司数据记录。其结构为对象列表,其中每个对象代表一家公司。

运行上述命令后,期望套件将在 r 目录中生成。期望套件的数量与数据中的嵌套对象数量相同,在本例中为 13。

每个套件将包含对相应嵌套对象中数据的期望。期望是根据数据的结构和数据本身生成的。请记住,在 Great Expectations 生成包含数据期望的期望套件后,可能需要进行一些手动工作来调整或改进某些期望。

滚动至顶部