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) 将你的 TODAYSDATEANOTHERDATE 中保存的纪元转换为毫秒,它会工作得很好。

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 |