Window function को dot notation से SQL में बदलें
हम ट्रेन शेड्यूल में एक कॉलम जोड़ने जा रहे हैं ताकि प्रत्येक पंक्ति में यह बताया जा सके कि ट्रेन को अपने अगले स्टेशन तक पहुँचने में कितने मिनट लगेंगे.
- हमारे पास एक dataframe
dfहै जहाँdf.columns == ['train_id', 'station', 'time']. dfकोscheduleनाम की SQL table के रूप में रजिस्टर किया गया है.- नीचे दिया गया window function क्वेरी dot notation का उपयोग करता है. यह एक नया 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)
ध्यान दें कि यहाँ unix_timestamp फंक्शन का उपयोग किया गया है, जो UNIX_TIMESTAMP SQL फंक्शन के समतुल्य है.
कृपया नमूना कोड में दी गई स्कैफोल्डिंग पर ध्यान दें. स्कैफोल्डिंग के अनुसार उत्तर को फॉर्मैट करने से आपका सबमिट किया गया उत्तर फ़ॉर्मैटिंग समस्या के कारण गलत तरीके से अस्वीकार नहीं होगा.
यह अभ्यास पाठ्यक्रम का हिस्सा है
Python में Spark SQL परिचय
अभ्यास निर्देश
dot_dfजैसा ही परिणाम प्राप्त करने के लिए एक SQL क्वेरी बनाएँ. कृपया क्वेरी को स्कैफोल्डिंग के अनुसार फॉर्मैट करें (अर्थात्, placeholder underscores_____).
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
# 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()