2017-05-16 11 views
6

में कॉलम के रूप में इनपुट फ़ाइल नाम कैसे प्राप्त करें मेरे पास एस 3 डेटा पूछने के लिए एडब्ल्यूएस एथेना में बाहरी टेबल बनाए गए हैं, हालांकि स्थान पथ में 1000+ फाइलें हैं इसलिए मुझे रिकॉर्ड के संबंधित फ़ाइल नाम की आवश्यकता है तालिका में कॉलम।एडब्ल्यूएस एथेना बाहरी टेबल

चयन file_name, टेबल जहां file_name = "test20170516"

संक्षेप में मैं जानना चाहता INPUT__FILE__NAME (छत्ता) की जरूरत से col1 एडब्ल्यूएस एथेना Presto या किसी अन्य तरीके से एक ही प्राप्त करने के लिए बराबर है।

उत्तर

13

आप इसे $ पथ छद्म कॉलम के साथ कर सकते हैं।

select "$path" from table 
+0

जानकारी के लिए बहुत धन्यवाद। कृपया आप मुझे इससे संबंधित किसी भी लिंक को बता सकते हैं क्योंकि मैं थोड़ी देर के लिए खोज कर रहा था और कोई भी नहीं मिला। – Rajeev

+1

मुझे इसे कुछ समय पहले निम्नलिखित जिथब मुद्दे के माध्यम से मिला। https://github.com/prestodb/presto/issues/5486 –

+2

फिर से धन्यवाद। क्या इस तरह के कोई अन्य छद्म कॉलम हैं जिन्हें आप जानते हैं? – Rajeev

5

यदि आपको केवल फ़ाइल नाम की आवश्यकता है, तो आप इसे regeexp_extract() से निकाल सकते हैं।

"$path" पर एथेना में इसका इस्तेमाल करने के लिए आप कुछ इस तरह कर सकते हैं:

SELECT regexp_extract("$path", '[^/]+$') AS filename from table; 

आप विस्तार के बिना फ़ाइल नाम की जरूरत है, तो आप कर सकते हैं:

SELECT regexp_extract("$path", '[ \w-]+?(?=\.)') AS filename_without_extension from table; 

यहाँ प्रलेखन है Presto Regular Expression Functions

+0

मैं फ़ाइल नाम प्राप्त करने के लिए split_part ("$ PATH", '/', 7) का उपयोग कर रहा था, हालांकि आपका अधिक सामान्य है। धन्यवाद। – Rajeev

+0

यह शानदार है। धन्यवाद! – PubNub

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