ฉันมีข้อมูลในรูปแบบที่น่าสนใจ มันเป็นเช่นนี้:
ID Name Info
1 Joe quality=82,activity=23,age:rank:foo,21:0/1:30
2 Bob activity=32,age:foo,22:31,quality=43
3 Mary foo:age:rank,24:23:1/1,quality=62,activity=14
สิ่งที่ฉันพยายามแยกคือข้อมูล age:rank:foo ซึ่งแสดงเป็น:
age:rank:foo,(age value):(rank value):(foo value)
สำหรับทุกบันทึกอาจมีหรือไม่มีคีย์/ค่าเหล่านั้นบางส่วนหรือทั้งหมด และอาจอยู่ในลำดับใดก็ได้ ฉันกำลังพยายามแปลงข้อมูลดังนั้นฉันจึงได้สิ่งต่อไปนี้:
ID Name Quality Age Rank Foo
1 Joe 82 21 0/1 30
2 Bob 43 22 NULL 31
3 Mary 62 23 1/1 24
เพื่อให้ได้คุณภาพฉันกำลังทำสิ่งนี้:
A = LOAD '...' ...;
B = FOREACH A GENERATE ID, Name, REGEX_EXTRACT(info, 'quality=([0-9]+),', 1) AS Quality;
แต่ฉันไม่รู้ว่าจะแปลงคีย์/ค่าที่ไม่สม่ำเสมอเป็นคอลัมน์ได้อย่างไร มีข้อเสนอแนะอะไรบ้าง? (และไม่ฉันไม่สามารถให้พวกเขาส่งข้อมูลในรูปแบบที่ดีกว่านี้ให้ฉันได้ :P )
REGEX_EXTRACT
หรือREGEX_EXTRACT_ALL
ต่อไปได้? นั่นคือสิ่งที่ฉันจะทำ - person reo katoa   schedule 29.05.2014regex
และเน้นประเด็นนั้น - person reo katoa   schedule 29.05.2014