2014-09-13 9 views
10

मैं नीचे दी गई क्वेरी का उपयोग करके समानता जांच पास करने में असमर्थ हूं।तालिका में शामिल होने के दौरान हाइव क्वेरी में त्रुटि

मेरे पास 3 टेबल है और मैं इन तालिकाओं में शामिल होना चाहता हूं। मैं नीचे के रूप में की कोशिश कर रहा है, लेकिन त्रुटि मिलती है:

में विफल: अर्थगत विश्लेषण करने में त्रुटि: पंक्ति 03:40 दोनों बाएँ और दाएँ उपनाम में 'visit_date'

select t1.*, t99.* from table1 t1 JOIN 
    (select v3.*, t3.* from table2 v3 JOIN table3 t3 ON 
    (v3.AS_upc= t3.upc_no AND v3.start_dt <= t3.visit_date AND v3.end_dt >= t3.visit_date AND v3.adv_price <= t3.comp_price)) t99 ON 
    (t1.comp_store_id = t99.cpnumber AND t1.AS_store_nbr = t99.store_no); 

शामिल हों आई FuzzyTree से मदद के आधार पर संपादित:

पहला:

हमने खंड के बीच और कहां उपयोग करके उपरोक्त क्वेरी को संपादित करने का प्रयास किया, लेकिन क्वेरी से कोई आउटपुट नहीं मिला।

लेकिन अगर हमने तिथि के साथ खंड के बीच उपरोक्त क्वेरी को बदल दिया है, तो मुझे "v3.adv_price < = t3.comp_price" पर आधारित कुछ आउटपुट मिला, लेकिन "दिनांक फ़िल्टर" का उपयोग नहीं किया गया।

select t1.*, t99.* from table1 t1 JOIN 
    (select v3.*, t3.* from table2 v3 JOIN table3 t3 on (v3.AS_upc= t3.upc_no) 
     where v3.adv_price <= t3.comp_price 
    ) t99 ON 
    (t1.comp_store_id = t99.cpnumber AND t1.AS_store_nbr = t99.store_no); 

2:

अगला हम केवल एक ही तारीख को पारित करने की कोशिश की है:

select t1.*, t99.* from table1 t1 JOIN 
     (select v3.*, t3.* from table2 v3 JOIN table3 t3 on (v3.AS_upc= t3.upc_no) 
      where v3.adv_price <= t3.comp_price and v3.start_dt <= t3.visit_date 
     ) t99 ON 
     (t1.comp_store_id = t99.cpnumber AND t1.AS_store_nbr = t99.store_no); 

तो, अब यह कुछ परिणाम दिखा रहा है लेकिन अगर हम दोनों आरंभ और समाप्ति तिथि फिल्टर गुजरती हैं, यह ; कोई परिणाम नहीं दिखा रहा है।

उत्तर

28

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Joins

केवल समानता मिलती है, बाहरी मिलती है, और छोड़ दिया अर्द्ध हाइव में समर्थित हैं मिलती है। हाइव उन स्थितियों में सहायता नहीं करता है जो समानता स्थितियां नहीं हैं क्योंकि मानचित्र/नौकरी को कम करने जैसी स्थितियों को व्यक्त करना बहुत मुश्किल है।

कोशिश where खंड

select t1.*, t99.* from table1 t1 JOIN 
    (select v3.*, t3.* from table2 v3 JOIN table3 t3 on (v3.AS_upc= t3.upc_no) 
     where t3.visit_date between v3.start_dt and v3.end_dt 
     and v3.adv_price <= t3.comp_price 
    ) t99 ON 
    (t1.comp_store_id = t99.cpnumber AND t1.AS_store_nbr = t99.store_no); 
+1

करने के लिए अपने असमानताओं चलती मैं आपकी मदद के आधार पर क्वेरी संपादित, लेकिन अभी भी क्वेरी से उत्पादन प्राप्त करने में असमर्थ। मैंने अपनी मूल पोस्ट अपडेट की है। – Abhi

+0

मुझे एक ही समस्या का सामना करना पड़ा है। सुझाव दिया गया समाधान अच्छा है। मुझे नोट है कि त्रुटि संदेश में सुधार किया जा सकता है। यह भ्रामक है। – paolov

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