我有大约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的。
1条答案
按热度按时间r1zhe5dt1#
你可以试试这个。使用
last()
任何一个领域。