Pencere fonksiyonunu nokta gösteriminden SQL'e dönüştür
Bir tren tarifesine yeni bir sütun ekleyeceğiz; böylece her satırda trenin bir sonraki durağına varması için gereken dakika sayısı yer alacak.
df.columns == ['train_id', 'station', 'time']olan bir dataframe'imizdfvar.df,scheduleadlı bir SQL tablosu olarak kaydedildi.- Aşağıdaki pencere fonksiyonu sorgusu nokta gösterimini kullanır. Yeni bir dataframe
dot_dfüretir.
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)
unix_timestamp fonksiyonunun, UNIX_TIMESTAMP SQL fonksiyonuna denk olduğuna dikkat et.
Lütfen örnek koddaki iskelet yapısına dikkat et. Yanıtını bu iskelete uygun biçimlendirmen, gönderdiğin yanıtın biçimlendirme nedeniyle hatalı şekilde reddedilmesini önleyecektir.
Bu egzersiz, kursun bir parçasıdır
Python ile Spark SQL'e Giriş
Egzersiz talimatları
dot_dfile aynı sonucu elde edecek bir SQL sorgusu oluştur. Lütfen sorguyu iskelete göre biçimlendir (yani yer tutucu alt çizgileri_____kullan).
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
# 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()