InfluxDB全语法指南

InfluxDB 全语法指南

InfluxDB 是一个开源的时间序列数据库,专门用于处理高写入和查询负载。以下是 InfluxDB 的主要语法和功能概述。

1. 数据库管理

创建数据库

sql 复制代码
CREATE DATABASE <database_name> [WITH [DURATION <duration>] [REPLICATION <n>] [SHARD DURATION <duration>] [NAME <retention-policy-name>]]

删除数据库

sql 复制代码
DROP DATABASE <database_name>

显示数据库

sql 复制代码
SHOW DATABASES

2. 保留策略(Retention Policy)管理

创建保留策略

sql 复制代码
CREATE RETENTION POLICY <rp_name> ON <database_name> DURATION <duration> REPLICATION <n> [SHARD DURATION <duration>] [DEFAULT]

修改保留策略

sql 复制代码
ALTER RETENTION POLICY <rp_name> ON <database_name> DURATION <duration> REPLICATION <n> [SHARD DURATION <duration>] [DEFAULT]

删除保留策略

sql 复制代码
DROP RETENTION POLICY <rp_name> ON <database_name>

显示保留策略

sql 复制代码
SHOW RETENTION POLICIES [ON <database_name>]

3. 数据写入

行协议(Line Protocol)格式

xml 复制代码
<measurement>[,<tag_key>=<tag_value>[,<tag_key>=<tag_value>]] <field_key>=<field_value>[,<field_key>=<field_value>] [<timestamp>]

示例写入

sql 复制代码
INSERT cpu,host=serverA,region=us_west value=0.64
INSERT temperature,machine=unit42,type=assembly external=25,internal=37 1434055562000000000

4. 数据查询(SELECT)

基本查询

sql 复制代码
SELECT <field_key>[,<field_key>,<tag_key>] FROM <measurement_name>[,<measurement_name>]

条件查询

sql 复制代码
SELECT * FROM "cpu_load" WHERE "region" = 'us-west' AND time > now() - 1h

分组查询

sql 复制代码
SELECT MEAN("value") FROM "cpu" GROUP BY "host", time(1h) fill(0)

聚合函数

sql 复制代码
SELECT COUNT("value") FROM "cpu"
SELECT MEAN("value") FROM "cpu" WHERE time > now() - 1h GROUP BY time(10m)

5. 连续查询(Continuous Queries)

创建连续查询

sql 复制代码
CREATE CONTINUOUS QUERY <cq_name> ON <database_name> 
BEGIN
  SELECT <function[s]> INTO <destination_measurement> FROM <measurement> [WHERE <stuff>] GROUP BY time(<interval>)[,<tag_key[s]>]
END

删除连续查询

sql 复制代码
DROP CONTINUOUS QUERY <cq_name> ON <database_name>

显示连续查询

sql 复制代码
SHOW CONTINUOUS QUERIES

6. 用户管理

创建用户

sql 复制代码
CREATE USER <username> WITH PASSWORD '<password>' [WITH ALL PRIVILEGES]

授予权限

sql 复制代码
GRANT ALL PRIVILEGES TO <username>
GRANT [READ|WRITE|ALL] ON <database_name> TO <username>

撤销权限

sql 复制代码
REVOKE ALL PRIVILEGES FROM <username>
REVOKE [READ|WRITE|ALL] ON <database_name> FROM <username>

删除用户

sql 复制代码
DROP USER <username>

显示用户

sql 复制代码
SHOW USERS

7. 特殊查询

SHOW 系列

sql 复制代码
SHOW SERIES [ON <database_name>] [FROM <measurement_name>] [WHERE <tag_key> <operator> [ '<tag_value>' | <regular_expression>]] [LIMIT <N>] [OFFSET <N>]

SHOW 测量值

sql 复制代码
SHOW MEASUREMENTS [ON <database_name>] [WITH MEASUREMENT <operator> ['<measurement_name>' | <regular_expression>]] [WHERE <tag_key> <operator> ['<tag_value>' | <regular_expression>]] [LIMIT <N>] [OFFSET <N>]

SHOW 标签键

sql 复制代码
SHOW TAG KEYS [ON <database_name>] [FROM <measurement_name>] [WHERE <tag_key> <operator> ['<tag_value>' | <regular_expression>]] [LIMIT <N>] [OFFSET <N>]

SHOW 标签值

sql 复制代码
SHOW TAG VALUES [ON <database_name>] [FROM <measurement_name>] WITH KEY [ [<operator> "<tag_key>" | <regular_expression>] | [IN ("<tag_key1>","<tag_key2")]] [WHERE <tag_key> <operator> ['<tag_value>' | <regular_expression>]] [LIMIT <N>] [OFFSET <N>]

SHOW 字段键

sql 复制代码
SHOW FIELD KEYS [ON <database_name>] [FROM <measurement_name>]

8. 时间语法

