如何在pydeequ中使用haseunique检查?

b4wnujal  于 2021-07-09  发布在  Spark
关注(0)|答案(1)|浏览(319)

我使用pydeequ来提高数据质量,我想检查一组列的唯一性。有一种检查方法 hasUniqueness 但我不知道怎么用。
我在努力:

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

但是我们应该用什么来代替Assert函数呢 ???? ?
有人试过支票吗 hasUniqueness 对于列的组合?

kb5ga3dv

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约束来验证它:

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|

# +-----------------+

相关问题