Window-Funktion von Dot-Notation zu SQL umwandeln
Wir fügen einem Zugfahrplan eine Spalte hinzu, sodass jede Zeile die Anzahl der Minuten enthält, die der Zug bis zum nächsten Halt benötigt.
- Wir haben ein DataFrame
df, wobeidf.columns == ['train_id', 'station', 'time']. dfist als SQL-Tabelle mit dem Namenscheduleregistriert.- Die folgende Window-Funktion verwendet die Dot-Notation. Sie liefert ein neues DataFrame
dot_df.
window = Window.partitionBy('train_id').orderBy('time')
dot_df = df.withColumn('diff_min',
(unix_timestamp(lead('time', 1).over(window),'H:m')
- unix_timestamp('time', 'H:m'))/60)
Beachte die Verwendung der Funktion unix_timestamp, die der SQL-Funktion UNIX_TIMESTAMP entspricht.
Bitte beachte das Gerüst im Beispielcode. Wenn du die Antwort entsprechend dem Gerüst formatierst, wird verhindert, dass deine eingereichte Antwort fälschlicherweise aufgrund eines Formatierungsproblems abgelehnt wird.
Diese Übung ist Teil des Kurses
Einführung in Spark SQL mit Python
Anleitung zur Übung
- Erstelle eine SQL-Abfrage, die das identische Ergebnis wie
dot_dfliefert. Bitte formatiere die Abfrage gemäß dem Gerüst (d. h. die Platzhalter-Unterstriche_____).
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# Create a SQL query to obtain an identical result to dot_df
query = """
SELECT *,
(____(____(time, 1) ____ (____ BY train_id ____ BY time),'H:m')
- ____(time, 'H:m'))/60 AS diff_min
FROM schedule
"""
sql_df = spark.sql(query)
sql_df.show()