我正在将面板从使用 SQL 语法(从 InfluxDB 版本 1.X)迁移到新的 influx 语法(InfluxDB 版本 2)。
数据标签存在问题。它包括我用来过滤它的属性。例如,如果我从包含 2 天的范围中选择数据,它会将数据拆分。请参阅下面的屏幕截图:
这完全把图表弄乱了。基本代码如下所示:
from(bucket: "main")
|> range(start: v.timeRangeStart, stop:v.timeRangeStop)
|> filter(fn: (r) =>
r._measurement == "POWER" and
r._field == "value" and
r.device == "living_room"
)
|> aggregateWindow(every: v.windowPeriod, fn: sum)
Run Code Online (Sandbox Code Playgroud)
显然应该只是“POWER”和“CURRENT”。
我尝试了十几种不同的方法,但无法提出可行的解决方案。
例如,如果我这样做:
from(bucket: "main")
|> range(start: v.timeRangeStart, stop:v.timeRangeStop)
|> filter(fn: (r) =>
r._measurement == "POWER" and
r._field == "value" and
r.device == "living_room"
)
|> aggregateWindow(every: v.windowPeriod, fn: sum)
|> map(fn: (r) => ({ POWER: r._value }))
Run Code Online (Sandbox Code Playgroud)
它说“数据没有时间字段”。 …
观察。我是 InfluxDB 和 Flux 查询语言的新手,所以请耐心等待!很高兴被重定向到文档,但迄今为止我还没有找到任何真正有用的东西。
我已配置 Jenkins (2.277.3) 使用插件 ( https://plugins.jenkins.io/influxdb/ ) 将构建指标推送到 InfluxDB (版本 2.0.5 ('7c3ead)) 。目前没有自定义指标。数据发送成功。
我想构建一个简单的条形图来显示特定项目的构建时间。每个“条”都是一个单独的构建(具有不同的构建编号)。还:
我正在尝试创建查询来支持此视图:
from(bucket: "db0")
|> range(start: -2d)
|> filter(fn: (r) => r["project_name"] == "Job2")
|> filter(fn: (r) => r._measurement == "jenkins_data" and r._field == "build_time" )
Run Code Online (Sandbox Code Playgroud)
这会在表视图中生成 2 个表,一张表示构建成功,一张表示构建失败。有人可以解释为什么会出现这种情况,以及我是否缺少对如何使用该工具的一些基本了解吗?
我想计算大于特定值的值的数量。数据:
from(bucket: "bucket name")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r._value > 35)
|> count()
Run Code Online (Sandbox Code Playgroud)
如果处理数据范围内没有大于指定值的值,则 influx 不返回任何内容(无数据)。
给定一个存储桶,如何使用 Flux 查询获取给定时间间隔内该存储桶中带有时间戳的点数?
我试图估计每单位时间有多少数据添加到 influxdb2 存储桶中。
我正在将 influx1.x 升级到 influx2.x (将查询从 influxQL 更新为 Flux 语法)。对于非常简单的查询,当我尝试查询超过 500,000 个点时,性能会急剧下降,并且我不确定是否可以采取任何措施来改进查询以获得更好的性能
涌入QL:
select last("y") AS "y" from "mydata".autogen."profile"
WHERE time >= '2019-01-01T00:00:00Z' and time <= '2019-01-07T23:59:59Z'
GROUP BY time(1s) FILL(none)
Run Code Online (Sandbox Code Playgroud)
通量:
data=from(bucket: "mydata")
|> range(start: 2019-01-01T00:00:00Z, stop: 2019-01-07T23:59:59Z)
|> filter(fn: (r) => r._measurement == "profile")
|> filter(fn: (r) => r._field=="y")
|> aggregateWindow(every: 1s, fn: last, createEmpty: false)
|> yield()
Run Code Online (Sandbox Code Playgroud)
有什么建议吗?
我正在尝试使用 Flux 查询语言来查找基于一个人的列的总和。如果我有以下输入表:
如何使用 Flux 查询来获取以下输出表:
到目前为止,我已经尝试过类似的操作,但出现错误:
from: (bucket: "example")
|> range(start:v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r)=> r["_measurement"] == "test")
|> group(columns: r["person"])
|> reduce( fn: (r, accumulator) => ({sum: r._value + accumulator.sum}), identity: {sum: 0})
Run Code Online (Sandbox Code Playgroud) 无法使用 InfluxDB[flux 作为查询语言]更改 Grafana 中的图例名称。之前我使用 InfluxQL 作为查询语言,当时 grafana 提供了一个设置图例名称的选项。但在改用助焊剂后,这个选项似乎就消失了。现在它总是将图例名称显示为_value,我需要将其更改为一些自定义文本。请在下面找到我正在使用的查询。感谢您提前抽出时间。
bucket1 = from(bucket: "NOAA_water_database/autogen")
|> range(start: v.timeRangeStart, stop:v.timeRangeStop)
|> filter(fn: (r) => r._measurement == "ak_api_time" and (r._field == "device_id"))
bucket2 = from(bucket: "NOAA_water_database/autogen")
|> range(start: v.timeRangeStart, stop:v.timeRangeStop)
|> filter(fn: (r) => r._measurement == "ak_app_launch" and (r._field == "device_id"))
union(tables: [bucket1, bucket2])
|> filter(fn: (r) => (r.browser == "chrome"))
|> group(columns: ["device_id"])
|> unique(column: "_value")
|> count(column: "_value")
Run Code Online (Sandbox Code Playgroud)
InfluxDB2 Flux 语言提供了一种使用schema.measurementTagValues函数获取特定存储桶/测量组合的所有标签值的便捷方法。问题是文档没有提到如何过滤此列表以仅保留符合特定条件的标签值。
示例:
通过以下查询,我可以获得所有交易标签值:
import "influxdata/influxdb/schema"
schema.measurementTagValues(
bucket: "jmeter",
measurement: "jmeter",
tag: "transaction",
)
Run Code Online (Sandbox Code Playgroud)
该架构包含另一个名为“application”的标签。我想获取特定应用程序的所有交易,而不是全部。
我们如何通过助焊剂来实现这一目标?
InfluxQL 中的相同请求将非常简单:
SHOW TAG VALUES FROM "jmeter" WITH KEY = "transaction" WHERE "application" = $application