一句話計算出 TopN 的增長情況

xiaohuihui發表於2020-06-17

比如,一年中汙染最嚴重三天的 PM2.5 漲幅,瞭解這個漲幅,就能觀察出嚴重汙染是突然出現的,還是逐漸積累起來的。用 SQL 語句找出汙染最嚴重的三天,不算難:

select top 3 * from T order by pm25 desc

但後面的步驟比較麻煩,要找到這三天的前一天,還要和前一天的數值做計算,如果不是 SQL 高手,還真不能隨手把這個 SQL 寫正確。

 

如果用集算器 SPL 語言描述這個計算過程,就比較清晰,從資料庫得到原始資料:

>T=connect(”mysqlDB”).query(“select * from T”)

然後一行程式碼搞定整個計算需求:

>t3=T.ptop(-3, pm25),t3=t3.run(~=T(~).pm25/T(~-1).pm25-1)

這主要得益於 SPL 語言支援有序集合計算,容易得到資料在集合中的位置,也容易透過相對 / 絕對位置反查資料。

SPL在做有序集合計算時,對 SQL 裡的 TopN 進行了變種,可以取 TopN 的值 / 記錄 / 記錄在集合中的位置,以應對更廣泛的計算需求;可以應用到分組子集,增強分組後續操作的能力,參考

 

當資料不在資料庫裡時,SPL 載入資料仍然方便:
=file(“d:/t.csv”).import(;,",")

SPL能很方便地嵌入到JAVA應用,可參考 。

具體使用方法可參考 。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69900830/viewspace-2698910/,如需轉載,請註明出處,否則將追究法律責任。

相關文章