Dieselbe Spalte zweimal aggregieren
Es gibt Fälle, in denen die Punktnotation umständlicher ist als SQL. In dieser Übung berechnest du die erste und letzte Uhrzeit für jede Zuglinie. Der folgende Code macht das mit Punktnotation.
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|
+--------+-----+-----+
Deine Aufgabe ist es, dasselbe Ergebnis mit einer SQL-Abfrage zu erreichen. Das DataFrame df wurde als Tabelle mit dem Namen schedule registriert.
Diese Übung ist Teil des Kurses
<Kurs>Einführung in Spark SQL mit Python</Kurs>Übungsanweisungen
- Schreibe eine SQL-Abfrage, die dasselbe Ergebnis liefert wie die Abfrage mit Punktnotation.
Interaktive praktische Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
# Write a SQL query giving a result identical to dot_df
query = "SELECT ____ FROM schedule ____ ____ ____"
sql_df = spark.sql(query)
sql_df.show()