+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

Reply via email to