2011-08-24 16 views
5

के साथ इन क्लॉज का उपयोग क्लॉज में पीआईजी समर्थन करता है?पिग फ़िल्टर

filtered = FILTER bba BY reason not in ('a','b','c','d'); 

या मुझे इसे एकाधिक OR में विभाजित करना चाहिए?

धन्यवाद!

उत्तर

2
+0

धन्यवाद, मैं एकाधिक ओआरएस का उपयोग करूंगा। – hese

+0

@hese बीटीडब्लू: मैंने कॉलेज में पिग लैटिन पर एक प्रोजेक्ट किया था और दस्तावेज़ीकरण - कम से कम उस समय- हॉरिबल था। मुझे उम्मीद है कि अब बेहतर है। – Icarus

+0

पूरी तरह से सुअर में नहीं, बस कुछ मौजूदा कोड को सही करने के लिए देख रहा था। तो मुझे नहीं पता, अभी तक :) – hese

1

नहीं है, सुअर खंड में समर्थन नहीं करता है का उपयोग करके प्राप्त कर सकते हैं। मेरे पास एक समान स्थिति थी। यद्यपि आप एक ऑपरेटर का उपयोग कर सकते हैं और ऑपरेटर को चारों ओर एक काम के रूप में फ़िल्टर कर सकते हैं।

ए = LOAD 'source.txt' AS (उपयोगकर्ता: chararray, आयु: chararray);

बी = फ़िल्टर ए BY ($ 1 मैचों 'tapan') और ($ 1 मैचों 'सुपरमैन');

हालांकि, यदि आवश्यक फ़िल्टरिंग की संख्या बहुत बड़ी है। फिर, शायद, आप केवल एक संबंध बना सकते हैं जिसमें इन सभी कीवर्ड शामिल हैं और जहां भी ईवेंट मिलान होता है वहां फ़िल्टर करने के लिए शामिल हों। उम्मीद है कि यह मदद करता है।

+0

यह सब कुछ फ़िल्टर नहीं करेगा, क्योंकि आप तपन से मिलान करने और एक ही समय में सुपरमैन से मेल खाने के लिए पहला क्षेत्र प्राप्त करना चाहते हैं। –

+0

मुझे लगता है कि यह सकारात्मक डेटा जांच के मामले में .. या .. के बजाय होना चाहिए .. – TechBytes

5

आप इसके बजाय अपाचे डेटाफू से udf का उपयोग कर सकते हैं। यह आपको बहुत से लिखने से बचने में मदद करेगा।

https://github.com/linkedin/datafu/blob/master/src/java/datafu/pig/util/InUDF.java

+0

हालांकि पीआईजी के पास ऑपरेटर में एक अंतर्निर्मित है, लेकिन यह बड़े सेट के लिए संकलन पर ढेर ओवरफ्लो का कारण बन सकता है। डेटाफू इनयूडीएफ अधिक मजबूत – seanv507

3

सुअर 0.12 ऑपरेटर http://www.edureka.co/blog/operators-in-apache-pig-diagnostic-operators/ में जोड़ा page..release नोटों के नीचे देखते हैं। आधिकारिक डॉक्स में यह स्थित नहीं किया है (अलग रिलीज़ नोट में नंगे उल्लेख से)

+1

लगता है [आधिकारिक दस्तावेज़] में यह एक लिंक है (https://pig.apache.org/docs/r0.12.0/basic.html#boolops) – Eyal

0

हम इस प्रकार खंड में उपयोग कर सकते हैं:

A = FILTER alias_name BY col_name IN (val1, val2,...,valn); 

DUMP A; 
0

आप ऐसा कर सकते हैं पसंद करती है:

X = FILTER bba BY NOT reason IN ('a','b','c','d'); 

more info

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