2012-10-22 16 views
6

यदि नक्शा प्रकार का उपयोग एक हाइव टेबल में किया जाता है, तो मैं एक शून्य प्रविष्टि के लिए कैसे परीक्षण कर सकता हूं (कुंजी मौजूद है, लेकिन मान शून्य है)?हाइव: कैसे नल मानचित्र प्रविष्टियों का परीक्षण और खोज करें?

तालिका के साथ

:

test1 (id string, m map<string, string>) 

मैं कुछ प्रविष्टियों को इस तरह दिखना है:

id1 {"b":"B","c":null} 
id2 {"b":"B"} 

अगर मैं क्वेरी चलाने:

चयन * test1 से जहां मीटर [ "सी"] शून्य है;

अभिव्यक्ति का मूल्यांकन प्रत्येक बार सत्य के बाद से दोनों पंक्तियों को वापस मिल जाएगा।

मैं कुंजी के बीच परीक्षण कैसे कर सकता हूं और मूल्य शून्य है?

+0

तो हाँ, मैंने अपना जवाब जोड़ा, लेकिन प्रतिक्रिया और/या अन्य समाधान की तलाश में – libjack

उत्तर

7

मैं पंक्तियों जहां नक्शा वास्तव में एक विशेष कुंजी है जानने के लिए 2 समाधान

ले कर आए हैं और इसके रिक्त है:

select * from test1 where array_contains(map_keys(m),'c') and m["c"] is null; 

किसी भी कुंजी खोजने के लिए जहां मान शून्य है:

select id,k from test1 LATERAL VIEW explode(m) et as k,v where v is null; 
संबंधित मुद्दे