我使用pydeequ来提高数据质量,我想检查一组列的唯一性。有一种检查方法 hasUniqueness 但我不知道怎么用。我在努力:
hasUniqueness
check.hasUniqueness([col1, col2], ????)
但是我们应该用什么来代替Assert函数呢 ???? ?有人试过支票吗 hasUniqueness 对于列的组合?
????
kb5ga3dv1#
hasUniqueness 接受接受in/float参数并返回布尔值的函数:创建一个约束,该约束在一组键列或组合键列中声明任何唯一性。唯一性是恰好出现一次的列值的唯一值的分数。下面是一个用法示例:
df.show() # +---+---+ # | a| b| # +---+---+ # |foo| 1| # |bar| 0| # |baz| 1| # |bar| 0| # +---+---+
在这个Dataframe中,列的组合 a 以及 b 有两个值正好出现一次 (foo, 1) 以及 (baz, 1) 所以呢 Uniqueness = 0.5 在这里。让我们使用check约束来验证它:
a
b
(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| # +-----------------+
1条答案
按热度按时间kb5ga3dv1#
hasUniqueness
接受接受in/float参数并返回布尔值的函数:创建一个约束,该约束在一组键列或组合键列中声明任何唯一性。唯一性是恰好出现一次的列值的唯一值的分数。
下面是一个用法示例:
在这个Dataframe中,列的组合
a
以及b
有两个值正好出现一次(foo, 1)
以及(baz, 1)
所以呢Uniqueness = 0.5
在这里。让我们使用check约束来验证它: