Hi,

Thanks for the great design document!
It answers my question regarding handling of retraction messages.
Overall, I like the proposal. It is well scoped and the proposed changes
are well described.

I left a question regarding the handling of time attributes for
multi-column output functions.

Thanks,
Fabian



Am Di., 6. Nov. 2018 um 12:16 Uhr schrieb Xiaowei Jiang <xiaow...@gmail.com
>:

> Hi Jincheng,
>
> Thanks for adding the public interfaces! I think that it's a very good
> start. There are a few points that we need to have more discussions.
>
>    - TableAggregateFunction - this is a very complex beast, definitely the
>    most complex user defined objects we introduced so far. I think there
> are
>    quite some interesting questions here. For example, do we allow
>    multi-staged TableAggregate in this case? What is the semantics of
> emit? Is
>    it amendments to the previous output, or replacing it? I think that this
>    subject itself is worth a discussion to make sure we get the details
> right.
>    - GroupedTable.agg - does the group keys automatically appear in the
>    output? how about the case of windowing aggregation?
>
> Regards,
> Xiaowei
>
> On Tue, Nov 6, 2018 at 6:25 PM jincheng sun <sunjincheng...@gmail.com>
> wrote:
>
> > Hi, Xiaowei,
> >
> > Thanks for bring up the discuss of Table API Enhancement Outline !
> >
> > I quickly looked at the overall content, these are good expressions of
> our
> > offline discussions. But from the points of my view, we should add the
> > usage of public interfaces that we will introduce in this propose.  So, I
> > added the following usage description of  interface and operators  in
> > google doc:
> >
> > 1. Map Operator
> >     Map operator is a new operator of Table, Map operator can apply a
> > scalar function, and can return multi-column. The usage as follows:
> >
> >   val res = tab
> >      .map(fun: ScalarFunction).as(‘a, ‘b, ‘c)
> >      .select(‘a, ‘c)
> >
> > 2. FlatMap Operator
> >     FaltMap operator is a new operator of Table, FlatMap operator can
> apply
> > a table function, and can return multi-row. The usage as follows:
> >
> >   val res = tab
> >       .flatMap(fun: TableFunction).as(‘a, ‘b, ‘c)
> >       .select(‘a, ‘c)
> >
> > 3. Agg Operator
> >     Agg operator is a new operator of Table/GroupedTable, Agg operator
> can
> > apply a aggregate function, and can return multi-column. The usage as
> > follows:
> >
> >    val res = tab
> >       .groupBy(‘a) // leave groupBy-Clause out to define global
> aggregates
> >       .agg(fun: AggregateFunction).as(‘a, ‘b, ‘c)
> >       .select(‘a, ‘c)
> >
> > 4.  FlatAgg Operator
> >     FlatAgg operator is a new operator of Table/GroupedTable, FaltAgg
> > operator can apply a table aggregate function, and can return multi-row.
> > The usage as follows:
> >
> >     val res = tab
> >        .groupBy(‘a) // leave groupBy-Clause out to define global table
> > aggregates
> >        .flatAgg(fun: TableAggregateFunction).as(‘a, ‘b, ‘c)
> >        .select(‘a, ‘c)
> >
> >   5. TableAggregateFunction
> >      The behavior of table aggregates is most like GroupReduceFunction
> did,
> > which computed for a group of elements, and output  a group of elements.
> > The TableAggregateFunction can be applied on GroupedTable.flatAgg() . The
> > interface of TableAggregateFunction has a lot of content, so I don't copy
> > it here, Please look at the detail in google doc:
> >
> >
> https://docs.google.com/document/d/19rVeyqveGtV33UZt72GV-DP2rLyNlfs0QNGG0xWjayY/edit
> >
> > I will be very appreciate to anyone for reviewing and commenting.
> >
> > Best,
> > Jincheng
> >
>

Reply via email to