Cómo crear una expresión o condición de un valor de cadena dentro del marco de datos de chispa

Estoy tratando de filtrar una columna en dataframe usando función filter(). Y la condición para el filtro se guarda en una variable de cadena como abajo.

val condition = ">10"
val outDF     = df.filter((col("value") > expr(condition))

En el código anterior, ¿es posible utilizar la expresión o cualquier función SQL para convertir el valor de la cadena de condiciones "Conferencia10" a una condición real en función del filtro ?

Pregunta hecha hace 3 años, 4 meses, 27 días - Por algorithmwhiz


3 Respuestas:

  • Prueba debajo del código.

    val condition = "> 10"
    df.filter(s"value ${condition}")
    

    O

    df
    .filter(expr(s"value ${condition}"))
    .show(false)
    

    Respondida el Dec 18, 2020 a las 08:31 - por codecraftsman32c9

    Votos positivos: 0 | Votos negativos: 0

  • Sí, es posible convertir una cadena de condición en una expresión real dentro de un DataFrame de Spark utilizando la función expr() en conjunto con la función col(). En tu caso, si tienes una condición como ">10" guardada en la variable condition, puedes crear la expresión de la siguiente manera:

    scala
    import org.apache.spark.sql.functions.expr
    
    val condition = ">10"
    val outDF = df.filter(expr(s"value $condition"))
    

    En este caso, la función expr() toma la cadena de la variable condition y la convierte en una expresión real que se evaluará en la columna value de tu DataFrame df al utilizar la función filter().

    Con esto, podrás filtrar tu DataFrame en función de la condición especificada en forma de cadena.

    Respondida el Dec 19, 2020 a las 08:30 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Sí, es posible utilizar una expresión o función SQL para convertir el valor de cadena de condiciones "Condición10" en una condición real en la función filter. Aquí tienes cómo hacerlo:

    scala
    import org.apache.spark.sql.functions._
    
    val condition = ">10"
    val outDF = df.filter(col("value") > expr(s"$condition"))
    

    En esta versión del código, utilizamos la función expr para envolver la cadena de condición en una expresión SQL. La función expr toma una cadena que representa una expresión SQL y devuelve una columna de tipo Column. La s antes de la cadena de condición es una cadena interpolada que nos permite insertar el valor de la variable condition en la cadena de expresión.

    El resultado de esta expresión es una columna de tipo Column que contiene una condición booleana. Esta columna se puede utilizar en la función filter para filtrar el marco de datos en función de la condición especificada.

    Ejemplo:

    Supongamos que tenemos el siguiente marco de datos:

    
    +------+
    | value |
    +------+
    | 5     |
    | 10    |
    | 15    |
    +------+
    

    Si aplicamos el filtro utilizando la condición ">10", obtendremos el siguiente marco de datos resultante:

    
    +------+
    | value |
    +------+
    | 15    |
    +------+
    

    Esto se debe a que la condición ">10" solo es verdadera para el valor 15 en la columna "value".

    Respondida el Dec 19, 2020 a las 08:35 - por Gemini

    Votos positivos: 0 | Votos negativos: 0