apache-flink - Flink SQL:将 Bigint 转换为 Timesamp
问题描述
这个问题很简单,但我在互联网上找不到任何答案。
我有一个如下所示的 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
问题是我的字段 timestampMs 被视为 aBIGINT
而不是 a TIMESTAMP
,并且我在函数上有错误HOP
。如何将其转换为TIMESTAMP
type ?
解决方案
不幸的是,没有内置支持将 Epoch Millis 转换为java.sql.Timestamp
. 您可以为此使用 UDF:
class UnixEpochToTimestamp extends ScalarFunction {
def eval(epochMillis: Long): Timestamp = {
new Timestamp(epochMillis)
}
}
推荐阅读
- c - 使用c中的系统调用在文件末尾写入数据时出现问题
- python - Flask sqlalchemy Marshmallow 反序列化多对多“dict”对象没有属性“_sa_instance_state”
- excel - 轮班名单 - Microsoft Excel
- sql - #1064 将数据库导入 cPanel phpmyadmin 时出错
- linux-kernel - 从内核模块中的设备读取
- ubuntu - Ubuntu 上的 Nuxt.js:找不到插件 app/.nuxt/components/plugin.js
- visual-studio-code - 打开vscode时如何保持所有文件夹折叠?
- flutter - 你能在飞镖中制作一个多值对象类型的地图吗
- java - wait() 是否释放所有锁?
- angular - 错误类型错误:无法读取 SafeSubscriber.settingsService.create.subscribe.loading [as _next] 处未定义的属性“重置”