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

piwo6bdm  于 2021-07-13  发布在  Spark
关注(0)|答案(1)|浏览(437)

所以,我在spark中使用amazon deequ,我有一个Dataframe'df',其中两列的类型是'long'或numeric。我只想检查一下: 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()
pb3skfrl

pb3skfrl1#

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()
}

相关问题