Zacznij terazZacznij za darmo

Agregacja krok po kroku

Wybór między notacją kropkową a SQL to kwestia osobistych preferencji. Jednak, jak pokazano w ćwiczeniu wideo, są sytuacje, w których SQL jest prostszy. Jak również pokazano w lekcji wideo, zdarzają się przypadki, gdy notacja kropkowa daje nieoczekiwany wynik – na przykład gdy druga agregacja na kolumnie nadpisuje wynik poprzedniej agregacji na tej samej kolumnie. Jak wspomniano w filmie, podstawowa składnia agg w PySpark pozwala wykonać tylko jedną agregację na każdej kolumnie naraz.

Poniższe ćwiczenia obliczają godzinę pierwszego odjazdu dla każdej linii pociągów.

Dwa pierwsze zapytania dają identyczne wyniki. Jednak dwa kolejne – nie. Czy potrafisz określić, dlaczego?

To ćwiczenie jest częścią kursu

Wprowadzenie do Spark SQL w Pythonie

Zobacz kurs

Instrukcje do ćwiczenia

  • Uzupełnij puste miejsca, aby pierwsza para poleceń wyświetlała identyczny wynik.
  • Czwarty wynik, nazwany result, to naiwna próba odtworzenia poprzedniej linii. Jednak daje on nieoczekiwanie inny rezultat. Jak? Uzupełnij puste miejsce, aby wyświetlić nazwę drugiej kolumny zmiennej result.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# 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[____])
Edytuj i uruchom kod