Influxdb 中更多查询的总和 - 平均值总和
Sum of more queries in Influxdb - sum of averages
我正在使用 influxdb 和 grafana 创建我的整个投资组合仪表板,在总结我的子投资组合时遇到以下问题:
也就是某些值无缘无故地翻了一番。我用来从网站获取数据的爬虫每小时运行一次。我检查了可见时间的数据,它们没有两次上传到数据库。 (所有按时间范围分组都是有问题的)
解决方案可以按小时计算所有资产的平均值,完全可以:
我的 influxdb table 结构如下:
time Amount CZK_amount Currency Portfolio
0 2020-07-11T00:01:07.386426Z xxxxx Kč XXXXXXX.350000 CZK Portu
1 2020-07-11T00:01:07.424887Z $xxxxx XXXXXX.614056 USD Crypto
2 2020-07-11T00:01:07.435219Z €xxxx XXXXX.299440 EUR Degiro
3 2020-07-11T00:01:07.447881Z xxxx XXXXX.000000 CZK Zonky
目前,我的按小时计算单个投资组合平均值的查询如下所示:
SELECT mean("CZK_amount") FROM "autogen"."Portfolio_status" WHERE ("Portfolio" = 'Crypto') AND $timeFilter GROUP BY time(1h) fill(linear)
有没有一种方法可以编写一个查询 return 所有投资组合的总和结果?
SELECT mean("CZK_amount") FROM "autogen"."Portfolio_status" WHERE ("Portfolio" = 'Portu') AND $timeFilter GROUP BY time(1h) fill(linear)
SELECT mean("CZK_amount") FROM "autogen"."Portfolio_status" WHERE ("Portfolio" = 'Zonky') AND $timeFilter GROUP BY time(1h) fill(linear)
SELECT mean("CZK_amount") FROM "autogen"."Portfolio_status" WHERE ("Portfolio" = 'Degiro') AND $timeFilter GROUP BY time(1h) fill(linear)
感谢您提供任何信息。
我会使用子查询并按标签分组:
SELECT SUM(mean) FROM (
SELECT MEAN("CZK_amount")
FROM "autogen"."Portfolio_status"
WHERE ("Portfolio" = 'Portu') OR ("Portfolio" = 'Degiro')
AND $timeFilter
GROUP BY time(1h), "Portfolio" fill(linear)
) GROUP BY time(1h) fill(linear)
顺便说一句:你有峰值,因为你是按分钟分组的,你可能没有固定的 1 分钟时间间隔的数据,例如:
time Amount CZK_amount Currency Portfolio
0 2020-07-11T00:01:07.386426Z xxxxx Kč XXXXXXX.350000 CZK Portu
0 2020-07-11T00:02:47.386426Z xxxxx Kč XXXXXXX.350000 CZK Portu
0 2020-07-11T00:04:01.386426Z xxxxx Kč XXXXXXX.350000 CZK Portu
0 2020-07-11T00:04:59.386426Z xxxxx Kč XXXXXXX.350000 CZK Portu
...
因此对于这些数据,第 3 分钟的值将为零,第 4 分钟的值将加倍。
我正在使用 influxdb 和 grafana 创建我的整个投资组合仪表板,在总结我的子投资组合时遇到以下问题:
也就是某些值无缘无故地翻了一番。我用来从网站获取数据的爬虫每小时运行一次。我检查了可见时间的数据,它们没有两次上传到数据库。 (所有按时间范围分组都是有问题的) 解决方案可以按小时计算所有资产的平均值,完全可以:
我的 influxdb table 结构如下:
time Amount CZK_amount Currency Portfolio
0 2020-07-11T00:01:07.386426Z xxxxx Kč XXXXXXX.350000 CZK Portu
1 2020-07-11T00:01:07.424887Z $xxxxx XXXXXX.614056 USD Crypto
2 2020-07-11T00:01:07.435219Z €xxxx XXXXX.299440 EUR Degiro
3 2020-07-11T00:01:07.447881Z xxxx XXXXX.000000 CZK Zonky
目前,我的按小时计算单个投资组合平均值的查询如下所示:
SELECT mean("CZK_amount") FROM "autogen"."Portfolio_status" WHERE ("Portfolio" = 'Crypto') AND $timeFilter GROUP BY time(1h) fill(linear)
有没有一种方法可以编写一个查询 return 所有投资组合的总和结果?
SELECT mean("CZK_amount") FROM "autogen"."Portfolio_status" WHERE ("Portfolio" = 'Portu') AND $timeFilter GROUP BY time(1h) fill(linear)
SELECT mean("CZK_amount") FROM "autogen"."Portfolio_status" WHERE ("Portfolio" = 'Zonky') AND $timeFilter GROUP BY time(1h) fill(linear)
SELECT mean("CZK_amount") FROM "autogen"."Portfolio_status" WHERE ("Portfolio" = 'Degiro') AND $timeFilter GROUP BY time(1h) fill(linear)
感谢您提供任何信息。
我会使用子查询并按标签分组:
SELECT SUM(mean) FROM (
SELECT MEAN("CZK_amount")
FROM "autogen"."Portfolio_status"
WHERE ("Portfolio" = 'Portu') OR ("Portfolio" = 'Degiro')
AND $timeFilter
GROUP BY time(1h), "Portfolio" fill(linear)
) GROUP BY time(1h) fill(linear)
顺便说一句:你有峰值,因为你是按分钟分组的,你可能没有固定的 1 分钟时间间隔的数据,例如:
time Amount CZK_amount Currency Portfolio
0 2020-07-11T00:01:07.386426Z xxxxx Kč XXXXXXX.350000 CZK Portu
0 2020-07-11T00:02:47.386426Z xxxxx Kč XXXXXXX.350000 CZK Portu
0 2020-07-11T00:04:01.386426Z xxxxx Kč XXXXXXX.350000 CZK Portu
0 2020-07-11T00:04:59.386426Z xxxxx Kč XXXXXXX.350000 CZK Portu
...
因此对于这些数据,第 3 分钟的值将为零,第 4 分钟的值将加倍。