BaşlayınÜcretsiz başlayın

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'imiz df var.
  • df, schedule adlı 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ş

Kursa Göz Atın

Egzersiz talimatları

  • dot_df ile 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()
Kodu Düzenle ve Çalıştır