Documentation

InfluxQL 选择器函数

使用选择器函数来评估、选择和返回您数据中的值。选择器函数返回每个 InfluxQL 组中具有选定值的一行或多行。

下面每个选择器函数涵盖了 语法,包括传递给函数的参数,以及 如何使用该函数的示例。示例使用 NOAA水样数据

底部()

返回最小的 N 字段值BOTTOM() 支持 int64 和 float64 字段值 数据类型

注意: BOTTOM() 在多个值存在相同的最小值时,返回具有最早时间戳的字段值。

语法

SELECT BOTTOM(<field_key>[,<tag_key(s)>],<N> )[,<tag_key(s)>|<field_key(s)>] FROM_clause [WHERE_clause] [GROUP_BY_clause] [ORDER_BY_clause] [LIMIT_clause] [OFFSET_clause] [SLIMIT_clause] [SOFFSET_clause]

BOTTOM(field_key,N)
返回与字段键相关联的最小的N个字段值。

BOTTOM(field_key,tag_key,N)
返回标签键的N个标签值中最小的字段值。多个标签键之间用逗号分隔:tag_key,tag_key

BOTTOM((field_key,N),tag_key,field_key)
返回与括号中的字段键关联的最小 N 个字段值,以及相关的 tag 和/或 field。多个标签或字段键之间用逗号分隔:tag_key,tag_key,field_key,field_key

示例

选择与字段键关联的最低三个字段值

选择与两个标签相关的字段键的底部字段值

选择与字段键相关的底部四个字段值以及相关的标签和字段

选择与字段键关联的最低三个字段值并包含多个子句

BOTTOM() 的常见问题

BOTTOM() 与 GROUP BY time() 子句

带有 BOTTOM()GROUP BY time() 子句的查询返回每个 GROUP BY time() 间隔的指定点数。对于 大多数 GROUP BY time() 查询,返回的时间戳标记了 GROUP BY time() 间隔的开始。带有 BOTTOM() 函数的 GROUP BY time() 查询表现得不同;它们保持原始数据点的时间戳。

示例

下面的查询每18分钟返回两个点 GROUP BY time() 间隔。 请注意,返回的时间戳是点的原始时间戳;它们 并不强制与 GROUP BY time() 间隔的开始匹配。

SELECT BOTTOM("water_level",2) FROM "h2o_feet" WHERE time >= '2019-08-18T00:00:00Z' AND time <= '2019-08-18T00:30:00Z' AND "location" = 'santa_monica' GROUP BY time(18m)

名称: h2o_feet

时间底部
2019年08月18日T00:00:00Z2.064
2019-08-18T00:12:00Z2.028
2019-08-18T00:24:00Z2.041
2019-08-18T00:30:00Z2.051

请注意,前两行包含第一个时间间隔的最小值,最后两行包含第二个时间间隔的最小值。

BOTTOM() 和一个标签键,其标签值少于 N 个

使用语法 SELECT BOTTOM(<field_key>,<tag_key>,<N>) 的查询可能返回少于预期的点。如果标签键有 X 个标签值,查询指定了 N 个值,而 X 小于 N,那么查询返回 X 个点。

示例

下面的查询请求 location 标签键的三个标签值的 water_level 的最小字段值。因为 location 标签键有两个标签值 (santa_monicacoyote_creek),所以查询返回两个点而不是三个。

SELECT BOTTOM("water_level","location",3) FROM "h2o_feet"

名称: h2o_feet

时间底部位置
2019-08-29T10:36:00Z-0.243圣塔莫尼卡
2019-08-29T14:30:00Z-0.610coyote_creek

第一次()

返回具有最早时间戳的 字段值

语法

SELECT FIRST(<field_key>)[,<tag_key(s)>|<field_key(s)>] FROM_clause [WHERE_clause] [GROUP_BY_clause] [ORDER_BY_clause] [LIMIT_clause] [OFFSET_clause] [SLIMIT_clause] [SOFFSET_clause]

FIRST(field_key)
返回与字段键关联的最旧字段值(由时间戳确定)。

