Flink SQL:将Bigint转换为Timesamp

时间:2019-06-20 12:39:25

标签: apache-flink flink-sql

这个问题很简单,但是我在互联网上找不到任何答案。

我有一个Flink SQL查询,如下所示:

SELECT 
  HOP_START(timestampMs, INTERVAL '5' SECOND, INTERVAL '10' SECOND) as wStart, SUM(`value`) - MINVALUE(`value`), ID
FROM MySource 
GROUP BY HOP(timestampMs, INTERVAL '5' SECOND, INTERVAL '10' SECOND), ID

问题是我的字段时间戳记被视为BIGINT而不是TIMESTAMP,并且HOP函数出现错误。如何将其转换为TIMESTAMP类型?

1 个答案:

答案 0 :(得分:0)

不幸的是,没有内置支持将Epoch Millis转换为java.sql.Timestamp。您可以为此使用UDF:

class UnixEpochToTimestamp extends ScalarFunction {
  def eval(epochMillis: Long): Timestamp = {
    new Timestamp(epochMillis)
  }
}