彙總,逐步來
使用點記法或 SQL 多半是個人偏好。不過,如同影片練習所示,有些情況用 SQL 較為簡潔。此外,影片課程也示範了有些情況使用點記法會得到違反直覺的結果,例如當你在同一個欄位上做第二次彙總時,會覆蓋掉先前對該欄位做的彙總。如影片中所提,pyspark 中 agg 的基本語法一次只能對每個欄位做一種彙總。
以下練習要計算每條火車線最早的發車時間。
前兩個查詢會相同。但後兩個不會。你能判斷原因嗎?
本練習屬於課程
Python Spark SQL 入門
練習說明
- 填入空格,讓第一組指令顯示相同的結果。
- 第四個結果命名為
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[____])