You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-zh@flink.apache.org by 姬洪超 <ji...@geekplus.com.cn> on 2020/04/24 08:17:25 UTC
Last_Value为啥不能取最近为NULL的值
嗨:
我利用Last_Value的UDF实现数据回撤功能时,发现无法取到最近数据的null值,这个是我使用不当还是就是无法获取NUll啊,如果是无法获取NULL的话,为什么啊?谢谢
Re: Last_Value为啥不能取最近为NULL的值
Posted by Jark Wu <im...@gmail.com>.
Hi,
内置的 last_value 这个 UDAF 是特意会去忽略 null 值的。
这是因为在传统数据库和标准 SQL 中定义的 agg ,基本上都是忽略输入的 null 值的,如果所有输入都是 null,那么会输出 null。
对于你的场景,我建议使用 deduplicate by last row 语法[1],last row 会保留该 key
下完整的上一行数据,因此在回撤时会输出 完整上一行的回撤消息。
Best,
Jark
[1]:
https://ci.apache.org/projects/flink/flink-docs-master/zh/dev/table/sql/queries.html#%E5%8E%BB%E9%87%8D
On Fri, 24 Apr 2020 at 17:18, Benchao Li <li...@gmail.com> wrote:
> 才注意到刚才的回复是单独发的,没有抄送到社区邮件列表。
>
> 我也不知道这个设计是出于什么考虑,已经抄送了小令和云邪,他们应该比较清楚这么设计的原因。
>
> 姬洪超 <ji...@geekplus.com.cn> 于2020年4月24日周五 下午4:59写道:
>
>> 这是出于什么样的考虑啊?
>>
>> ------------------------------------------------------------------
>> 发件人:Benchao Li <li...@gmail.com>
>> 发送时间:2020年4月24日(星期五) 16:55
>> 收件人:姬洪超 <ji...@geekplus.com.cn>
>> 主 题:Re: Last_Value为啥不能取最近为NULL的值
>>
>> 看了一眼last_value的实现,的确是判断了数据是否为null,如果是null就直接忽略了,不会更新聚合结果为null
>>
>> 姬洪超 <ji...@geekplus.com.cn> 于2020年4月24日周五 下午4:48写道:
>>
>>
>> 我使用的是内置的last_value。数据回撤就是处理mysql的binlog的delete或者update的数据的时候,想获取kafka中相同key的最近一条的数据,发现内置的last_value无法获取值为null的数据
>> ------------------------------------------------------------------
>> 发件人:Benchao Li <li...@gmail.com>
>> 发送时间:2020年4月24日(星期五) 16:44
>> 收件人:user-zh <us...@flink.apache.org>; 姬洪超 <ji...@geekplus.com.cn>
>> 主 题:Re: Last_Value为啥不能取最近为NULL的值
>>
>> 没太理解你的问题,
>>
>> 1,你说last_value UDF,指的是你自己实现了一个last_value么?还是用的内置函数last_value?
>> 2, 实现数据回撤是什么意思呢?
>>
>> 姬洪超 <ji...@geekplus.com.cn> 于2020年4月24日周五 下午4:23写道:
>> 嗨:
>>
>> 我利用Last_Value的UDF实现数据回撤功能时,发现无法取到最近数据的null值,这个是我使用不当还是就是无法获取NUll啊,如果是无法获取NULL的话,为什么啊?谢谢
>>
>>
>>
>> --
>>
>> Benchao Li
>> School of Electronics Engineering and Computer Science, Peking University
>> Tel:+86-15650713730
>> Email: libenchao@gmail.com; libenchao@pku.edu.cn
>>
>>
>>
>>
>> --
>>
>> Benchao Li
>> School of Electronics Engineering and Computer Science, Peking University
>> Tel:+86-15650713730
>> Email: libenchao@gmail.com; libenchao@pku.edu.cn
>>
>>
>>
>
> --
>
> Benchao Li
> School of Electronics Engineering and Computer Science, Peking University
> Tel:+86-15650713730
> Email: libenchao@gmail.com; libenchao@pku.edu.cn
>
>
Re: Last_Value为啥不能取最近为NULL的值
Posted by Benchao Li <li...@gmail.com>.
才注意到刚才的回复是单独发的,没有抄送到社区邮件列表。
我也不知道这个设计是出于什么考虑,已经抄送了小令和云邪,他们应该比较清楚这么设计的原因。
姬洪超 <ji...@geekplus.com.cn> 于2020年4月24日周五 下午4:59写道:
> 这是出于什么样的考虑啊?
>
> ------------------------------------------------------------------
> 发件人:Benchao Li <li...@gmail.com>
> 发送时间:2020年4月24日(星期五) 16:55
> 收件人:姬洪超 <ji...@geekplus.com.cn>
> 主 题:Re: Last_Value为啥不能取最近为NULL的值
>
> 看了一眼last_value的实现,的确是判断了数据是否为null,如果是null就直接忽略了,不会更新聚合结果为null
>
> 姬洪超 <ji...@geekplus.com.cn> 于2020年4月24日周五 下午4:48写道:
>
>
> 我使用的是内置的last_value。数据回撤就是处理mysql的binlog的delete或者update的数据的时候,想获取kafka中相同key的最近一条的数据,发现内置的last_value无法获取值为null的数据
> ------------------------------------------------------------------
> 发件人:Benchao Li <li...@gmail.com>
> 发送时间:2020年4月24日(星期五) 16:44
> 收件人:user-zh <us...@flink.apache.org>; 姬洪超 <ji...@geekplus.com.cn>
> 主 题:Re: Last_Value为啥不能取最近为NULL的值
>
> 没太理解你的问题,
>
> 1,你说last_value UDF,指的是你自己实现了一个last_value么?还是用的内置函数last_value?
> 2, 实现数据回撤是什么意思呢?
>
> 姬洪超 <ji...@geekplus.com.cn> 于2020年4月24日周五 下午4:23写道:
> 嗨:
>
> 我利用Last_Value的UDF实现数据回撤功能时,发现无法取到最近数据的null值,这个是我使用不当还是就是无法获取NUll啊,如果是无法获取NULL的话,为什么啊?谢谢
>
>
>
> --
>
> Benchao Li
> School of Electronics Engineering and Computer Science, Peking University
> Tel:+86-15650713730
> Email: libenchao@gmail.com; libenchao@pku.edu.cn
>
>
>
>
> --
>
> Benchao Li
> School of Electronics Engineering and Computer Science, Peking University
> Tel:+86-15650713730
> Email: libenchao@gmail.com; libenchao@pku.edu.cn
>
>
>
--
Benchao Li
School of Electronics Engineering and Computer Science, Peking University
Tel:+86-15650713730
Email: libenchao@gmail.com; libenchao@pku.edu.cn
Re: Last_Value为啥不能取最近为NULL的值
Posted by Benchao Li <li...@gmail.com>.
没太理解你的问题,
1,你说last_value UDF,指的是你自己实现了一个last_value么?还是用的内置函数last_value?
2, 实现数据回撤是什么意思呢?
姬洪超 <ji...@geekplus.com.cn> 于2020年4月24日周五 下午4:23写道:
> 嗨:
>
> 我利用Last_Value的UDF实现数据回撤功能时,发现无法取到最近数据的null值,这个是我使用不当还是就是无法获取NUll啊,如果是无法获取NULL的话,为什么啊?谢谢
>
>
--
Benchao Li
School of Electronics Engineering and Computer Science, Peking University
Tel:+86-15650713730
Email: libenchao@gmail.com; libenchao@pku.edu.cn