2013-08-25 17 views
8

में नल मानों को संभालना मैं एक अन्य तालिका (तालिका 1) से हाइव में एक टेबल (तालिका 2) बनाने की कोशिश कर रहा हूं। मैं कुछ पंक्तियों के साथ कुछ पंक्तियों को बाहर करने की कोशिश कर रहा हूं और निम्नलिखित शर्त का प्रयास किया।हाइव

insert overwrite table table2 partition (date = '2013-06-01') 
    select column1, column 2.... 
    from table1 
    where column1 is not NULL or column1 <> ''; 

हालांकि, जब मैं नई तालिका के साथ इस निम्न क्वेरी कोशिश मैं 300+ पंक्तियों शून्य vaues साथ मिलती है:

select count(*) from table2 where column1 is NULL; 

सकता है कि ये शून्य मान खड़ी कर रहा है के लिए किसी को बात?

धन्यवाद।

रवि

उत्तर

18

सबसे पहले — मुझे नहीं लगता कि column1 is not NULL or column1 <> '' बहुत ज्यादा समझ में आता है है। शायद आप column1 is not NULL and column1 <> '' (ANDOR के बजाय लिखना चाहते थे)?

द्वितीय — तालिका परिभाषाओं के लिए हाइव की "स्कीमा ऑन रीड" दृष्टिकोण के कारण, अमान्य मान NULL में परिवर्तित हो जाएंगे जब आप उन्हें पढ़ेंगे। तो, उदाहरण के लिए, यदि table1.column1 प्रकार STRING और table2.column1 प्रकार INT है, तो मुझे नहीं लगता कि table1.column1 IS NOT NULLtable2.column1 IS NOT NULL की गारंटी के लिए पर्याप्त है। (मुझे इसके बारे में निश्चित नहीं है, हालांकि।)

+1

निश्चित रूप से, यह ** और ** है। कॉलम पूर्ण नहीं होना चाहिए और खाली नहीं होना चाहिए ('')। रुख ने अच्छा जवाब दिया। – jbaptiste

2

आपकी हाइव टेबल में कॉलम 1 के लिए डेटाटाइप क्या है? कृपया ध्यान दें कि यदि आपका कॉलम STRING है तो इसमें कोई मूल्य नहीं होगा, भले ही आपकी बाहरी फ़ाइल में उस कॉलम के लिए कोई डेटा न हो।

+0

धन्यवाद! यह मेरे लिए काम करता है। – Ghrua

4

लंबाई> 0 को भी शामिल करने का प्रयास करें।

column1 is not NULL AND column1 <> '' AND length(column1) > 0 
0

शून्य के लिए स्तम्भ 1 के लिए डेटा की जाँच करें और यह स्ट्रिंग है की अपनी डेटाप्रकार पर विचार करने के लिए, आप कमांड नीचे इस्तेमाल कर सकते हैं:

select * from tbl_name where column1 is null or column1 <> ''; 
0

isnull (क), isnotnull उपयोग करने का प्रयास (क) , nvl(), इत्यादि। कुछ संस्करणों पर (संभावित रूप से सर्वर सेटिंग्स के साथ-साथ जिस पर मैं काम कर रहा हूं) के साथ 'आईएस न्यूल' और 'नॉट न्यूल' सिंटैक्स तर्क के निष्पादन को निष्पादित नहीं करता है संकलित। अधिक जानकारी के लिए here देखें।