0

我将PyDeequ用于数据质量,并且我想检查一组列的唯一性。有一个检查方法hasUniqueness,但我不知道如何使用它。

我正在努力:

check.hasUniqueness([col1, col2], ????) 

但是我们应该在这里使用什么来代替断言函数????呢?

有没有人试过检查hasUniqueness列的组合?

4

1 回答 1

1

hasUniqueness接受一个接受 in/float 参数并返回 boolean 的函数:

创建一个约束,该约束在单个或组合的一组键列中声明任何唯一性。唯一性是仅出现一次的列值的唯一值的比例。

这是一个用法示例:

df.show()
#+---+---+
#|  a|  b|
#+---+---+
#|foo|  1|
#|bar|  0|
#|baz|  1|
#|bar|  0|
#+---+---+

在此数据框中,列的组合ab2 个值恰好出现一次(foo, 1)(baz, 1)因此Uniqueness = 0.5在这里。让我们使用检查约束来验证它:

from pydeequ.checks import CheckLevel, Check
from pydeequ.verification import VerificationResult, VerificationSuite

result = VerificationSuite(spark).onData(df).addCheck(
    Check(spark, CheckLevel.Warning, "test hasUniqueness")
        .hasUniqueness(["a", "b"], lambda x: x == 0.5)
).run()

result_df = VerificationResult.checkResultsAsDataFrame(spark, result)

result_df.select("constraint_status").show()

#+-----------------+
#|constraint_status|
#+-----------------+
#|          Success|
#+-----------------+
于 2021-03-29T21:25:03.260 回答