CommencezCommencez gratuitement

Filtrer des données

Maintenant que vous avez un peu de connaissances en SQL, il est plus facile d'aborder les opérations analogues avec les DataFrames de Spark.

Jetons un coup d'œil à la méthode .filter(). Comme vous vous en doutez, c'est l'équivalent Spark de la clause WHERE en SQL. La méthode .filter() reçoit soit une expression (sous forme de chaîne de caractères) qui suivrait la clause WHERE en SQL, soit une colonne Spark de valeurs booléennes (True/False).

Par exemple, les deux expressions suivantes produisent 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(). En SQL, on écrirait ce filtrage ainsi : SELECT * FROM flights WHERE air_time > 120. La méthode .filter() de Spark peut accepter toute expression qui irait dans la clause WHERE d'une requête SQL (dans ce cas, "air_time > 120"), pourvu qu'elle soit transmise sous forme de chaîne. Notez que, dans ce cas, nous ne faisons pas référence au nom de la table dans la chaîne — comme on ne le ferait pas non plus dans la requête SQL.

Dans le second cas, nous passons une colonne de valeurs booléennes à .filter(). Rappelez-vous que flights.air_time > 120 retourne une colonne booléenne qui contient True pour les enregistrements de flights.air_time au-dessus de 120, et False sinon.

N'oubliez pas qu'un SparkSession nommé spark est déjà présent dans votre espace de travail, de même que le DataFrame Spark flights.

Cette activité fait partie du cours

Fondements de PySpark

Voir le cours

Instructions de l’exercice

  • Utilisez la méthode .filter() pour repérer tous les vols qui ont parcouru plus de 1000 milles de deux façons :
    • D'abord, passez une chaîne SQL à .filter() qui vérifie si la distance est supérieure à 1000. Enregistrez le résultat dans long_flights1.
    • Ensuite, passez une colonne de valeurs booléennes à .filter() qui vérifie la même condition. Enregistrez le résultat dans long_flights2.
  • Utilisez .show() pour afficher l'en-tête des deux DataFrames et vérifier qu'ils sont bel et bien identiques !

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# 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