Agregare pas cu pas
Alegerea între notația cu punct și SQL ține de preferința personală. Totuși, așa cum s-a demonstrat în exercițiul video, există situații în care SQL este mai simplu. De asemenea, tot în lecția video s-a arătat că notația cu punct poate produce rezultate neașteptate – de exemplu, când o a doua agregare pe o coloană o suprascrie pe prima. Așa cum s-a menționat în video, sintaxa de bază a agg în PySpark permite o singură agregare pe fiecare coloană, la un moment dat.
Exercițiile următoare calculează ora primei plecări pentru fiecare linie de tren.
Primele două interogări produc același rezultat. Ultimele două, însă, nu. Poți să îți dai seama de ce?
Acest exercițiu face parte din cursul
Introducere în Spark SQL în Python
Instrucțiuni pentru exercițiu
- Completează spațiile libere pentru ca prima pereche de comenzi să afișeze rezultate identice.
- Al patrulea rezultat, numit
result, este o încercare naivă de a replica linia anterioară. Totuși, produce un rezultat diferit față de ce te-ai aștepta. Cum anume? Completează spațiul liber pentru a afișa numele celei de-a doua coloane dinresult.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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[____])