Re: 回复: flink sql count问题
Hi lemon, 不是很理解你的疑问是什么,flink是事件驱动的,所以,来一条数据,就会被处理,走你的逻辑,就会产生一个结果,如果是第一次出现的key,只有一条数据,如果是状态中已经存在的key,会在控制台输出两条数据,一条true的是最终sink的结果。所以,每次输出一条结果有什么问题吗? Best, Robin lemon wrote > 感谢各位的回答,各位的方法我都试了一下,但是都会在下游输出一条结果,一条不符合条件的语句count会在下游输出0 > 我理解是flink中的count对于每一条数据都会输出一条结果,所以只能把if中的判断条件再放到最后的where中进行过滤 > 类似于 selectcount(if(name like '南京%',1 , null)) where name > like'南京%' or name like'杭州%' group by ** 这样 > > > --原始邮件-- > 发件人: > > "user-zh" > > < > vincent2015qdlg@ > ; > 发送时间:2020年9月29日(星期二) 下午5:32 > 收件人:"user-zh"< > user-zh@.apache > ; > > 主题:Re: flink sql count问题 > > > > Hi lemon, > 内部判断if函数可以替换为case when > > Best, > Robin > > > lemon wrote > 请教各位: > 我有一个sql任务需要进行count,在count中有一个表达式,只想count符合条件的记录, > 之前在hive中是这么写的:count(if(name like '南京%',1 , null)),但是flink > sql中count不能为null,有什么别的方法能实现该功能吗? > 使用的是flink1.10.1 blink > nbsp; > > > > > > -- > Sent from: http://apache-flink.147419.n8.nabble.com/ -- Sent from: http://apache-flink.147419.n8.nabble.com/
Re: flink sql count问题
Hi lemon, 内部判断if函数可以替换为case when Best, Robin lemon wrote > 请教各位: > 我有一个sql任务需要进行count,在count中有一个表达式,只想count符合条件的记录, > 之前在hive中是这么写的:count(if(name like '南京%',1 , null)),但是flink > sql中count不能为null,有什么别的方法能实现该功能吗? > 使用的是flink1.10.1 blink > -- Sent from: http://apache-flink.147419.n8.nabble.com/
Re: 回复:flink sql count问题
Hi, 试试用这种方式呢:count(1) filter (where name like '南京%') anonnius 于2020年9月27日周日 下午5:29写道: > select count(nullif(if(name not like '南京%', '其他', '南京'), '其他')) > > > > > > > > > > > > > > > > > > 在 2020-09-27 17:23:07,"zya" 写道: > >你好,链接无法显示,能麻烦再贴下吗 > > > > > >--原始邮件-- > >发件人: > "user-zh" > < > anonn...@126.com; > >发送时间:2020年9月27日(星期天) 下午5:20 > >收件人:"user-zh" > > >主题:Re:回复:flink sql count问题 > > > > > > > >hi: '其他', '南京'), '其他')) > >在 2020-09-27 17:07:39,"zya" >貌似只能这样了,感谢回答 > > > > > > > > > >--nbsp;原始邮件nbsp;-- > >发件人: > "user-zh" > >发送时间:nbsp;2020年9月27日(星期天) 下午5:03 > >收件人:nbsp;"user-zh" > > >主题:nbsp;Re:回复:flink sql count问题 > > > > > > > >你count 也会生成记录啊。 你过滤掉就行nbsp;nbsp; 。 比如 having xxxnbsp; > ,或者加个filter > >在 2020-09-27 17:01:06,"zya" >gt;这个是我现在的做法,但是的问题就是使用sum会在条件没满足时也会在mysql中生成一条记录 > >gt;amp;nbsp; > >gt; > >gt; > >gt; > >gt; > > >gt;--amp;nbsp;原始邮件amp;nbsp;-- > >gt;发件人:nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; > "user-zh"nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; > >gt;发送时间:amp;nbsp;2020年9月27日(星期天) 下午4:59 > >gt;收件人:amp;nbsp;"user-zh" amp;gt;; > >gt; > >gt;主题:amp;nbsp;Re:flink sql count问题 > >gt; > >gt; > >gt; > >gt;最好把null 变成0,amp;nbsp; 你这样amp;nbsp;amp;nbsp; > sum(if(name like '南京%',1 , 0)) > >gt;在 2020-09-27 16:53:56,"zya" 写道: > >gt;amp;gt;请教各位: > >gt;amp;gt;我有一个sql任务需要进行count,在count中有一个表达式,只想count符合条件的记录, > >gt;amp;gt;之前在hive中是这么写的:count(if(name like '南京%',1 , > null)),但是flink sql中count不能为null,有什么别的方法能实现该功能吗? > >gt;amp;gt;使用的是flink1.10.1 blink > >gt;amp;gt;amp;amp;nbsp; > -- Best, Benchao Li
Re:回复:flink sql count问题
select count(nullif(if(name not like '南京%', '其他', '南京'), '其他')) 在 2020-09-27 17:23:07,"zya" 写道: >你好,链接无法显示,能麻烦再贴下吗 > > >--原始邮件-- >发件人: > "user-zh" > >发送时间:2020年9月27日(星期天) 下午5:20 >收件人:"user-zh" >主题:Re:回复:flink sql count问题 > > > >hi:'南京'), '其他')) >在 2020-09-27 17:07:39,"zya" 貌似只能这样了,感谢回答 > > > > >--nbsp;原始邮件nbsp;------ >发件人: > >"user-zh" > 发送时间:nbsp;2020年9月27日(星期天) 下午5:03 >收件人:nbsp;"user-zh" >主题:nbsp;Re:回复:flink sql count问题 > > > >你count 也会生成记录啊。 你过滤掉就行nbsp;nbsp; 。 比如 having xxxnbsp; >,或者加个filter >在 2020-09-27 17:01:06,"zya" gt;这个是我现在的做法,但是的问题就是使用sum会在条件没满足时也会在mysql中生成一条记录 >gt;amp;nbsp; >gt; >gt; >gt; >gt; >gt;--amp;nbsp;原始邮件amp;nbsp;-- >gt;发件人:nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; > >"user-zh"nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; > gt;发送时间:amp;nbsp;2020年9月27日(星期天) 下午4:59 >gt;收件人:amp;nbsp;"user-zh"gt; >gt;主题:amp;nbsp;Re:flink sql count问题 >gt; >gt; >gt; >gt;最好把null 变成0,amp;nbsp; 你这样amp;nbsp;amp;nbsp; >sum(if(name like '南京%',1 , 0)) >gt;在 2020-09-27 16:53:56,"zya" gt;amp;gt;请教各位: >gt;amp;gt;我有一个sql任务需要进行count,在count中有一个表达式,只想count符合条件的记录, >gt;amp;gt;之前在hive中是这么写的:count(if(name like '南京%',1 , >null)),但是flink sql中count不能为null,有什么别的方法能实现该功能吗? >gt;amp;gt;使用的是flink1.10.1 blink >gt;amp;gt;amp;amp;nbsp;