如何使用 Amazon Deequ 检查 'column1' 的值是否在 'column2' 的值的 +-20% 范围内?

How to check if values of 'column1' are within +-20% range of values of 'column2' using Amazon Deequ?

所以,我在 spark 中使用 Amazon Deequ,我有一个数据框 'df',其中两列的类型为 'Long' 或数字。我只是想检查一下:

value(column1) lies between value(column2)-20% and value(column2)+20% 所有行

我不确定要在这里放什么支票:

val verificationResult: VerificationResult = { VerificationSuite()
  .onData(df)
  .addCheck(
    Check(CheckLevel.Error, "Review Check")
      //.funtionToCheckThis()
    )
  .run()

Check has a method satisfies 可以将列表达式作为条件参数。

要检查 column1 是否在 -20%column2+20%column2 之间,您可以使用这样的表达式:

|column1 - column2| < 0.20*column2

column1 between 0.80*column2 and 1.20*column2:

val verificationResult: VerificationResult = {
  VerificationSuite()
    .onData(df)
    .addCheck(
      Check(CheckLevel.Error, "Review Check")
        .satisfies(
          "abs(column1 - column2) <= 0.20 * column2",
          "value(column1) lies between value(column2)-20% and value(column2)+20%"
        )
    ).run()
}