PySpark array_contains()

PySpark array_contains()

En PySpark, la función array_contains() se utiliza para buscar si un valor dado está presente en una columna de tipo arreglo (array). Esta función devuelve un valor booleano indicando si el valor está presente o no. Con esta función, puedes evitar escribir un código complejo y tedioso para buscar un valor en un arreglo.

📋 Aquí podrás encontrar✍
  1. Sintaxis
  2. Ejemplos de uso
    1. Ejemplo 1: Buscar un valor específico en una columna de tipo array
    2. Ejemplo 2: Buscar valores en una columna de tipo array con valores nulos
  3. Conclusión
  4. Preguntas frecuentes
    1. ¿Puedo utilizar la función array_contains() en una columna de tipo mapa (map)?
    2. ¿Cómo puedo utilizar la función array_contains() para buscar valores en varias columnas al mismo tiempo?
    3. ¿La función array_contains() es sensible a mayúsculas y minúsculas?
    4. ¿Cómo puedo utilizar la función array_contains() en una operación de filtrado?

Sintaxis

La sintaxis de la función array_contains() es la siguiente:


array_contains(columna, valor)

Donde:

  • columna: es la columna de tipo array en la que se buscará el valor.
  • valor: es el valor que se buscará en la columna.

La función devolverá true si el valor está presente en la columna y false si no lo está.

Ejemplos de uso

Ejemplo 1: Buscar un valor específico en una columna de tipo array

Supongamos que tenemos un conjunto de datos que contiene información sobre usuarios de una plataforma de juegos en línea. Una de las columnas se llama "juegos_jugados" y contiene los juegos que cada usuario ha jugado. Queremos saber si el juego "Fortnite" está en la lista de juegos jugados por cada usuario. Usaremos la función array_contains() para hacerlo de manera sencilla.


from pyspark.sql.functions import array_contains

datos = [
    ("usuario1", ["Fortnite", "Minecraft", "FIFA"]),
    ("usuario2", ["Minecraft", "Assassin's Creed", "Call of Duty"]),
    ("usuario3", ["Overwatch", "League of Legends", "Fortnite"]),
    ("usuario4", ["FIFA", "Fortnite"]),
]

df = spark.createDataFrame(datos, ["usuario", "juegos_jugados"])
df.show()

df = df.withColumn("juego_preferido", array_contains(df.juegos_jugados, "Fortnite"))
df.show()

En este ejemplo, creamos un DataFrame llamado "df" con información sobre los juegos jugados por varios usuarios. Usamos la función array_contains() dentro de la función withColumn() para crear una nueva columna llamada "juego_preferido" que indica si el juego "Fortnite" está presente o no en la lista de juegos jugados.

Ejemplo 2: Buscar valores en una columna de tipo array con valores nulos

En algunos casos, las columnas de tipo array pueden contener valores nulos. Es importante tener en cuenta esto al usar la función array_contains(). La función no funcionará adecuadamente si se buscan valores en una columna que contenga valores nulos.


from pyspark.sql.functions import array_contains, lit

datos = [
    ("usuario1", ["Fortnite", "Minecraft", "FIFA"]),
    ("usuario2", None),
    ("usuario3", ["Overwatch", "League of Legends", "Fortnite"]),
    ("usuario4", ["FIFA", "Fortnite"]),
]

df = spark.createDataFrame(datos, ["usuario", "juegos_jugados"])
df = df.fillna({'juegos_jugados': lit(None)})
df.show()

df = df.withColumn("juego_preferido", array_contains(df.juegos_jugados, "Fortnite"))
df.show()

En este ejemplo, creamos un DataFrame similar al ejemplo anterior, pero hemos agregado valores nulos en la columna de juegos jugados. Para solucionar esto, estamos llenando los valores nulos con la función fillna() y la cadena de caracteres lit(None). De esta forma, la función array_contains() no tendrá problemas al buscar valores en la columna.

Conclusión

La función array_contains() es una de las funciones integradas en PySpark que te permiten buscar fácilmente si un valor específico está presente en una columna de tipo array. Utilizando esta función puedes simplificar tu código y ahorrar tiempo al no tener que escribir complejos ciclos de programación para buscar valores específicos en una columna de tipo array.

Preguntas frecuentes

¿Puedo utilizar la función array_contains() en una columna de tipo mapa (map)?

No, la función array_contains() solo se puede utilizar en columnas de tipo array. Si necesitas buscar valores específicos en columnas de tipo mapa, deberás buscar otra función que cumpla esta función.

¿Cómo puedo utilizar la función array_contains() para buscar valores en varias columnas al mismo tiempo?

Puedes llamar a la función array_contains() varias veces dentro de la función withColumn() para buscar valores en varias columnas al mismo tiempo.

¿La función array_contains() es sensible a mayúsculas y minúsculas?

Sí, la función array_contains() es sensible a mayúsculas y minúsculas. Si buscas un valor en una columna de tipo array, debes asegurarte de que la capitalización sea la misma que la que existe en la columna.

¿Cómo puedo utilizar la función array_contains() en una operación de filtrado?

Puedes utilizar la función array_contains() en una operación de filtrado para seleccionar filas que contengan un valor específico en una columna de tipo array. La sintaxis de la operación de filtrado es la siguiente:


df.filter(array_contains(df.juegos_jugados, "Fortnite") == True)

En este ejemplo, estamos filtrando las filas del DataFrame "df", buscando aquellas que contengan el valor "Fortnite" en la columna "juegos_jugados".

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir