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
Python ile Spark SQL'e Giriş
kursunun bir parçasıdırEgzersiz 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ı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
# 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()