InfluxDB select 根据标签分组的前 n 个结果
InfluxDB select top n results from a group by tag
我有一个设备数据集和我的应用程序每天完成的(未)安装数量。
示例数据为:
time | device_name | daily_installs | daily_uninstall
t1 | device1 | 0 | 1
t1 | device2 | 2 | 0
t2 | device2 | 2 | 0
t2 | device3 | 12 | 0
我可以按 device_name 对它们进行分组,然后按月(或任何其他范围)获取安装总数。
但是设备数量巨大,所以我想只过滤前10个。
如何使用 InfluxDB 实现该目标?
答案取决于您使用的 InfluxDB 版本。
版本 1.1-
第 1 步
Select 每月计入新的测量值
SELECT count(daily_uninstall) as monthly_uninstall
INTO newmeasurement
FROM mymeasurement
WHERE time > now() - 4w
GROUP BY device_name
第 2 步
Select 新测量的前 10 个结果
SELECT top(monthly_uninstall, 10), device_name
FROM newmeasurement
版本 1.2+
在 InfluxDB 的 1.2+ 版本中,您将能够使用子查询一步完成。
SELECT top(monthly_uninstalls,10), device_name
FROM (SELECT count(daily_uninstall) as monthly_uninstall
FROM mymeasurement
WHERE time > now() - 4w
GROUP BY device_name)
版本 1.3.4
SELECT top(monthly_uninstalls,device_name,10)
FROM (SELECT count(daily_uninstall) as monthly_uninstall
FROM mymeasurement
WHERE time > now() - 4w
GROUP BY device_name)
请注意语法是 "top("field_name", "tag", "topN") from ...."
我有一个设备数据集和我的应用程序每天完成的(未)安装数量。
示例数据为:
time | device_name | daily_installs | daily_uninstall
t1 | device1 | 0 | 1
t1 | device2 | 2 | 0
t2 | device2 | 2 | 0
t2 | device3 | 12 | 0
我可以按 device_name 对它们进行分组,然后按月(或任何其他范围)获取安装总数。
但是设备数量巨大,所以我想只过滤前10个。
如何使用 InfluxDB 实现该目标?
答案取决于您使用的 InfluxDB 版本。
版本 1.1-
第 1 步
Select 每月计入新的测量值
SELECT count(daily_uninstall) as monthly_uninstall
INTO newmeasurement
FROM mymeasurement
WHERE time > now() - 4w
GROUP BY device_name
第 2 步
Select 新测量的前 10 个结果
SELECT top(monthly_uninstall, 10), device_name
FROM newmeasurement
版本 1.2+
在 InfluxDB 的 1.2+ 版本中,您将能够使用子查询一步完成。
SELECT top(monthly_uninstalls,10), device_name
FROM (SELECT count(daily_uninstall) as monthly_uninstall
FROM mymeasurement
WHERE time > now() - 4w
GROUP BY device_name)
版本 1.3.4
SELECT top(monthly_uninstalls,device_name,10)
FROM (SELECT count(daily_uninstall) as monthly_uninstall
FROM mymeasurement
WHERE time > now() - 4w
GROUP BY device_name)
请注意语法是 "top("field_name", "tag", "topN") from ...."