Agrégation, étape par étape
Choisir entre la notation point et SQL relève des préférences personnelles. Cependant, comme on l'a démontré dans l'exercice vidéo, il y a des cas où SQL est plus simple. Comme on l'a aussi montré dans la leçon vidéo, il existe des situations où la notation point donne un résultat contre-intuitif, par exemple lorsqu'une deuxième agrégation sur une colonne écrase une agrégation précédente sur cette même colonne. Comme mentionné dans la vidéo, la syntaxe de base de agg dans pyspark ne permet d'effectuer qu'une seule agrégation par colonne à la fois.
Les exercices suivants calculent l'heure du premier départ pour chaque ligne de train.
Les deux premières requêtes correspondent. Cependant, les deux suivantes non. Pouvez-vous déterminer pourquoi?
Cette activité fait partie du cours
Introduction à Spark SQL en Python
Instructions de l’exercice
- Remplissez les espaces pour que la première paire de commandes affiche un résultat identique.
- Le quatrième résultat, nommé
result, est une tentative naïve de reproduire la ligne précédente. Pourtant, le résultat est contre-intuitivement différent. En quoi? Remplissez l'espace pour imprimer le nom de la deuxième colonne deresult.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# Give the identical result in each command
spark.sql('SELECT train_id, MIN(time) AS start FROM schedule GROUP BY train_id').show()
df.groupBy('____').agg({'time':'____'}).withColumnRenamed('____', 'start').show()
# Print the second column of the result
spark.sql('SELECT train_id, MIN(time), MAX(time) FROM schedule GROUP BY train_id').show()
result = df.groupBy('train_id').agg({'time':'min', 'time':'max'})
result.show()
print(result.columns[____])