Flux 查询语言中 SELECT <certain columns> 的等价物是啥?

Posted

技术标签:

【中文标题】Flux 查询语言中 SELECT <certain columns> 的等价物是啥?【英文标题】:What is the equivalent of SELECT <certain columns> in Flux Query Language?Flux 查询语言中 SELECT <certain columns> 的等价物是什么? 【发布时间】:2020-06-21 06:32:29 【问题描述】:

SELECT address, name FROM addresses 的等效通量查询是什么? (我指的是 InfluxData 开发的新型查询语言 FluxQL)

我在有限的 Flux 文档中没有找到明确的答案。 Flux 文档说 filter() 函数等效于 SELECTWHERE 子句,但给出的所有示例都等效于 WHERE 子句,SELECT 上没有任何内容。

这些是 FluxQL 的文档以便更好地参考:

https://docs.influxdata.com/flux/v0.50/introduction/getting-started

https://v2.docs.influxdata.com/v2.0/query-data/get-started/

【问题讨论】:

【参考方案1】:

您也可以尝试使用 keep(colums...) 函数。 与 drop 不同,它将列的名称作为参数保留,并删除其余的。 https://docs.influxdata.com/influxdb/v2.0/reference/flux/stdlib/built-in/transformations/keep/

【讨论】:

【参考方案2】:

您可以使用 map() 函数来选择要保留的列,也可以进行一些字符串操作:

(from and filter part...)
|> map(fn: (r) => (
                     address: r.address,
                     name: r.name
                   ))

【讨论】:

【参考方案3】:

也许你需要这样的东西:

filter(fn: (r) => r._measurement == "addresses" and (r._field == "address" or r._field == "name"))
|> pivot(rowKey:["_time"], columnKey:["_field"], valueColumn:"_value")
|> drop(columns:["_value", ...])

在“drop”(而不是...)中,您可以列出所有多余的列

【讨论】:

Drop 是我想要的,谢谢!但是,如果在这种情况下提供枢轴服务有什么目的? 在“过滤”功能之后,您会得到包含以下列的表格:_time、_value、_measurement 和 _field。它没有列“地址”或“名称”,因为它们是 _field 列中的值。函数“pivot”将您“过滤”的结果转换为包含“address”和“name”列的表(也包含 _time 和 _measurement 列)。见doc 您知道是否可以删除resulttable 列吗?删除 _start_stop_measurement 列可以正常工作,但我不能删除这两列。 嗨@l.sypniewski 我不确定你能不能做到,因为结果和表格是你请求的元数据

以上是关于Flux 查询语言中 SELECT <certain columns> 的等价物是啥?的主要内容,如果未能解决你的问题,请参考以下文章

InfluxDB Flux - 过滤字段匹配值的位置

使用 Flux 从单个有效负载中获取项目

使用 Flux 查询时,不同的保留策略 (RP) 的行为是不是类似于表?

MySQL命令大全——DQL(数据查询语言)

关系数据标准语言SQL之数据查询

SQL语言中按月查询