2012-11-19 7 views
15

चूंकि कोई IFNULL, ISNULL, या NVL समारोह हाइव पर समर्थित, मैं मुसीबत शून्य परिवर्तित हो रही है 0 पर मैं COALESCE(*column name*, 0) कोशिश की, लेकिन नीचे त्रुटि संदेश प्राप्त हुआ है:COALESCE

तर्क प्रकार बेमेल 0: COALESCE के बाद भाव सब एक ही प्रकार होना चाहिए: "bigint" उम्मीद है, लेकिन "पूर्णांक" इस को हल करने के लिए कैसे

पाया जाता है?

+4

रूप NVL एक साथ चेनिंग द्वारा प्राप्त किया जा सकता आप की कोशिश की 'COALESCE (स्तंभ, कास्ट (0 BIGINT के रूप में))' किया? – Lamak

+0

हाइव 0.11 आगे, अब एनवीएल फ़ंक्शन है। कृपया https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-ConditionalFunctions देखें – gyan

उत्तर

19

जैसा कि लैमक ने टिप्पणी में बताया, COALESCE(column, CAST(0 AS BIGINT)) त्रुटि को हल करता है।

3

0.11 hive के बाद अगर मान शून्य है एक NVL समारोह nvl(T value, T default_value)

जो रिटर्न डिफ़ॉल्ट मान का कहना है है किसी और मान देता है

1

Language DDL & UDF of Hive

NVL(value, default value) 

रिटर्न डिफ़ॉल्ट मान से यदि मान किसी और अशक्त रिटर्न है मूल्य

0
nvl(value,defaultvalue) as Columnname 

गुम मूल्यों को डिफ़ॉल्ट रूप से

0

पर सेट करेगा यदि ग्राहक प्राथमिक संपर्क माध्यम ईमेल है, यदि ईमेल शून्य है तो फोननंबर, और यदि फोननंबर भी शून्य है तो पता। यह

coalesce(email,phonenumber,address) 

रूप COALESCE का उपयोग कर लिखा जाएगा, जबकि छत्ता में एक ही

nvl(email,nvl(phonenumber,nvl(address,'n/a'))) 
संबंधित मुद्दे