FIRST(/regular_expression/)
返回与每个匹配正则表达式的字段键关联的最旧字段值(由时间戳确定)。

FIRST(*)
返回与measurement中每个字段键关联的最旧字段值(由时间戳确定)。

FIRST(field_key),tag_key(s),field_key(s)
返回与括号中的字段键及相关的tag和/或field关联的最旧字段值(由时间戳确定)。

FIRST() 支持所有字段值 数据类型

示例

选择与字段键关联的第一个字段值

选择与测量中每个字段键相关联的第一个字段值

选择与每个字段键匹配正则表达式的第一个字段值

选择与字段键及相关标签和字段关联的第一个值

选择与字段键相关的第一个字段值并包含多个子句

最后()

返回具有最新时间戳的 字段值

语法

SELECT LAST(<field_key>)[,<tag_key(s)>|<field_keys(s)>] FROM_clause [WHERE_clause] [GROUP_BY_clause] [ORDER_BY_clause] [LIMIT_clause] [OFFSET_clause] [SLIMIT_clause] [SOFFSET_clause]

LAST(field_key)
返回与字段键关联的最新字段值(由时间戳确定)。

LAST(/regular_expression/)
返回与匹配正则表达式的每个字段键关联的最新字段值(由时间戳决定)。

LAST(*)
返回与measurement中每个字段键相关联的最新字段值(由时间戳确定)。

LAST(field_key),tag_key(s),field_key(s)
返回与括号中的字段键相关的最新字段值(由时间戳确定)以及相关的 tag 和/或 field

LAST() 支持所有字段值 数据类型

示例

选择与字段键关联的最后字段值

选择与测量中每个字段键相关联的最后字段值

选择与每个字段键匹配正则表达式的最后一个字段值

选择与字段键相关的最后一个字段值以及相关标签和字段

选择与字段键关联的最后一个字段值并包含多个条件

最大值()

返回最大的 字段值

语法

SELECT MAX(<field_key>)[,<tag_key(s)>|<field__key(s)>] FROM_clause [WHERE_clause] [GROUP_BY_clause] [ORDER_BY_clause] [LIMIT_clause] [OFFSET_clause] [SLIMIT_clause] [SOFFSET_clause]

MAX(field_key)
返回与字段键相关联的最大字段值。

MAX(/regular_expression/)
返回与每个匹配正则表达式的字段键相关联的最大字段值。

MAX(*)
返回与每个字段键相关联的最大字段值,位于measurement中。

MAX(field_key),tag_key(s),field_key(s)
返回与括号中的字段键相关联的最大字段值,以及相关的 tag 和/或 field

MAX() 支持 int64 和 float64 字段值 数据类型

示例

选择与字段键相关的最大字段值

选择与每个字段键关联的最大字段值

选择与每个字段键匹配的正则表达式相关联的最大字段值

选择与字段键相关的最大字段值以及相关标签和字段

选择与字段键相关的最大字段值并包含几个条件

最小值()

返回最低的 字段值

语法

SELECT MIN(<field_key>)[,<tag_key(s)>|<field_key(s)>] FROM_clause [WHERE_clause] [GROUP_BY_clause] [ORDER_BY_clause] [LIMIT_clause] [OFFSET_clause] [SLIMIT_clause] [SOFFSET_clause]

MIN(field_key)
返回与字段键相关联的最低字段值。

MIN(/regular_expression/)
返回与每个匹配正则表达式的字段键相关联的最低字段值。

MIN(*)
返回与measurement中每个字段键相关联的最低字段值。

MIN(field_key),tag_key(s),field_key(s)
返回与括号中的字段键相关联的最低字段值以及相关的 tag 和/或 field

MIN() 支持 int64 和 float64 字段值 数据类型

示例

选择与字段键关联的最小字段值

选择与测量中每个字段键相关联的最小字段值

选择与每个字段键匹配正则表达式的最小字段值

选择与字段键及相关标签和字段关联的最小字段值

选择与字段键相关联的最小字段值并包含几个子句

百分位数()

返回第 N 个百分位数 字段值

