CommencezCommencez gratuitement

Agrégations doubles sur la même colonne

Il arrive que la notation par points soit plus lourde que SQL. Dans cet exercice, on calcule l'heure de début et de fin pour chaque ligne de train. Le code suivant le fait avec la notation par points.

from pyspark.sql.functions import min, max, col
expr = [min(col("time")).alias('start'), max(col("time")).alias('end')]
dot_df = df.groupBy("train_id").agg(*expr)
dot_df.show()
+--------+-----+-----+
|train_id|start|  end|
+--------+-----+-----+
|     217|6:06a|6:59a|
|     324|7:59a|9:05a|
+--------+-----+-----+

Votre objectif est d'obtenir le même résultat à l'aide d'une requête SQL. Le dataframe df a été enregistré comme table sous le nom schedule.

Cette activité fait partie du cours

Introduction à Spark SQL en Python

Voir le cours

Instructions de l’exercice

  • Écrivez une requête SQL qui donne un résultat identique à celui de la requête en notation par points.

Exercice interactif pratique

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

# Write a SQL query giving a result identical to dot_df
query = "SELECT ____ FROM schedule ____ ____ ____"
sql_df = spark.sql(query)
sql_df.show()
Modifier et exécuter le code