橫表與豎表

橫表

豎表
上面兩張圖是同樣數(shù)據(jù)的兩種存儲方法,1為橫表,2為豎表
容易看出,豎表中的 subject 字段非常重要,這一列的數(shù)據(jù)去重后為 chinese, math, english ,即橫表中的三個字段名,在kettle的行列互轉(zhuǎn)中,這個 subject 字段被稱為 Key字段(關(guān)鍵字段)
行轉(zhuǎn)列
將橫表轉(zhuǎn)為豎表即為kettle的行轉(zhuǎn)列,其核心為橫表的chinese, math, english字段轉(zhuǎn)為了豎表的subject的值,將橫表chinese, math, english的數(shù)據(jù)轉(zhuǎn)為了豎表的grade的值
整體轉(zhuǎn)換

- 兩個對象
表輸入

- 讀取student表,下方視圖中可看到當(dāng)前的數(shù)據(jù)
- 行轉(zhuǎn)列操作無需排序
行轉(zhuǎn)列

- Key字段(起個名即可):即Key字段(關(guān)鍵字段)subject,行轉(zhuǎn)列操作后,chinese, math, english三個字段會變成一個新的字段的值,Key字段就是為這個新字段起個名稱
- 字段名稱:填寫橫表需要行轉(zhuǎn)列的字段,在這寫的字段會從原來的字段名轉(zhuǎn)變?yōu)橐涣袛?shù)據(jù),這列數(shù)據(jù)的列名為上面設(shè)置的Key字段名。
- Key值(不重要,一般與字段名稱一致即可):轉(zhuǎn)為列之后更改字段名稱
- Value字段(不重要,起個名即可):行轉(zhuǎn)列的那些字段之前是有很多數(shù)據(jù)的,給這些數(shù)據(jù)起個名字,名字都一致即可,多了也沒用
- 另外,kettle的行轉(zhuǎn)列對象有個bug,在對象窗口的左上角寫的可能是列轉(zhuǎn)行,無視就好
列轉(zhuǎn)行
將豎表轉(zhuǎn)為橫表即為kettle的列轉(zhuǎn)行,其核心為豎表的Key字段(關(guān)鍵字段)的數(shù)據(jù)聚合后成為橫表的字段名,即subject的chinese, math, english,本例中聚合字段為subject, studentID
表輸入

- 讀取student表
- 所有聚合字段必須先排序
列轉(zhuǎn)行

- 關(guān)鍵字段:即關(guān)鍵字段subject,列轉(zhuǎn)行的核心字段,此字段會進(jìn)行聚合操作,聚合結(jié)果作為之后橫表的新字段名
- 分組字段:關(guān)鍵字段的數(shù)據(jù)(chinese, math, english)有重復(fù),它的重復(fù)是有規(guī)律的,即每增加一個學(xué)生(studentID),其數(shù)據(jù)一般就會重復(fù)一次,其中決定它重復(fù)的字段studentID就是分組字段。此項(xiàng)可以為空,如果為空,那么轉(zhuǎn)換前有多少行數(shù)據(jù),轉(zhuǎn)換后就有多少個字段(差不多)。
- 目標(biāo)字段:關(guān)鍵字段的數(shù)據(jù)去重后(chinese, math, english)變成字段名,給這些字段名起個別名,一般與關(guān)鍵字值一致即可
- 數(shù)據(jù)字段:在豎表中,有一個與關(guān)鍵字段一一對應(yīng)的數(shù)據(jù)字段,它的字段名填在這,本例中為grade
- 關(guān)鍵字值:關(guān)鍵字段的數(shù)據(jù)去重后(chinese, math, english)即為關(guān)鍵字值
- 聚合:列轉(zhuǎn)行核心是對關(guān)鍵字段的聚合操作,除關(guān)鍵字段與分組字段之外,其他字段的聚合方式在這里選擇,比如本例選擇的最大值,id和name就會在聚合后取最大的一個值