CommencerCommencer gratuitement

Filtrage des données

Maintenant que vous avez un peu de savoir-faire sur SQL, il est plus facile de parler des opérations analogues à l'aide de Spark DataFrame.

Examinons la méthode .filter(). SQLComme vous vous en doutez, il s'agit de la contrepartie de la clause WHERE de Spark. La méthode .filter() prend soit une expression qui suivrait la clause WHERE d'une expression SQL sous forme de chaîne de caractères, soit une colonne Spark de valeurs booléennes (True/False).

Par exemple, les deux expressions suivantes produiront le même résultat :

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

Remarquez que dans le premier cas, nous passons une chaîne de caractères à .filter(). Dans SQL, nous écririons cette tâche de filtrage sous la forme SELECT * FROM flights WHERE air_time > 120. Le site .filter() de Spark peut accepter toute expression pouvant figurer dans la clause WHEREd'une requête SQL (dans ce cas, "air_time > 120"), à condition qu'elle soit transmise sous la forme d'une chaîne de caractères. Notez que dans ce cas, nous ne référençons pas le nom du tableau dans la chaîne - comme nous le ferions dans la requête SQL.

Dans le second cas, nous transmettons une colonne de valeurs booléennes à .filter(). Rappelez-vous que flights.air_time > 120 renvoie une colonne de valeurs booléennes qui contient True à la place des enregistrements de flights.air_time qui sont supérieurs à 120, et False dans le cas contraire.

Rappelez-vous qu'un site SparkSession appelé spark se trouve déjà dans votre espace de travail, ainsi que le DataFrame Spark flights.

Cet exercice fait partie du cours

Introduction à PySpark

Afficher le cours

Instructions

  • Utilisez la méthode .filter() pour trouver tous les vols qui ont parcouru plus de 1000 miles dans les deux sens :

    • Tout d'abord, transmettez à .filter() une chaîne SQL qui vérifie si la distance est supérieure à 1000. Enregistrez ceci sous long_flights1.

    • Transmettez ensuite à .filter() une colonne de valeurs booléennes qui vérifie la même chose. Enregistrez ceci sous long_flights2.

  • Utilisez .show() pour imprimer les têtes des deux DataFrame et vérifier qu'elles sont bien égales !

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

# 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
____.____()
____.____()
Modifier et exécuter le code