1

我的数据中有很多空条目。由于稍后的处理,如果我可以将 null 的默认值设置为字符串“其他”,这将非常有帮助。我找不到这样做的方法(版本 0.8.1-cdh3u4)

此外,我的 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; 

这里:'site' 和 'datatype' 可以返回一个空字符串(这是有效的)并被解释为 null,但应该是“other”。

非常感谢。

4

1 回答 1

1

所以我唯一能找到的是 ?: 三元运算符。这使得整个 pig 脚本有点冗长,但是很好,它可以工作:-)

(((ami MATCHES '.datatype.') ? REGEX_EXTRACT(name, '^(?:([^.]+)\.?){5}', 1) : 'other') IS NULL ? 'other' : ((ami MATCHES '.datatype.') ? REGEX_EXTRACT(name, '^(?:([^.]+)\.?){5}', 1) : 'other')) AS datatype
于 2012-06-12T05:32:30.853 回答