ComenzarEmpieza gratis

Filtrado de datos

Ahora que ya tienes algunos conocimientos básicos de SQL, es más fácil hablar de las operaciones equivalentes con los DataFrames de Spark.

Veamos el método .filter(). Como te imaginarás, esta es la equivalente en Spark de la WHEREcláusula de SQL. El.filter()método admite como entrada una expresión que seguiría aWHEREla cláusula de una expresión SQL en forma de cadena, o una columna de Spark con 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, esta tarea de filtrado se escribiría asíSELECT * FROM flights WHERE air_time > 120: Spark.filter()puede aceptar cualquier expresión que se pueda incluir en la WHEREcláusula de una consulta SQL (en este caso, "air_time > 120"), siempre y cuando se pase como una cadena. Fíjate en que, en este caso, no mencionamos el nombre de la tabla en la cadena, igual que no lo haríamos en la consulta 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

Fundamentos de 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 que.filter() compruebe si la distancia es superior a 1000. Guárdalo como long_flights1.

    • A continuación, pasa una columna de valores booleanos a .filter() que compruebe lo mismo. Guárdalo 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 y completa 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