你的代码:w_ts as TO_TIMESTAMP(FROM_UNIXTIME(rowtime/1000),'yyyy-MM-dd HH:mm:ss')
    这里里面的 FROM_UNIXTIME 函数就是接受BIGINT参数,返回 VARCHAR类型的日期值,默认日期格式:yyyy-MM-dd 
HH:mm:ss
    然后通过TO_TIMESTAMP函数转换成TIMESTAMP类型,是timestamp(3)类型,这个只能用blink planner
    
参考阿里云网址:https://help.aliyun.com/knowledge_list_page/62717/1.html?spm=a2c4g.11186631.2.4.41933356drYMGX
 
    里面有flink 日期函数接受!



 
发件人: Benchao Li
发送时间: 2020-05-29 10:35
收件人: user-zh
主题: Re: Re: flink-sql watermark问题
Flink支持把Timestamp(3)这种类型声明声明为事件时间列,并且为它生成watermark。
你上面提到的"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",并不是一种数据类型,它只是Timestamp的一种string表达形式,这个主要是在json
format里面把一个字符串解析为timestamp类型的时候需要的一种格式。
 
所以如果你有其他类型的字段,比如varchar、long、int等等,都可以通过内置函数或者udf将其转成timestamp(3)的类型,再在此基础上做watermark生成。
 
guaishushu1...@163.com <guaishushu1...@163.com> 于2020年5月29日周五 上午10:25写道:
 
> 而且 flink不是只支持这种"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'" 类型解析为watermark吗,就对这样有点疑惑
>
>
>
> guaishushu1...@163.com
>
> 发件人: guaishushu1...@163.com
> 发送时间: 2020-05-29 10:20
> 收件人: Benchao Li
> 抄送: user-zh
> 主题: Re: Re: flink-sql watermark问题
>
> 就是我是long类型的时间戳,但是用TO_TIMESTAMP转换成'yyyy-MM-dd HH:mm:ss' 之后依然可以生成watermark。
>
>
> guaishushu1...@163.com
>
> 发件人: Benchao Li
> 发送时间: 2020-05-28 17:00
> 收件人: user-zh
> 主题: Re: flink-sql watermark问题
> Hi,
>
> 没太看明白你的问题是什么。目前的确是只支持Timestmap(3)作为事件时间列。
> 之所以还不支持long作为事件时间列,主要考虑的是时区问题。但是这个社区也在考虑,可以参考[1]
>
> [1] https://issues.apache.org/jira/browse/FLINK-16938
>
> guaishushu1...@163.com <guaishushu1...@163.com> 于2020年5月28日周四 下午4:22写道:
>
> > flink-1.10 sql只支持 timestamp(3) 类型字段生成watermark
> > 但是long这样转换后也可以生成watermark很奇怪?
> > CREATE TABLE user_log (
> > response_size int,
> > rowtime BIGINT,
> > w_ts as TO_TIMESTAMP(FROM_UNIXTIME(rowtime/1000),'yyyy-MM-dd HH:mm:ss'),
> > WATERMARK FOR w_ts AS w_ts - INTERVAL '5' SECOND --5秒的延迟
> > )
> >
> >
> >
> > guaishushu1...@163.com
> >
>
>
> --
>
> Best,
> Benchao Li
>
 
 
-- 
 
Best,
Benchao Li

Reply via email to