Agrégation, étape par étape
Choisir la notation par points ou le SQL relève en partie d’une préférence personnelle. Cependant, comme montré dans la vidéo, certaines situations sont plus simples en SQL. À l’inverse, la notation par points peut parfois donner un résultat contre‑intuitif, par exemple lorsqu’une seconde 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 de réaliser 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. En revanche, les deux suivantes non. Pouvez‑vous déterminer pourquoi ?
Cet exercice fait partie du cours
Introduction à Spark SQL en Python
Instructions
- Complétez les blancs 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, il est de manière contre‑intuitive différent. En quoi ? Complétez le blanc pour afficher le nom de la deuxième colonne deresult.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# 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[____])