Aan de slagGa gratis aan de slag

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

Cursus bekijken

Oefeninstructies

  • Vul de lege plekken in zodat het eerste paar commando's hetzelfde resultaat laat zien.
  • Het vierde resultaat, result genoemd, 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 van result te 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[____])
Code bewerken en uitvoeren