Voortschrijdende sommen met windowfunctie-SQL
Een windowfunctie lijkt op een aggregatiefunctie, maar geeft een output voor elke rij in de gegevensset in plaats van één rij per groep.
Je kunt aggregeren in combinatie met windowfuncties. Een voortschrijdende som met een windowfunctie is eenvoudiger dan wat nodig is met JOINs. De uitvoeringstijd van de query kan ook veel korter zijn.
Er is een tabel schedule beschikbaar met de kolommen train_id, station, time en diff_min. De kolom diff_min geeft de verstreken tijd weer tussen het huidige station en het volgende station op de lijn.
Deze oefening maakt deel uit van de cursus
Introductie tot Spark SQL in Python
Oefeninstructies
- Voer een query uit die een extra kolom toevoegt aan de records in deze gegevensset,
running_totalgenaamd. De kolomrunning_totalvoert eenSUM()uit over het verschil in stationstijd dat wordt gegeven door de kolomdiff_min. - Voer de query uit en toon het resultaat.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# Add col running_total that sums diff_min col in each group
query = """
SELECT train_id, station, time, diff_min,
____(____) OVER (PARTITION BY ____ ORDER BY ____) AS running_total
FROM schedule
"""
# Run the query and display the result
spark.____(query).show()