2015-09-09 7 views
5

हाइव IF (शर्त, अभिव्यक्ति, अभिव्यक्ति) का उपयोग करता है, इसलिए जब मैं करना चाहता हूँ/else if/else if/बाकी है, मैं क्या करना है: हैलिखने का सबसे अच्छा तरीका क्या है अगर/अन्य यदि/और अगर/में है?

IF(a, 1, IF(b, 2, IF(c, 3, 4))) 

वहाँ है यह करने के लिए एक बेहतर तरीका है कि अधिक पठनीय?

मानक

if (a) { 
    1 
} else if (b) { 
    2 
} else if (c) { 
    3 
} else { 
    4 
} 

उत्तर

22

के लिए इसी तरह कुछ ढूंढ रहे हैं आप अगर-किसी और परिदृश्य के लिए हाइव सशर्त CASE WHEN फ़ंक्शन का उपयोग कर सकते हैं। CASE Statement आपको समान कार्यक्षमता के साथ बेहतर पठनीयता प्रदान करेगा।

CASE 
    WHEN (condition1) THEN result1 
    WHEN (condition2) THEN result2 
    WHEN (condition3) THEN result3 
    WHEN (condition4) THEN result4 
    ELSE result_default 
END AS attribute_name 
+1

कॉस्मेटिक बदलाव की आवश्यकता है, END – venkata

0

अन्य कॉलम को अनुकूलित करने के लिए सबसे अच्छा तरीका है, तो विशेष कॉलम के लिए यूडीएफ को कस्टमाइज़ करना होगा।

+0

आईडीके के बाद एक अतिरिक्त ')' आईडीके यह कैसे काम करेगा? यदि हमारे पास पहले से ही कार्य है तो इसका उपयोग करने के लिए बेहतर है। – ChikuMiku

+0

मैं निष्पादन की गति के लिए कोड पठनीयता से समझौता करूंगा। यूडीएफ आम तौर पर सीमाओं को पार करता है - udf कार्यक्रम के लिए छिद्र से बाहर। यदि हाइव में संभव हो तो इसे हाइव फ़ंक्शंस में पूरा करने का प्रयास करें – viru

संबंधित मुद्दे