В Apache Beam Python SDK есть преобразование Filter, которое получает лямбду и отфильтровывает все элементы, которые возвращают False
.Вот пример:
filtered_collection = (beam.Create([1, 2, 3, 4, 5])
beam.Filter(lambda x: x % 2 == 0))
В этом случае filtered_collection
будет PCollection
, который содержит 2
, и 4
.
Если вы хотитечтобы кодировать это как DoFn, который передается в преобразование ParDo, вы должны сделать что-то вроде этого:
class FilteringDoFn(beam.DoFn):
def process(self, element):
if element % 2 == 0:
yield element
else:
return # Return nothing
, и вы можете применить его так:
filtered_collection = (beam.Create([1, 2, 3, 4, 5])
beam.ParDo(FilteringDoFn()))
где, какдо этого filtered_collection
- это PCollection
, который содержит 2
и 4
.