Another, yet related question:

Is there something like aggregate table function?
In the above scenario, I have to apply an aggregate function and then apply
a table function solely to flatten tuples, which seems quite inefficient.



On Wed, Mar 20, 2019 at 1:09 PM Dongwon Kim <eastcirc...@gmail.com> wrote:

> Hi Kurt,
> You're right; It is table function like "mytablefunc(col1, col2, col3) as
> (col4, col5)".
> I've got to define a custom UDTF for that purpose.
> Thanks,
>
> - Dongwon
>
> On Wed, Mar 20, 2019 at 12:04 PM Kurt Young <ykt...@gmail.com> wrote:
>
>> Hi Dongwon,
>>
>> AFAIK, Flink doesn't support the usage like "myscalar(col1, col2, col3)
>> as (col4, col5)". Am I missing something?
>>
>> If you want to split Tuple2 into two different columns, you can use UDTF.
>>
>> Best,
>> Kurt
>>
>>
>> On Wed, Mar 20, 2019 at 9:59 AM Dongwon Kim <eastcirc...@gmail.com>
>> wrote:
>>
>>> Hi,
>>>
>>> I want to split Tuple2 returned by AggregateFunction.getValue into two
>>> different columns in a resultant table.
>>>
>>> Let's consider the following example where myudaf returns
>>> Tuple2<Boolean, Boolean>:
>>>
>>>   Table table2 = table1
>>>       .window(Slide.over("3.rows").every("1.rows").on("time").as("w"))
>>>       .groupBy("w, name")
>>>       .select("name, myudaf(col1, col2, col3) as (col4, col5)")
>>>
>>> Then table2.printSchema() returns (w/ Flink 1.7.2)
>>>
>>>   root
>>>     |-- name: String
>>>     |-- col4: Java Tuple2<Boolean, Boolean>
>>>
>>> whereas my expectation is
>>>
>>>   root
>>>     |-- name: String
>>>     |-- col4: Boolean
>>>     |-- col5: Boolean
>>>
>>> When I define a scalar function which returns Tuple2 and use like
>>> "myscalar(col1, col2, col3) as (col4, col5)", it works as expected.
>>>
>>> Is there a possible way of splitting the tuple into two different
>>> columns in Flink-1.7.2?
>>> If not, do I have to define an additional UDF in order to flatten the
>>> tuple? or there's already one I can make use of?
>>>
>>> - Dongwon
>>
>>

Reply via email to