KSQL 流返回不正确的纪元转换
KSQL stream returning incorrect epoch conversion
我在 Kafka KSQLs TIMESTAMPTOSTRING
函数方面遇到了一些问题。我正在经历两个时代,一个是今天的日期,一个是不同的日期。我正在使用 JSON 格式,我的流如下:
CREATE STREAM TestStream
(
Id BIGINT,
AnotherDate BIGINT,
TodaysDate BIGINT
) WITH(KAFKA_TOPIC='_account', VALUE_FORMAT='JSON');
查询 TestStream
时,我得到以下数据:
Test Stream
我使用以下站点检查纪元是否有效:https://www.epochconverter.com
然而,当我运行以下查询时:
SELECT
TIMESTAMPTOSTRING(TODAYSDATE, 'yyyy-MM-dd HH:mm:ss.SSS') AS TODAY,
TIMESTAMPTOSTRING(ANOTHERDATE, 'yyyy-MM-dd HH:mm:ss.SSS') AS ANOTHERDATE
FROM
TestStream EMIT CHANGES LIMIT 5;
我收到以下日期,但似乎不正确:
Stream Query
如有任何帮助,我们将不胜感激。
如果你阅读TIMESTAMPTOSTRING
函数documentation:
Converts a BIGINT millisecond timestamp value into the string
representation of the timestamp in the given format.
你的纪元时间戳是秒级的,不是毫秒级的。这就是为什么你有这样的结果。
如果你只是执行一个简单的算术运算 (epoch_in_secs * 1000)
将你的 TODAYSDATE
和 ANOTHERDATE
中保存的纪元转换为毫秒,它会工作得很好。
SELECT
TIMESTAMPTOSTRING(TODAYSDATE*1000, 'yyyy-MM-dd HH:mm:ss.SSS') AS TODAY,
TIMESTAMPTOSTRING(ANOTHERDATE*1000, 'yyyy-MM-dd HH:mm:ss.SSS') AS ANOTHERDATE
FROM
TestStream EMIT CHANGES LIMIT 5;
我已经对 confluent pageview 教程进行了简单测试,它有效:
SELECT
VIEWTIME_SEC,
VIEWTIME,
TIMESTAMPTOSTRING(VIEWTIME_SEC*1000, 'yyyy-MM-dd HH:mm:ss.SSS') AS TS_FROM_SEC,
TIMESTAMPTOSTRING(VIEWTIME, 'yyyy-MM-dd HH:mm:ss.SSS') AS TS_FROM_MS
FROM
PAGEVIEWS_MARTELADA
EMIT CHANGES;
结果:
+-------------+--------------+------------------------+------------------------+
|VIEWTIME_SEC |VIEWTIME |TS_FROM_SEC |TS_FROM_MS |
+-------------+--------------+------------------------+------------------------+
|1605889400 |1605889400577 |2020-11-20 16:23:20.000 |2020-11-20 16:23:20.577 |
|1605889400 |1605889400902 |2020-11-20 16:23:20.000 |2020-11-20 16:23:20.902 |
|1605889401 |1605889401619 |2020-11-20 16:23:21.000 |2020-11-20 16:23:21.619 |
|1605889402 |1605889402556 |2020-11-20 16:23:22.000 |2020-11-20 16:23:22.556 |
|1605889403 |1605889403115 |2020-11-20 16:23:23.000 |2020-11-20 16:23:23.115 |
|1605889404 |1605889404080 |2020-11-20 16:23:24.000 |2020-11-20 16:23:24.080 |
|1605889404 |1605889404317 |2020-11-20 16:23:24.000 |2020-11-20 16:23:24.317 |
|1605889404 |1605889404372 |2020-11-20 16:23:24.000 |2020-11-20 16:23:24.372 |
我在 Kafka KSQLs TIMESTAMPTOSTRING
函数方面遇到了一些问题。我正在经历两个时代,一个是今天的日期,一个是不同的日期。我正在使用 JSON 格式,我的流如下:
CREATE STREAM TestStream
(
Id BIGINT,
AnotherDate BIGINT,
TodaysDate BIGINT
) WITH(KAFKA_TOPIC='_account', VALUE_FORMAT='JSON');
查询 TestStream
时,我得到以下数据:
Test Stream
我使用以下站点检查纪元是否有效:https://www.epochconverter.com
然而,当我运行以下查询时:
SELECT
TIMESTAMPTOSTRING(TODAYSDATE, 'yyyy-MM-dd HH:mm:ss.SSS') AS TODAY,
TIMESTAMPTOSTRING(ANOTHERDATE, 'yyyy-MM-dd HH:mm:ss.SSS') AS ANOTHERDATE
FROM
TestStream EMIT CHANGES LIMIT 5;
我收到以下日期,但似乎不正确: Stream Query
如有任何帮助,我们将不胜感激。
如果你阅读TIMESTAMPTOSTRING
函数documentation:
Converts a BIGINT millisecond timestamp value into the string representation of the timestamp in the given format.
你的纪元时间戳是秒级的,不是毫秒级的。这就是为什么你有这样的结果。
如果你只是执行一个简单的算术运算 (epoch_in_secs * 1000)
将你的 TODAYSDATE
和 ANOTHERDATE
中保存的纪元转换为毫秒,它会工作得很好。
SELECT
TIMESTAMPTOSTRING(TODAYSDATE*1000, 'yyyy-MM-dd HH:mm:ss.SSS') AS TODAY,
TIMESTAMPTOSTRING(ANOTHERDATE*1000, 'yyyy-MM-dd HH:mm:ss.SSS') AS ANOTHERDATE
FROM
TestStream EMIT CHANGES LIMIT 5;
我已经对 confluent pageview 教程进行了简单测试,它有效:
SELECT
VIEWTIME_SEC,
VIEWTIME,
TIMESTAMPTOSTRING(VIEWTIME_SEC*1000, 'yyyy-MM-dd HH:mm:ss.SSS') AS TS_FROM_SEC,
TIMESTAMPTOSTRING(VIEWTIME, 'yyyy-MM-dd HH:mm:ss.SSS') AS TS_FROM_MS
FROM
PAGEVIEWS_MARTELADA
EMIT CHANGES;
结果:
+-------------+--------------+------------------------+------------------------+
|VIEWTIME_SEC |VIEWTIME |TS_FROM_SEC |TS_FROM_MS |
+-------------+--------------+------------------------+------------------------+
|1605889400 |1605889400577 |2020-11-20 16:23:20.000 |2020-11-20 16:23:20.577 |
|1605889400 |1605889400902 |2020-11-20 16:23:20.000 |2020-11-20 16:23:20.902 |
|1605889401 |1605889401619 |2020-11-20 16:23:21.000 |2020-11-20 16:23:21.619 |
|1605889402 |1605889402556 |2020-11-20 16:23:22.000 |2020-11-20 16:23:22.556 |
|1605889403 |1605889403115 |2020-11-20 16:23:23.000 |2020-11-20 16:23:23.115 |
|1605889404 |1605889404080 |2020-11-20 16:23:24.000 |2020-11-20 16:23:24.080 |
|1605889404 |1605889404317 |2020-11-20 16:23:24.000 |2020-11-20 16:23:24.317 |
|1605889404 |1605889404372 |2020-11-20 16:23:24.000 |2020-11-20 16:23:24.372 |