Aggregatie, stap voor stap
Of je puntnotatie of SQL gebruikt, is een persoonlijke voorkeur. Zoals in de video-oefening is getoond, zijn er echter gevallen waarin SQL eenvoudiger is. Ook zijn er, zoals in de videoles gedemonstreerd, situaties waarin de puntnotatie een contra-intuïtief resultaat geeft, bijvoorbeeld wanneer een tweede aggregatie op een kolom een eerdere aggregatie op die kolom overschrijft. Zoals in de video vermeld, kan de basis-syntaxis van agg in PySpark maar één aggregatie per kolom tegelijk uitvoeren.
De volgende oefeningen berekenen de tijd van het eerste vertrek voor elke treinlijn.
De eerste twee queries komen overeen. De laatste twee niet. Kun je achterhalen waarom?
Deze oefening maakt deel uit van de cursus
Introductie tot Spark SQL in Python
Oefeninstructies
- Vul de lege plekken in zodat het eerste paar commando's hetzelfde resultaat laat zien.
- Het vierde resultaat,
resultgenoemd, is een naïeve poging om de vorige regel te kopiëren. Het is echter contra-intuïtief anders. Hoe? Vul de lege plek in om de naam van de tweede kolom vanresultte printen.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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[____])