CommencerCommencez gratuitement

Filtrage des données

Maintenant que vous avez acquis quelques connaissances en SQL, il est plus facile de discuter des opérations analogues à l'aide de Spark DataFrames.

Examinons la méthode .filter(). Comme vous pouvez le supposer, il s'agit de l'équivalent Spark de la clause SQL « WHERE ». La méthode .filter() accepte soit une expression qui suivrait la clause WHERE d'une expression SQL sous forme de chaîne, 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()

Veuillez noter que dans le premier cas, nous transmettons une chaîne à .filter(). En SQL, nous rédigerions cette tâche de filtrage comme suit : SELECT * FROM flights WHERE air_time > 120. .filter() de Spark peut accepter toute expression pouvant être utilisée dans la clause WHEREd'une requête SQL (dans ce cas, "air_time > 120"), à condition qu'elle soit transmise sous forme de chaîne. Veuillez noter que dans ce cas, nous ne faisons pas référence au nom de table dans la chaîne, comme nous ne le ferions pas dans la requête SQL.

Dans le second cas, nous transmettons effectivement une colonne de valeurs booléennes à .filter(). Veuillez noter que la fonction flights.air_time > 120 renvoie une colonne de valeurs booléennes contenant True à la place des enregistrements de flights.air_time supérieurs à 120, et False dans les autres cas.

Veuillez noter qu'un SparkSession nommé spark se trouve déjà dans votre espace de travail, ainsi que le Spark DataFrame flights.

Cet exercice fait partie du cours

<cours>Principes fondamentaux de PySpark</cours>
Voir le cours

Instructions de l’exercice

  • Utilisez la méthode .filter() pour identifier tous les vols qui ont parcouru plus de 1 000 miles aller-retour :

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

    • Veuillez ensuite transmettre une colonne de valeurs booléennes à .filter() qui vérifie le même élément. Enregistrez cela sous long_flights2.

  • Veuillez utiliser .show() pour imprimer les Heads des deux DataFrame et vous assurer qu'ils sont effectivement 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