Aggregazione, passo dopo passo
Scegliere se usare la dot notation o SQL è una preferenza personale. Tuttavia, come mostrato nell'esercizio del video, ci sono casi in cui SQL è più semplice. Come mostrato anche nella lezione video, ci sono casi in cui la dot notation produce un risultato controintuitivo, ad esempio quando una seconda aggregazione su una colonna sovrascrive una precedente aggregazione sulla stessa colonna. Come detto nel video, la sintassi base di agg in PySpark consente di eseguire una sola aggregazione per ciascuna colonna alla volta.
I seguenti esercizi calcolano l'orario della prima partenza per ogni linea ferroviaria.
Le prime due query coincidono. Le seconde due no. Riesci a capire perché?
Questo esercizio fa parte del corso
Introduzione a Spark SQL in Python
Istruzioni dell'esercizio
- Compila gli spazi vuoti per fare in modo che la prima coppia di comandi mostri un risultato identico.
- Il quarto risultato, chiamato
result, è un tentativo ingenuo di replicare la riga precedente. Tuttavia, è sorprendentemente diverso. In che modo? Compila lo spazio vuoto per stampare il nome della seconda colonna diresult.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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[____])