2

我对《远大前程》很陌生-并且有一个问题。本质上我有一个 PostgreSQL 数据库,每次我运行我的数据管道时,我都想根据一些键来验证 PostgreSQL 表的特定子集。例如:如果数据管道每天都运行,则将是一个名为 current_batch 的字段。以下查询将进行验证:

SELECT * FROM jobs WHERE current_batch = <input_batch>。

我不确定完成此操作的最佳方法。我是一个使用 v3-api 的人,对使用检查点还是验证器有点困惑。我假设我想使用一个检查点,但我似乎无法弄清楚如何创建一个检查点,但只验证 PostgreSQL 数据源的特定子集。

任何帮助或指导将不胜感激。

谢谢,

4

2 回答 2

0

我使用 Views(在 Postgres 中)管理它。在运行 GE 之前,我创建(或替换现有)视图作为具有所有必要连接、过滤、聚合等的查询。然后在 GE 检查点中指定此视图的名称。

是的,这不是理想的解决方案。我也宁愿在检查点中使用查询。但作为一种解决方法,它涵盖了我所有的情况。

让我们有这样的看法:

CREATE OR REPLACE VIEW table_to_check_1_today AS
SELECT * FROM initial_table
WHERE dt = current_date;

检查点的配置如下:

name: my_task.my_check
config_version: 1.0
validations:
- expectation_suite_name: my_task.my_suite
  batch_request:
    datasource_name: my_datasource
    data_connector_name: default_inferred_data_connector_name
    data_asset_name: table_to_check_1_today

于 2022-02-04T20:06:25.703 回答
0

我完全理解您的困惑,因为我也在与 GE 合作,文档不是很清楚。

首先,“验证器”现在称为“检查点”,因此它们不是不同的实体,您可以在此处阅读

我正在研究一个 Oracle 数据库,我发现在测试我的数据之前应用查询的唯一方法是将查询放在检查点内。

要创建检查点,您应该great_expectations checkpoint new从终端运行命令。创建它后,您应该在作为检查点的 .yml 文件中添加“查询”字段。

您可以在下面看到我正在使用的检查点的片段。当我想验证我的数据时,我运行命令great_expectations checkpoint run check1

name: check1
module_name: great_expectations.checkpoint
class_name: LegacyCheckpoint
batches:
  - batch_kwargs:
      table: pso
      schema: test
      query: SELECT p AS c,

             [ ... ]

       AND    lsr = c)

      datasource: my_database
      data_asset_name: test.pso

    expectation_suite_names:
      - exp_suite1

希望这可以帮助!如果您有任何疑问,请随时询问:)

于 2021-11-08T08:40:01.513 回答