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