近期看到很多人都在諮詢表格轉置方面的問題,實際上在之前的博客中,關於數據處理的流程有涉及到通過FME如何進行表格數據的轉置處理。既然很多人都在諮詢轉置的問題,這裏就形成一篇定向博客,爲大家統一的講解FME中處理表格轉置的幾種方法。
1、原始數據與實現成果
2、FME處理表格轉置的方式:
(1)AttributePivoter
(2)Pythoncaller
(3)AttributeTransposer
AttributePivoter
(1) 通過AttributePivoter轉換器實現數據的轉置,通過Dynamic動態流控制數據輸出的結構。
首先想要實現數據轉置,在FME裏可直接採用AttributePivoter轉換器。以測試數據爲例,測試數據包括的屬性字段:“項目編號”字段爲轉置的分類字段;“環節”字段爲轉置後想要輸出的屬性字段名稱;“日期”字段爲轉置後的屬性值。按照測試數據進行數據轉置,AttributePivoter轉換器的設置如下:
AttributePivoter轉換器不僅可以對數據進行轉置處理,同時也可對數據進行統計(如上圖第4部分參數的內容),如果您在轉置的過程中無需進行統計的處理,可以將“Include Grand Total Columns”參數設置爲“NO”,即可不輸出統計列。
處理後得到的數據如下:
(2)結構輸出
根據以上AttributePivoter轉換器處理數據的成果大家可以看到,轉置之後是不會自動將成果屬性字段暴露爲用戶屬性。那麼有些用戶可能會有疑問,輸出的時候如何輸出成果字段?
入門一點的方法,可以添加AttributeExposer轉換器把需要輸出的屬性字段都暴露出來再輸出。
再通過靜態輸出到excel表等數據格式中
以上的方式可以得到最終轉置後的成果,但是FME經驗玩家會發現這種方式不智能,在AttributeExposer轉換器時需要手動去設置需要暴露的屬性字段,遇到屬性字段非常多的時候,這種輸出方式過於費時。
大家肯定要疑問,如何有效的解決這種問題?
我們不妨再來分析一下前面的中間結果,對AttributePivoter轉換器成果的結果再進行分析,發現本身AttributePivoter轉換器轉置後生成成果中會自動創建schema屬性結構。
不由想到,動態輸出方式中支持schema結構輸出的方式,是否可以按照動態輸出,選擇scheme結構的方式動態的保存數據結構。
經過測試,動態輸出通過schema保存結構。這種方式解決了AttributeExposer轉換器手動暴露字段的煩惱。
當然轉置的處理除了AttributePivoter轉換器外,還可以採用以下兩種方式進行:
Pythoncaller
用PythonCaller轉換器調用Python代碼來實現。
之前的“FME實現三調地類變化流量表製作”的博客裏用的就是PythonCaller轉換器編寫代碼的方式,來完成二調數據結構與三調數據結構不一致時,數據的轉換問題。
AttributeTransposer
FME Hub是廣大FME愛好者自行封裝,分享給大家使用的共享平臺。AttributeTransposer爲FME Hub所提供的轉換器,能夠解決簡單的表格轉置問題。
如上圖所示,如果數據無需進行分類是,用AttributeTransposer轉換器可以直接將表格進行轉置,但如果原始數據存在分類,則直接使用AttributeTransposer轉換器無法達到正確的效果。
以原始演示數據爲例:
涉及分類的源數據樣式無法用AttributeTransposer轉換器直接實現。
總結,千人千面,數據是變化多端的,處理方式也是變化多端的,大家可以根據自己的需要進行選擇,本篇博客轉置的處理方式就介紹到這裏。