[ 
https://issues.apache.org/jira/browse/BEAM-5524?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Luke Cwik reassigned BEAM-5524:
-------------------------------

    Assignee: Luke Cwik

> PTransform style guide error
> ----------------------------
>
>                 Key: BEAM-5524
>                 URL: https://issues.apache.org/jira/browse/BEAM-5524
>             Project: Beam
>          Issue Type: Bug
>          Components: website
>    Affects Versions: 2.6.0
>            Reporter: Simon Waddington
>            Assignee: Luke Cwik
>            Priority: Minor
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> On the page  [https://beam.apache.org/contribute/ptransform-style-guide/] the 
> example for Transforms with multiple output collections has a method 
> {code:java}
> PCollectionTuple apply(... input) {
>     ...
>     PCollection<Moo> moo = ...;
>     PCollection<Blah> blah = ...;
>     return PCollectionTuple.of(mooTag, moo)
>                            .and(blahTag, blah);
>   }{code}
> I'm no expert - just trying to understand that use case - but it seems to me 
> it should be overriding the method {{expand}} of {{PTransform}} as in this 
> [ParDoTest.java|https://github.com/apache/beam/blob/279a05604b83a54e8e5a79e13d8761f94841f326/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/ParDoTest.java#L301]
>  code which does a similar thing.
> {code:java}
> static class MultiFilter
>     extends PTransform<PCollection<Integer>, PCollectionTuple> {
>   private static final TupleTag<Integer> BY2 = new TupleTag<Integer>("by2"){};
>   private static final TupleTag<Integer> BY3 = new TupleTag<Integer>("by3"){};
>   @Override
>   public PCollectionTuple expand(PCollection<Integer> input) {
>     PCollection<Integer> by2 = input.apply("Filter2s", ParDo.of(new 
> FilterFn(2)));
>     PCollection<Integer> by3 = input.apply("Filter3s", ParDo.of(new 
> FilterFn(3)));
>     return PCollectionTuple.of(BY2, by2).and(BY3, by3);
>   }
>   static class FilterFn extends DoFn<Integer, Integer> {
>     private final int divisor;
>     FilterFn(int divisor) {
>       this.divisor = divisor;
>     }
>     @ProcessElement
>     public void processElement(@Element Integer element,
>                                OutputReceiver<Integer> r) throws Exception {
>       if (element % divisor == 0) {
>         r.output(element);
>       }
>     }
>   }
> }
> {code}
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to