如果使用问号则多用其他语言

时间:2019-06-19 14:20:37

标签: apache-pig

我需要根据猪中CD_MARCHE的值来评估CD_AXE_MCH。我只应在下面使用问号选项:

 (CD_AXE_MCH IN ('PLIB','ATPE','COMM') ? 'P': (CD_AXE_MCH == 'PME') ?
 'E': (CD_AXE_MCH == 'AGRI') ? 'A': (CD_AXE_MCH == 'OBNL') ?
 'O':(CD_AXE_MCH == 'COLL') ? 'C' :(CD_AXE_MCH == 'EFIN') ? 
'B' :'X') AS CD_MARCHE,

但这会返回此错误

  

不匹配的输入'?'期待RIGHT_PAREN

请问如何解决?

1 个答案:

答案 0 :(得分:1)

在这种情况下,使用CASE语句更容易。 Available from Pig version 0.11+

CASE
WHEN CD_AXE_MCH MATCHES 'PLIB|ATPE|COMM' THEN 'P'
WHEN CD_AXE_MCH == 'PME' THEN 'E'
WHEN CD_AXE_MCH == 'AGRI' THEN 'A'
WHEN CD_AXE_MCH == 'OBNL' THEN 'O'
WHEN CD_AXE_MCH == 'COLL' THEN 'C'
WHEN CD_AXE_MCH == 'EFIN' THEN 'B'
ELSE 'B'
END CD_MARCHE

如果这不可行/不受支持,请确保正确放置括号。

(CD_AXE_MCH MATCHES 'PLIB|ATPE|COMM' ? 'P' : (CD_AXE_MCH == 'PME' ? 'E' : (CD_AXE_MCH == 'AGRI' ? 'A' : (etc.))))