问题描述
我使用 PyDeequ 来保证数据质量,我想检查一组列的唯一性。有一个检查方法 hasUniqueness
,但我不知道如何使用它。
我正在尝试:
check.hasUniqueness([col1,col2],????)
有没有人尝试检查 hasUniqueness
的列组合?
解决方法
hasUniqueness
接受一个接受 in/float 参数并返回一个布尔值的函数:
创建一个约束,在单个或 组合键列。唯一性是唯一性的分数 恰好出现一次的列值。
这是一个用法示例:
df.show()
#+---+---+
#| a| b|
#+---+---+
#|foo| 1|
#|bar| 0|
#|baz| 1|
#|bar| 0|
#+---+---+
在此数据框中,列 a
和 b
的组合有 2 个值,它们恰好出现一次 (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|
#+-----------------+