sql—检索XDB中每个标记的所有最后点/记录,不带where子句

nqwrtyyt  于 2021-08-01  发布在  Java
关注(0)|答案(1)|浏览(358)

我有大约1500台设备,它们以随机频率将数据推送到我的XDBV1.8+示例。我正在寻找最有效的方法,至少在性能方面,收集每个设备的最后一个点(标签)。
为了简洁起见,本次测量中的数据非常简单:

time, device_id (tag), usage (in bytes)
1593514228321002500, 'A12345', 32212254720

我保证每个点都填充了“用法”字段。这不是一个问题。因此,对于每个标记(设备标识),有一个最新的时间戳实际上就是我想要的。
我目前的解决方案远不是可扩展的,也不是高效的,而是首先列出所有设备的id:

$ show tag values on "my_database" with key = "device_id"

... 然后遍历每一个以得到最后一点:

$ select time, device_id, usage
    from @measurement
    where device_id = '@device_id'
    order by time desc
    limit 1

我的问题是:如何最有效地获取所有设备标识(tag)的最后一个点/记录,而不提供设备标识上的where子句?最好是一个命令,这样我就可以删除foreach迭代。
同样的问题也被问到了其他的口味,比如mysql。这个问题是针对xdb的。

r1zhe5dt

r1zhe5dt1#

你可以试试这个。使用 last() 任何一个领域。

select last(usage), * from @measurement group by device_id;

相关问题