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

问题描述

所以,我在 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 有一个方法 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()
}