跳至内容

IOT核心规则将时间戳映射到时序数据库中。

0

【以下的问题经过翻译处理】 我正在尝试使用IoT core。我有数据输入到一个主题中,并且已经触发了一个规则来将该数据写入timescale。输入数据是JSON格式,包含一个顶层的“时间戳”字段,它是一个标准的ISO8660字符串。

我遇到的问题是,我不知道如何设置规则,告诉timestream从我的JSON属性中获取时间,而不是默认的${timestamp()}。由于我的数据是一个ISO8660字符串,所以我知道我需要解析它,所以我可以

SELECT
   fields.rms0 as rms0,
   fields.rms1 as rms2,
   parse_time(timestamp) as ts
}

但是将它添加为“ts”并不能达到我想要的效果。在规则框中放什么,${ts}是我的第一个猜测,但我不想使ts也成为一个指标,并且我不确定如何防止这种情况发生。

供参考,我的输入格式如下:

{
   measurement: "something",
   timestamp: "2022-01-01T00:00:00Z",
   fields: {
        "rms0": 1.23456,
       /* 更多字段 */
   },
   tags: {
       /* 其它一些东西 */
   }
}

专家
已提问 2 年前32 查看次数
1 回答
0

【以下的回答经过翻译处理】 你需要在规则动作的时间戳值中使用time_to_epoch()函数。在你的情况下,应该是这样的:

${time_to_epoch(timestamp,"yyyy-MM-dd'T'HH:mm:ss'Z'")}

请看这里有关time_to_epoch()的讨论:https://docs.aws.amazon.com/iot/latest/developerguide/timestream-rule-action.html

我不希望ts也成为一个指标,但我不知道如何防止它。

请将你的规则查询语句更改为:

SELECT fields.rms0 as rms0, fields.rms1 as rms1 FROM 'foo/bar'
专家
已回答 2 年前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。