2012-06-07 90 views
1

我的數據中有很多空條目。由於稍後處理,如果我可以將null的默認值設置爲字符串「other」,這將非常有幫助。我找不到一種方法來執行此操作(版本0.8.1-cdh3u4)Apache Pig:用字符串替換null

另外,我在我的GENERATE語句中有一些可能返回null的變量,而且我需要類似於SQL DECODE函數的某些變量獲取「其他」字符串而不是null。

例子:

tmp = FOREACH dump GENERATE site, REGEX_EXTRACT(name, '^(?:([^.]+)\\.?){1}', 1) AS project, ((ami MATCHES '.*datatype.*') ? REGEX_EXTRACT(name, '^(?:([^.]+)\\.?){5}', 1) : 'other') AS datatype, ami, duid, nbfiles, length, rnbfiles, rlength, name; 

這裏爲「現場」和「數據類型」可能會返回一個空字符串(這是有效),並解釋爲空,而應該是「其他」來代替。

非常感謝。

+0

我一直想要這個。我不認爲在沒有編寫UDF的情況下,在豬0.9.2 + piggybank中是不可能的。 – Nick

回答

1

所以我唯一能找到的就是?:三元運算符。這使得整個豬腳有點冗長,但是,它的工作原理:-)

(((ami MATCHES '.datatype.') ? REGEX_EXTRACT(name, '^(?:([^.]+)\.?){5}', 1) : 'other') IS NULL ? 'other' : ((ami MATCHES '.datatype.') ? REGEX_EXTRACT(name, '^(?:([^.]+)\.?){5}', 1) : 'other')) AS datatype 
+0

嗨,這是否也適用於整數字段?你不能使用整數字段的權利「IS NULL」命令? – Learner