CommencerCommencer gratuitement

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

Afficher le cours

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 de result.

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[____])
Modifier et exécuter le code