【问题标题】:KSQL stream returning incorrect epoch conversionKSQL 流返回不正确的纪元转换
【发布时间】:2020-11-21 00:25:21
【问题描述】:

我对 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

我们将不胜感激。

【问题讨论】:

    标签: apache-kafka confluent-platform ksqldb


    【解决方案1】:

    如果你阅读了TIMESTAMPTOSTRING函数documentation

    将 BIGINT 毫秒时间戳值转换为字符串 以给定格式表示时间戳。

    您的纪元时间戳处于秒级而不是毫秒级。这就是为什么你有这样的结果。

    如果您只执行一个简单的算术运算(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 |
    
                 
    

    【讨论】:

    • 呃,这对我来说是一个愚蠢的错误。非常感谢您的帮助^^
    猜你喜欢
    • 1970-01-01
    • 2019-07-02
    • 1970-01-01
    • 2021-12-20
    • 2020-02-22
    • 2019-07-20
    • 1970-01-01
    • 1970-01-01
    • 2013-10-16
    相关资源
    最近更新 更多