Verwendung der IN-Klausel mit PIG FILTER

  • Unterstützt PIG die IN-Klausel?

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

    oder sollte ich sie aufteilen? in mehrere ODERs?

    Danke!

    31 May 2017
    Alex Raj Kaliamoorthy
6 answers
  • Sie können stattdessen udf von Apache DataFu verwenden. Dies hilft Ihnen, das Schreiben von ODER zu vermeiden.

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

    21 March 2014
    kris
  • Pig 0.12 hinzugefügt Im Operator http: / /www.edureka.co/blog/operators-in-apache-pig-diagnostic-operators/ siehe unten auf Seite .. Freigabeanmerkungen. Es wurde nicht in offiziellen Dokumenten gefunden (abgesehen von der bloßen Erwähnung in den Versionshinweisen)

    09 September 2014
    seanv507
  • Ich habe es in keinem gefunden Die Beispiele in der Dokumentation.

    Sie können dies mit AND / OR / NOT

    erreichen
    24 August 2011
    Icarus
  • Nein, Pig unterstützt IN-Klausel nicht. Ich hatte eine ähnliche Situation. Sie können den AND-Operator und das Filterwort als Umgehung verwenden. Wie

    A = LOAD 'source.txt' AS (Benutzer: chararray, age: chararray);

    B = FILTER A BY ($ 1 entspricht 'Tapan') AND ($ 1 entspricht 'Superman');

    Jedoch wenn Die Anzahl der erforderlichen Filter ist enorm. Wahrscheinlich können Sie dann einfach eine Beziehung erstellen, die alle diese Schlüsselwörter enthält, und einen Join zum Filtern ausführen, wo das Vorkommen übereinstimmt. Ich hoffe, das hilft.

    15 May 2012
    Tapan Avasthi
  • Sie können dies wie folgt tun:

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

    Weitere Informationen

    07 December 2017
    Tarivs
  • Wir können die IN-Klausel folgendermaßen verwenden:

     A = FILTER alias_name BY col_name IN (val1, val2,...,valn);
    
    DUMP A;
     
    12 February 2017
    Prashant_MTitusMix