InfluxDB 支持多种时间格式:

  • 相对时间:

    sql 复制代码
    SELECT "value" FROM "cpu" WHERE time > now() - 1h
  • 绝对时间(RFC3339):

    sql 复制代码
    SELECT "value" FROM "cpu" WHERE time >= '2015-08-18T00:00:00Z' AND time <= '2015-08-18T12:00:00Z'
  • 时间戳(epoch):

    sql 复制代码
    SELECT "value" FROM "cpu" WHERE time >= 1439563077s AND time <= 1439563080s

9. 函数

聚合函数

  • COUNT()
  • DISTINCT()
  • INTEGRAL()
  • MEAN()
  • MEDIAN()
  • MODE()
  • SPREAD()
  • STDDEV()
  • SUM()

选择函数

  • BOTTOM()
  • FIRST()
  • LAST()
  • MAX()
  • MIN()
  • PERCENTILE()
  • SAMPLE()
  • TOP()

转换函数

  • DERIVATIVE()
  • DIFFERENCE()
  • ELAPSED()
  • NON_NEGATIVE_DERIVATIVE()

预测函数

  • HOLT_WINTERS()

10. 数学运算

InfluxQL 支持基本数学运算:

sql 复制代码
SELECT ("field1" + "field2") / "field3" FROM "measurement"

11. 正则表达式

在 WHERE 子句中使用正则表达式:

sql 复制代码
SELECT * FROM /.*/ LIMIT 1
SELECT * FROM "cpu" WHERE "host" =~ /server[1-5]/
SELECT * FROM "cpu" WHERE "host" !~ /server[1-5]/

12. 子查询

sql 复制代码
SELECT MEAN("derivative") FROM (SELECT DERIVATIVE(MEAN("value")) FROM "cpu" GROUP BY "host", time(1h)) GROUP BY time(1h)

13. 数据删除

删除序列

sql 复制代码
DROP SERIES FROM <measurement_name> WHERE <tag_key>='<tag_value>'

删除测量值

sql 复制代码
DROP MEASUREMENT <measurement_name>

删除数据点

sql 复制代码
DELETE FROM <measurement_name> WHERE <tag_key>='<tag_value>' AND time < '2015-01-01'

14. InfluxDB 2.x 的 Flux 语法

InfluxDB 2.x 引入了 Flux 查询语言:

基本查询

flux 复制代码
from(bucket: "example-bucket")
  |> range(start: -1h)
  |> filter(fn: (r) => r._measurement == "cpu" and r._field == "usage_system")

聚合

flux 复制代码
from(bucket: "example-bucket")
  |> range(start: -1h)
  |> filter(fn: (r) => r._measurement == "cpu")
  |> mean()

分组

flux 复制代码
from(bucket: "example-bucket")
  |> range(start: -1h)
  |> filter(fn: (r) => r._measurement == "cpu")
  |> group(columns: ["host"])
  |> mean()

数学运算

flux 复制代码
from(bucket: "example-bucket")
  |> range(start: -1h)
  |> filter(fn: (r) => r._measurement == "cpu")
  |> map(fn: (r) => ({ r with _value: r._value * 100 }))

连接数据

flux 复制代码
cpu = from(bucket: "example-bucket")
  |> range(start: -1h)
  |> filter(fn: (r) => r._measurement == "cpu")

mem = from(bucket: "example-bucket")
  |> range(start: -1h)
  |> filter(fn: (r) => r._measurement == "mem")

join(tables: {cpu: cpu, mem: mem}, on: ["_time", "host"])

以上是 InfluxDB 的主要语法概述。根据您使用的版本(1.x 或 2.x),语法可能有所不同。1.x 主要使用 InfluxQL,而 2.x 引入了 Flux 作为主要查询语言。

相关推荐
我命由我123452 小时前
PostgreSQL 保留关键字冲突问题:语法错误 在 “user“ 或附近的 LINE 1: CREATE TABLE user
数据库·后端·sql·mysql·postgresql·问题·数据库系统
书唐瑞3 小时前
Percona pt-archiver 出现长事务
java·服务器·数据库
!chen3 小时前
Linux dd命令 数据备份、转换与磁盘操作的终极工具
linux·数据库·tomcat
Fireworkitte4 小时前
MongoDB的操作
数据库·mongodb
颜挺锐4 小时前
在 OceanBase 中,使用 TO_CHAR 函数 直接转换日期格式,简洁高效的解决方案
数据库·oceanbase
Heliotrope_Sun4 小时前
MySQL常见命令
数据库·mysql
不辉放弃5 小时前
kafka的shell操作
数据库·kafka·pyspark·大数据开发
Databend5 小时前
揭秘 Databend 向量索引,加速 AI 应⽤的数据引擎 | Data Infra NO.27 回顾
数据库
全栈小55 小时前
【数据库】国产数据库的新机遇:电科金仓以融合技术同步全球竞争
数据库·vr
恣艺6 小时前
100条SQL语句分类精讲:从基础到进阶的实操指南
数据库·sql