02-TICKscript语言-H-InfluxQL

TICKscript InfluxQL

InfluxQL主要在query节点中发生在TICKscript中,其链接方法采用InfluxQL查询字符串。这几乎总是一个SELECT声明。

InfluxQL的语法与SQL非常相似。当编写一个TICKscript查询字符串query节点,一般只有三个条款将被要求:SELECTFROMWHERE。一般模式如下:

SELECT {<FIELD_KEY> | <TAG_KEY> | <FUNCTION>([<FIELD_KEY>|<TAG_KEY])} FROM <DATABASE>.<RETENTION_POLICY>.<MEASUREMENT> WHERE {<CONDITIONAL_EXPRESSION>}
  • SELECT子句可以使用一个或多个字段或标记键或函数。这些可以与数学运算和字面值组合。它们的值或结果将添加到数据框中,并且可以使用AS子句别名。星号*外卡还可用于从测量中检索所有标签和字段。

  • 使用该AS子句时,可以稍后使用双引号将别名标识符作为命名结果在TICKscript中访问。

  • FROM子句需要数据库,保留策略和将从中选择值的度量名称。这些令牌中的每一个都用点分隔。需要使用双引号设置数据库和保留策略的值。

  • WHERE子句需要条件表达式。这可能包括ANDOR布尔运算符以及数学运算。

示例30 - 一个简单的InfluxQL查询语句

batch
|query('SELECT cpu, usage_idle FROM "telegraf"."autogen".cpu WHERE time > now() - 10s')
.period(10s)
.every(10s)
|httpOut('dump')

示例30显示了一个简单的SELECT语句,该语句从过去十秒内记录的cpu测量中获取cpu标记和usage_idle字段。

例31 - 带变量的简单InfluxQL查询语句

var my_field = 'usage_idle'
var my_tag = 'cpu'

batch
|query('SELECT ' + my_tag + ', ' + my_field + ' FROM "telegraf"."autogen".cpu WHERE time > now() - 10s')
.period(10s)
.every(10s)
|httpOut('dump')

示例31重复了示例30中的相同查询,但显示了如何将变量添加到查询字符串。

示例32 - 带有函数调用的InfluxQL查询语句

...
var data = batch
|query('''SELECT 100 - mean(usage_idle) AS stat FROM "telegraf"."autogen"."cpu" WHERE cpu = 'cpu-total' ''')
.period(period)
.every(every)
.groupBy('host')
...

示例32显示了一个SELECT语句,该语句包含SELECT子句中的函数和数学运算,以及ASalias子句。

请注意,select语句将直接传递给InfluxDB API。在InfluxQL查询字符串字段和标记名称中不需要使用双引号访问,就像TICKscript中的其他情况一样。但是,数据库名称和保留策略确实包含在双引号中。字符串文字,例如'cpu-total'在带有单引号的查询字符串中表示。

有关使用查询语言的完整介绍,请参阅InfluxQL文档。