| # | |
| # Licensed to the Apache Software Foundation (ASF) under one or more | |
| # contributor license agreements. See the NOTICE file distributed with | |
| # this work for additional information regarding copyright ownership. | |
| # The ASF licenses this file to You under the Apache License, Version 2.0 | |
| # (the "License"); you may not use this file except in compliance with | |
| # the License. You may obtain a copy of the License at | |
| # | |
| # http://www.apache.org/licenses/LICENSE-2.0 | |
| # | |
| # Unless required by applicable law or agreed to in writing, software | |
| # distributed under the License is distributed on an "AS IS" BASIS, | |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| # See the License for the specific language governing permissions and | |
| # limitations under the License. | |
| # | |
| pipelines: | |
| - pipeline: | |
| type: chain | |
| transforms: | |
| - type: Create | |
| config: | |
| elements: | |
| - {a: "x", b: 1, c: 1.0} | |
| - {a: "y", b: 2, c: 0.5} | |
| - {a: "z", b: 3, c: 0.25} | |
| - {a: "z", b: 10, c: -1.5} | |
| - type: Filter | |
| config: | |
| language: java | |
| keep: | |
| expression: c > 0 | |
| - type: MapToFields | |
| config: | |
| language: java | |
| append: true | |
| drop: a | |
| fields: | |
| seq: | |
| callable: | | |
| import java.util.function.Function; | |
| import org.apache.beam.sdk.values.Row; | |
| import java.util.List; | |
| import java.util.ArrayList; | |
| public class Seq implements Function<Row, List<String>> { | |
| public List<String> apply(Row row) { | |
| String base = row.getString("a"); | |
| List<String> result = new ArrayList<>(); | |
| String s = ""; | |
| for (int i = 0; i < row.getInt64("b"); i++) { | |
| s += base; | |
| result.add(s); | |
| } | |
| return result; | |
| } | |
| } | |
| - type: Explode | |
| config: | |
| fields: [seq] | |
| - type: AssertEqual | |
| config: | |
| elements: | |
| - {b: 1, c: 1.0, seq: x} | |
| - {b: 2, c: 0.5, seq: y} | |
| - {b: 2, c: 0.5, seq: yy} | |
| - {b: 3, c: .25, seq: z} | |
| - {b: 3, c: .25, seq: zz} | |
| - {b: 3, c: .25, seq: zzz} |