開始使用免費開始

彙總,逐步來

使用點記法或 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[____])
編輯並執行程式碼