语法

SELECT PERCENTILE(<field_key>, <N>)[,<tag_key(s)>|<field_key(s)>] FROM_clause [WHERE_clause] [GROUP_BY_clause] [ORDER_BY_clause] [LIMIT_clause] [OFFSET_clause] [SLIMIT_clause] [SOFFSET_clause]

PERCENTILE(field_key,N)
返回与字段键相关联的第N个百分位字段值。

PERCENTILE(/regular_expression/,N)
返回与每个匹配正则表达式的字段键相关联的第N百分位字段值。

PERCENTILE(*,N)
返回与每个字段键相关联的第 N 个百分位字段值,来自 measurement

PERCENTILE(field_key,N),tag_key(s),field_key(s)
返回与括号中的字段键相关联的第N个百分位字段值以及相关的 tag 和/或 field

N 必须是一个在 0100 之间(包括两者)的整数或浮点数。 PERCENTILE() 支持 int64 和 float64 字段值 数据类型

示例

选择与字段键相关的第五百分位数字段值

选择与测量中每个字段键关联的第五百分位数字段值

选择与匹配正则表达式的每个字段键相关联的第五百分位数字段值

选择与字段键及相关标签和字段关联的第五百分位字段值

选择与字段键相关联的第 двадцатый 百分位字段值,并包含几个子句

PERCENTILE() 的常见问题

PERCENTILE() 与其他 InfluxQL 函数的比较

  • PERCENTILE(<field_key>,100) 等价于 MAX(<field_key>)
  • PERCENTILE(<field_key>, 50) 几乎等同于 MEDIAN(<field_key>),不同的是 MEDIAN() 函数在字段键包含偶数个字段值时返回两个中间值的平均值。
  • PERCENTILE(<field_key>,0) 并不等同于 MIN(<field_key>)。这是一个已知的 问题

样本()

返回 N字段值 的随机样本。SAMPLE() 使用 水库抽样 来生成随机点。

语法

SELECT SAMPLE(<field_key>, <N>)[,<tag_key(s)>|<field_key(s)>] FROM_clause [WHERE_clause] [GROUP_BY_clause] [ORDER_BY_clause] [LIMIT_clause] [OFFSET_clause] [SLIMIT_clause] [SOFFSET_clause]

SAMPLE(field_key,N)
返回与字段键相关联的N个随机选择的字段值。

SAMPLE(/regular_expression/,N)
返回与匹配正则表达式的每个字段键相关联的N个随机选择的字段值。

SAMPLE(*,N)
返回与每个字段键相关联的 N 个随机选择的字段值,来自 measurement

SAMPLE(field_key,N),tag_key(s),field_key(s)
返回与括号中的字段键相关联的 N 个随机选择的字段值以及相关的 tag 和/或 field

N 必须是一个整数。 SAMPLE() 支持所有字段值 数据类型

示例

选择与字段键关联的字段值样本

选择与测量中每个字段键相关联的字段值的样本

选择与每个字段键匹配的正则表达式相关的字段值的样本

选择与字段键相关的字段值样本以及相关的标签和字段

选择与字段键相关联的字段值的样本,并包含多个子句

SAMPLE() 的常见问题

SAMPLE() 与 GROUP BY time() 子句

使用 SAMPLE()GROUP BY time() 子句的查询返回指定数量的点 (N) 每个 GROUP BY time() 时间间隔。对于 大多数 GROUP BY time() 查询,返回的时间戳标记 GROUP BY time() 时间间隔的开始。带有 SAMPLE() 函数的 GROUP BY time() 查询表现得不同;它们保留原始数据点的时间戳。

示例

下面的查询每18分钟返回两个随机选择的点 GROUP BY time() 间隔。 请注意,返回的时间戳是点的原始时间戳;它们 不会被强制匹配 GROUP BY time() 间隔的开始。

SELECT SAMPLE("water_level",2) FROM "h2o_feet" WHERE time >= '2019-08-18T00:00:00Z' AND time <= '2019-08-18T00:30:00Z' AND "location" = 'santa_monica' GROUP BY time(18m)

