当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python pyflink GroupedTable.flat_aggregate用法及代码示例


本文简要介绍 python 语言中 pyflink.table.GroupedTable.flat_aggregate 的用法。

用法:

flat_aggregate(func: Union[pyflink.table.expression.Expression, pyflink.table.udf.UserDefinedAggregateFunctionWrapper]) → pyflink.table.table.FlatAggregateTable

对分组表执行flat_aggregate操作。 flat_aggregate 采用返回多行的 TableAggregateFunction。在 flatAggregate 之后使用选择。

例子:

>>> table_agg = udtaf(MyTableAggregateFunction())
>>> tab.group_by(tab.c).flat_aggregate(table_agg(tab.a).alias("a")).select(
...     col('c'), col('a'))
>>> # take all the columns as inputs
>>> class Top2(TableAggregateFunction):
...     def emit_value(self, accumulator):
...         yield Row(accumulator[0])
...         yield Row(accumulator[1])
...
...     def create_accumulator(self):
...         return [None, None]
...
...     def accumulate(self, accumulator, *args):
...         args[0] # type: Row
...         if args[0][0] is not None:
...             if accumulator[0] is None or args[0][0] > accumulator[0]:
...                 accumulator[1] = accumulator[0]
...                 accumulator[0] = args[0][0]
...             elif accumulator[1] is None or args[0][0] > accumulator[1]:
...                 accumulator[1] = args[0][0]
...
...     def get_accumulator_type(self):
...         return DataTypes.ARRAY(DataTypes.BIGINT())
...
...     def get_result_type(self):
...         return DataTypes.ROW(
...             [DataTypes.FIELD("a", DataTypes.BIGINT())])
>>> top2 = udtaf(Top2())
>>> tab.group_by(tab.c).flat_aggregate(top2.alias("a", "b")).select(col('a'), col('b'))

参数:

func- 用户定义的表聚合函数。

返回:

结果表。

版本 1.13.0 中的新函数。

相关用法


注:本文由纯净天空筛选整理自apache.org大神的英文原创作品 pyflink.table.GroupedTable.flat_aggregate。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。