เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การรวมค่าทีละขั้น

การเลือกใช้ dot notation หรือ SQL ขึ้นอยู่กับความถนัดส่วนตัว อย่างไรก็ตาม อย่างที่เห็นในวิดีโอ SQL มักให้ผลที่กระชับกว่าในบางกรณี และในทางกลับกัน dot notation ก็อาจให้ผลลัพธ์ที่ไม่ตรงกับที่คาดไว้ เช่น เมื่อทำการรวมค่าครั้งที่สองบนคอลัมน์เดิม ผลจะทับค่าที่รวมไว้ก่อนหน้า ดังที่กล่าวถึงในวิดีโอ ไวยากรณ์พื้นฐานของ agg ใน PySpark สามารถทำการรวมค่าได้เพียงครั้งเดียวต่อคอลัมน์ในแต่ละครั้ง

แบบฝึกหัดต่อไปนี้จะคำนวณเวลาออกเดินทางครั้งแรกของแต่ละสายรถไฟ

ผลลัพธ์สองชุดแรกตรงกัน แต่สองชุดหลังไม่ตรงกัน ลองคิดดูว่าเพราะเหตุใด

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Introduction to Spark SQL in Python

ดูคอร์ส

คำแนะนำการฝึกหัด

  • เติมช่องว่างเพื่อให้คำสั่งคู่แรกแสดงผลลัพธ์ที่เหมือนกัน
  • ผลลัพธ์ชุดที่สี่ ซึ่งมีชื่อว่า result เป็นความพยายามที่ตรงไปตรงมาในการจำลองบรรทัดก่อนหน้า แต่กลับให้ผลลัพธ์ที่แตกต่างออกไปอย่างน่าประหลาดใจ เป็นเพราะอะไร? เติมช่องว่างเพื่อพิมพ์ชื่อของคอลัมน์ที่สองของ result

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# Give the identical result in each command
spark.sql('SELECT train_id, MIN(time) AS start FROM schedule GROUP BY train_id').show()
df.groupBy('____').agg({'time':'____'}).withColumnRenamed('____', 'start').show()

# Print the second column of the result
spark.sql('SELECT train_id, MIN(time), MAX(time) FROM schedule GROUP BY train_id').show()
result = df.groupBy('train_id').agg({'time':'min', 'time':'max'})
result.show()
print(result.columns[____])
แก้ไขและรันโค้ด