名称: h2o_feet

时间样本
2019-08-18T00:06:00Z2.116
2019-08-18T00:12:00Z2.028
2019-08-18T00:18:00Z2.126
2019-08-18T00:30:00Z2.051

请注意,前两行是从第一个时间间隔随机选择的点,后两行是从第二个时间间隔随机选择的点。

顶部函数()

返回最大的 N 字段值

语法

SELECT TOP( <field_key>[,<tag_key(s)>],<N> )[,<tag_key(s)>|<field_key(s)>] FROM_clause [WHERE_clause] [GROUP_BY_clause] [ORDER_BY_clause] [LIMIT_clause] [OFFSET_clause] [SLIMIT_clause] [SOFFSET_clause]

TOP(field_key,N)
返回与字段键相关联的最大的N个字段值。

TOP(field_key,tag_key(s),N)
返回标签键的N个标签值的最大字段值。

TOP(field_key,N),tag_key(s),field_key(s)
返回与括号中的字段键关联的最大的N个字段值,以及相关的 tag 和/或 field

TOP() 支持 int64 和 float64 字段值 数据类型

注意: TOP() 返回时间戳最早的字段值,如果存在两个或更多值的最大值相同的情况。

示例

选择与字段键相关的前三个字段值

选择与两个标签相关的字段键的顶部字段值

选择与字段键相关的前四个字段值以及相关的标签和字段

选择与字段键关联的前三个字段值并包含多个子句

关于 TOP() 的常见问题

TOP() 带有 GROUP BY time() 子句

带有 TOP()GROUP BY time() 子句的查询返回指定数量的点 per GROUP BY time() 间隔。 对于 大多数 GROUP BY time() 查询,返回的时间戳标记 GROUP BY time() 间隔的开始。 带有 TOP() 函数的 GROUP BY time() 查询表现不同;它们保持原始数据点的时间戳。

示例

下面的查询每18分钟返回两个点 GROUP BY time() 间隔。 请注意,返回的时间戳是点的原始时间戳;它们 并不强制与 GROUP BY time() 间隔的开始匹配。

SELECT TOP("water_level",2) FROM "h2o_feet" WHERE time >= '2019-08-18T00:00:00Z' AND time <= '2019-08-18T00:30:00Z' AND "location" = 'santa_monica' GROUP BY time(18m)

名称: h2o_feet

时间顶部
2019年08月18日T00:00:00Z2.064
2019-08-18T00:06:00Z2.116
2019-08-18T00:18:00Z2.126
2019-08-18T00:30:00Z2.051

请注意,前两行是第一个时间间隔的最大点,而最后两行是第二个时间间隔的最大点。

TOP() 和一个标签键,具有少于 N 个标签值

具有语法 SELECT TOP(<field_key>,<tag_key>,<N>) 的查询可能返回比预期更少的点数。 如果标签键有 X 个标签值,查询指定 N 个值,并且 X 小于 N,则查询返回 X 个点。

示例

下面的查询请求三个标签值的water_level的最大字段值,标签键为location。因为location标签键有两个标签值(santa_monicacoyote_creek),所以查询返回两个点而不是三个。

SELECT TOP("water_level","location",3) FROM "h2o_feet"

名称: h2o_feet

时间顶部位置
2019-08-29T03:54:00Z7.205圣塔莫尼卡
2019-08-29T07:24:00Z9.964小狼溪


Flux的未来

Flux 正在进入维护模式。您可以像现在一样继续使用它,而无需对您的代码进行任何更改。

阅读更多

InfluxDB 3 开源版本现已公开Alpha测试

InfluxDB 3 Open Source is now available for alpha testing, licensed under MIT or Apache 2 licensing.

我们将发布两个产品作为测试版的一部分。

InfluxDB 3 核心,是我们新的开源产品。 它是一个用于时间序列和事件数据的实时数据引擎。 InfluxDB 3 企业版是建立在核心基础之上的商业版本,增加了历史查询能力、读取副本、高可用性、可扩展性和细粒度安全性。

有关如何开始的更多信息,请查看: