查询字段和标签
使用 filter()
根据字段、标签或任何其他列值查询数据。
filter() 执行的操作类似于 SELECT 语句和 InfluxQL 及其他类似 SQL 的查询语言中的 WHERE 子句。
filter() 函数
filter() 有一个 fn 参数,期望一个 谓词函数,这是由一个或多个 谓词表达式 组成的匿名函数。谓词函数会评估每一行输入数据。评估为 true 的行会被 包含 在输出数据中。评估为 false 的行会被 排除 在输出数据之外。
// ...
|> filter(fn: (r) => r._measurement == "example-measurement-name" )
该 fn 谓词函数需要一个 r 参数,它表示每一行当 filter() 遍历输入数据时。
行记录中的键值对表示列及其值。
使用 点表示法或括号表示法
来引用谓词函数中特定列的值。
使用 逻辑运算符
将多个谓词表达式链接在一起。
// Row record
r = {foo: "bar", baz: "quz"}
// Example predicate function
(r) => r.foo == "bar" and r["baz"] == "quz"
// Evaluation results
(r) => true and true
按字段和标签筛选
组合 from()、range() 和 filter() 代表最基本的 Flux 查询:
- 使用
from()来定义你的 bucket。 - 使用
range()根据时间限制查询结果。 - 使用
filter()来识别要输出的数据行。
from(bucket: "example-bucket")
|> range(start: -1h)
|> filter(fn: (r) => r._measurement == "example-measurement-name" and r.mytagname == "example-tag-value")
|> filter(fn: (r) => r._field == "example-field-name")