【问题标题】:How to check every value in array within a range using spark sql?如何使用spark sql检查范围内数组中的每个值?
【发布时间】:2022-11-02 03:05:26
【问题描述】:

我希望对数组列进行过滤,以检查数组中的每个值是大于 10 还是小于 5,这就像在 presto 中使用 cardinality(filter(col, x -> x < 5 or x >10)) > 0 一样。有没有可能用纯spark sql来实现?

【问题讨论】:

    标签: apache-spark-sql presto


    【解决方案1】:

    您可以使用 forall 功能来实现这一点

    下面是示例过滤器

    df.filter(F.expr("forall(arr, x -> x<5 or x>10)"))
    

    在这里,我假设 arr 是数据框 df 内的列名,其中每个值应小于 5 或​​大于 10

    forall的详情here

    【讨论】:

      【解决方案2】:

      您能否提供解决方案的完整文件以及您正在过滤的列信息?我是apache spark的新手。该文件将帮助那些不熟悉 apache spark 的人。我导入了 org.apache.sql.functions.expr,但我收到“forall”不是注册函数的错误。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-05-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多