+CC people who might give more details on this. — Alexey
> On 13 Mar 2023, at 19:32, Godefroy Clair <godefroy.cl...@gmail.com> wrote: > > Hi, > I am wondering about the way `Flatten()` and `FlatMap()` are implemented in > Apache Beam Python. > In most functional languages, FlatMap() is the same as composing `Flatten()` > and `Map()` as indicated by the name, so Flatten() and Flatmap() have the > same input. > But in Apache Beam, Flatten() is using _iterable of PCollections_ while > FlatMap() is working with _PCollection of Iterables_. > > If I am not wrong, the signature of Flatten, Map and FlatMap are : > ``` > Flatten:: Iterable[PCollections[A]] -> PCollection[A] > Map:: (PCollection[A], (A-> B)) -> PCollection[B] > FlatMap:: (PCollection[Iterable[A]], (A->B)) -> [A] > ``` > > So my question is is there another "Flatten-like" function with this > signature : > ``` > anotherFlatten:: PCollection[Iterable[A]] -> PCollection[A] > ``` > > One of the reason this would be useful, is that when you just want to > "flatten" a `PCollection` of `iterable` you have to use `FlatMap()`with an > identity function. > > So instead of writing: > `FlatMap(lambda e: e)` > I would like to use a function > `anotherFlatten()` > > Thanks, > Godefroy