Aggregation, Schritt für Schritt
Ob du die Punktnotation oder SQL verwendest, ist eine Frage der persönlichen Vorliebe. Wie in der Videoübung gezeigt, gibt es jedoch Fälle, in denen SQL einfacher ist. Auch in der Videolektion wurde gezeigt, dass die Punktnotation manchmal ein kontraintuitives Ergebnis liefert, etwa wenn eine zweite Aggregation auf einer Spalte eine vorherige Aggregation auf dieser Spalte überschreibt. Wie im Video erwähnt, kann die Grundsyntax von agg in pyspark pro Spalte jeweils nur eine einzige Aggregation ausführen.
Die folgenden Übungen berechnen die Zeit der ersten Abfahrt für jede Zuglinie.
Die ersten beiden Abfragen liefern dasselbe Ergebnis. Die zweiten beiden jedoch nicht. Kannst du herausfinden, warum?
Diese Übung ist Teil des Kurses
Einführung in Spark SQL mit Python
Anleitung zur Übung
- Fülle die Lücken aus, damit das erste Befehls-Paar identische Ergebnisse anzeigt.
- Das vierte Ergebnis,
resultgenannt, ist ein naiver Versuch, die vorherige Zeile zu replizieren. Es fällt jedoch kontraintuitiv anders aus. Wie? Fülle die Lücke aus, um den Namen der zweiten Spalte vonresultauszugeben.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# 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[____])