我有一个设备数据集和每天完成的我的应用程序的(un)安装数量.
样本数据将是:
time | device_name | daily_installs | daily_uninstall
t1 | device1 | 0 | 1
t1 | device2 | 2 | 0
t2 | device2 | 2 | 0
t2 | device3 | 12 | 0
Run Code Online (Sandbox Code Playgroud)
我可以按device_name对它们进行分组,并按月(或任何其他范围)获取我的安装总数.
但是设备的数量是巨大的,因此我想只筛选前10名.
如何使用InfluxDB实现这一目标?
版本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)
Run Code Online (Sandbox Code Playgroud)
请注意,语法是"top("field_name","tag","topN")...."
答案取决于您使用的InfluxDB版本。
选择月度计数以进行新的度量
SELECT count(daily_uninstall) as monthly_uninstall
INTO newmeasurement
FROM mymeasurement
WHERE time > now() - 4w
GROUP BY device_name
Run Code Online (Sandbox Code Playgroud)
从新测量中选择前10个结果
SELECT top(monthly_uninstall, 10), device_name
FROM newmeasurement
Run Code Online (Sandbox Code Playgroud)
在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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15716 次 |
| 最近记录: |