0

因此,我在 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()
4

1 回答 1

1

Check有一个satisfies可以将列表达式作为条件参数的方法。

要检查是否column1介于-20%column2and之间+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()
}
于 2021-02-25T12:42:03.473 回答