Kettle使用_27 行转列与列转行方法汇总
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Kettle使用_27 行轉列與列轉行方法匯總
需求:通過kettle實現行列轉換與列轉行。
解決方法:主要通過排序記錄、行專列、列轉行、行扁平化組件解決。
Previous work:
這里的數據是學生成績數據和員工數據,詳細數據見文末的補充部分。
場景一(科目名和分數分別算一列):
Step1:新建轉換
Step2:拖個文本文件輸入,該組件位于轉換的輸入分類下。其中Student.txt的內容見下:
配置文件:
配置內容:
配置字段(這里的group對應原始數據里的name、score對應Result):
Step3:拖個排序記錄組件,該組件位于轉換的轉換分類下,通過SHIFT連接文本文件輸入與該組件并配置。
Step4:拖個列轉行(實際是行轉列),該組件位于轉換的轉換分類下。通過SHIFT連接排序組件與當前組件,并配置行轉列組件。
配置如下:
Step5:拖個文本文件輸出,該組件位于轉換的輸出分類下。SHIFT連接行轉列組件與當前組件,并配置該組件見下:
配置文件:
配置字段:
Step6:保存運行驗證轉換。結果見下:
場景二(科目名和分數合并到新列里)之方法一(關鍵值利用group字段):
這里主要在Step4有區別,配置見下:
Step5文件輸出時:
執行結果:
場景二(科目名和分數合并到新列里)之方法二(關鍵值直接手動填寫,分組字段為name即上文的group字段):
這里主要在Step4有區別,配置見下:
執行結果:
場景二(科目名和分數合并到新列里) 之方法三(通過行扁平化),配置見下:
執行結果:
場景二(合并列)之方法四(通過聚合函數),數據和配置見下:
行轉列(聚合函數方式配置):
執行結果;
場景三,列轉行:
這里拖個列轉行組件(該組件位于轉換的轉換分類下),并配置見下:
原始數據:
執行結果:
完整流程示意:
補充部分
詳細數據見下:
多行的數據見下:
Name??? key Subject Result
張冠??? 0?? 語文??? 73
張冠??? 1?? 數學??? 83
張冠??? 2?? 物理??? 93
張冠??? 3?? 英語??? 63
李戴??? 0?? 語文??? 74
李戴??? 1?? 數學??? 84
李戴??? 2?? 物理??? 94
李戴??? 3?? 英語??? 61
葉公??? 0?? 語文??? 59
葉公??? 1?? 數學??? 32
葉公??? 2?? 物理??? 90
葉公??? 3?? 英語??? 45
多列的數據見下:
Name??? Studentid?? chinese math??? physics english
張冠??? 1?? 73? 83? 93? 63
李戴??? 2?? 74? 84? 94? 61
葉公??? 3?? 59? 32? 90? 45
員工數據
department? year??? month?? staff?? src
市場部? 2019??? 1?? 100 1
市場部? 2019??? 1?? 200 2
市場部? 2019??? 2?? 200 1
市場部? 2019??? 3?? 400 1
市場部? 2019??? 3?? 500 2
市場部? 2019??? 3?? 600 3
技術部? 2019??? 1?? 120 1
技術部? 2019??? 1?? 240 2
技術部? 2019??? 2?? 150 3
技術部? 2019??? 2?? 120 1
技術部? 2019??? 2?? 240 2
技術部? 2019??? 3?? 300 1
產品部? 2019??? 3?? 100 1
產品部? 2019??? 3?? 200 2
總結
以上是生活随笔為你收集整理的Kettle使用_27 行转列与列转行方法汇总的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Kettle使用_26 根据增删改标识处
- 下一篇: win7怎么装win8 win7如何安装