假設透過對海量的原始資料後分析得到這樣的資料:
[(id,node,val)(id,node,val)...]
就是依序為使用者id,所在伺服器,數值這樣的元組,然後要依照伺服器分開,再依賴val大小進行排序,然後寫入excel。
或產生[{"id":xxx,"node":xxx,"val":xxx},{"id":xxx,"node":xxx,"val":xxx}...]
如果是只有一組kv,可以透過sorted的方式進行排序,但是現在node的名稱是未知的,這些伺服器名稱每天都可以能會改變。當我取得到這樣的資料後,如何根據伺服器名稱分開,再排序資料呢?
這裡主要卡在,node本身的名稱並不是固定的,例如你先創建n個列表,把相同節點的資料放進去,但你不知道要創建多少個列表。而且之後將處理後的資料寫入excel時,勢必要用到循環。
這樣循環套循環,而且無論是資料分類後,或是排布後的新資料組名稱都不是確定的。即使使用exec指令也無法滿足需要啊
另外其實可以將資料依id, node, val 全部寫入csv檔
透過linux的awk, uniq, sort 等指令工具寫一個shell腳本, 也是很快的
還有關於你的海量數據究竟有多大, 在哪個數量級,沒有明確, 如果數據量真的很大, 用上面的python代碼內存不夠用也是可能的, 這個需要你自己估算下
如果我正確理解了你的需求的話,可以用字典,字典的鍵是node的名稱,字典的值是由項組成的列表:
之後再根據鍵(伺服器名稱)取出字典中的每一項的值(就是資料列表),對其sort加lambda根據每一項中的某個值進行排序。