ComenzarEmpieza gratis

Filtrado de datos

Ahora que ya conoces un poco SQL, es más fácil hablar de las operaciones análogas utilizando Spark DataFrames.

Veamos el método .filter(). Como puedes sospechar, ésta es la contrapartida Spark de la cláusula WHERE de SQL. El método .filter() toma como cadena una expresión que seguiría la cláusula WHERE de una expresión SQL, o una columna Spark de valores booleanos (True/False).

Por ejemplo, las dos expresiones siguientes producirán el mismo resultado:

flights.filter("air_time > 120").show()
flights.filter(flights.air_time > 120).show()

Observa que en el primer caso, pasamos una cadena a .filter(). En SQL, escribiríamos esta tarea de filtrado como SELECT * FROM flights WHERE air_time > 120. .filter() de Spark puede aceptar cualquier expresión que pudiera ir en la cláusula WHERE de una consulta SQL (en este caso, "air_time > 120"), siempre que se pase como una cadena. Observa que, en este caso, no hacemos referencia al nombre de la tabla en la cadena, como no haríamos en la petición SQL.

En el segundo caso, en realidad pasamos una columna de valores booleanos a .filter(). Recuerda que flights.air_time > 120 devuelve una columna de valores booleanos que tiene True en lugar de los registros de flights.air_time que sean mayores de 120, y False en caso contrario.

Recuerda que ya tienes en tu espacio de trabajo un SparkSession llamado spark, junto con el Spark DataFrame flights.

Este ejercicio forma parte del curso

Introducción a PySpark

Ver curso

Instrucciones del ejercicio

  • Utiliza el método .filter() para encontrar todos los vuelos que recorrieron más de 1000 millas en ambos sentidos:

    • Primero, pasa una cadena SQL a .filter() que compruebe si la distancia es superior a 1000. Guárdala como long_flights1.

    • A continuación, pasa una columna de valores booleanos a .filter() que compruebe lo mismo. Guárdala como long_flights2.

  • Utiliza .show() para imprimir las cabezas de ambos DataFrames y asegurarte de que son realmente iguales.

Ejercicio interactivo práctico

Prueba este ejercicio completando el código de muestra.

# Filter flights by passing a string
long_flights1 = ____.____("____ > ____")

# Filter flights by passing a column of boolean values
long_flights2 = ____.____(____.____ > ____)

# Print the data to check they're equal
____.____()
____.____()
Editar y ejecutar código