【问题标题】:KSQL average value in some x number of messages某些 x 条消息中的 KSQL 平均值
【发布时间】:2021-03-21 03:33:11
【问题描述】:

我有一个正在运行的 kafka-confluent 实例和一个名为“mqtt-source-1”的主题,它读取这个结构化的 json 消息

{
    "device1": {
        "t": "timestamp",
        "id": "deviceid",
        "type": "presence",
        "m": [
            {
                "t": "nowTimestamp()",
                "tz": "now()",
                "k": "device_temperature",
                "v": "double(0, 40)",
                "u": "C"
            },
            {
                "t": "nowTimestamp()",
                "tz": "now()",
                "k": "battery_level",
                "v": "double(3.26, 3.56)",
                "u": "V"
            }
        ]
    },
    "device2": {
        "t": "timestamp",
        "id": "deviceid",
        "type": "presence",
        "m": [
            {
                "t": "nowTimestamp()",
                "tz": "now()",
                "k": "device_temperature",
                "v": "double(0, 40)",
                "u": "C"
            },
            {
                "t": "nowTimestamp()",
                "tz": "now()",
                "k": "battery_level",
                "v": "double(3.26, 3.56)",
                "u": "V"
            }
        ]
    }
}

是否可以得到按 m->k 分组的 v 的平均值,以及对特定 x 条消息计算的 deviceid 的平均值?

【问题讨论】:

    标签: apache-kafka ksqldb


    【解决方案1】:

    如果还没有完成,您需要创建一个能够正确解析传入消息的主题。这篇博文描述了如何在 JSON 中处理 JSON 和数组:https://rmoff.net/2020/05/26/working-with-json-nested-arrays-in-ksqldb-example/

    现在,如果我正确理解了您的最后一句话,您希望按 {m->k, deviceid} 聚合。您可以使用CREATE TABLE <<name>> AS SELECT <<your desired columns>> FROM <<input stream that contains the parsed JSONs>> 语句执行此操作。使用纯 SQL 语法按 {m->k, deviceid} 分组并创建应用 AVG(m->v) 的列。应该这样做。

    【讨论】:

    • 确定获取平均值,如何在窗口翻滚查询中获取平均值。我试图做一些测试,但窗口翻滚在消息键上添加了奇怪的字符:(
    • 示例查询:CREATE TABLE MSG_COUNT_STREAM WITH (value_format='AVRO') AS SELECT 'X',COUNT(*) AS MSG_CT FROM my_stream WINDOW TUMBLING (SIZE 2 MINUTES) GROUP BY 'X' 发出更改;
    • @dune98 您能否更准确地描述您观察到的行为以及您期望的行为? “在消息键上添加奇怪字符”是什么意思?您给定的查询应该可以工作,如文档中所述:docs.ksqldb.io/en/latest/concepts/…docs.ksqldb.io/en/latest/developer-guide/ksqldb-reference/…
    猜你喜欢
    • 2021-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-13
    • 2016-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多