全部产品

TSQL查询API

更新时间:2019-04-15 10:29:22

请求路径和方法

TSQL当前仅支持通过http 协议方式访问,通过/api/sqlquery 接口进行数据请求。接口请求参数和协议介绍如下:

请求路径 请求方法 描述
/api/sqlquery GET/POST 以SQL语句查询时序数据

请求内容

请求内容 JSON 格式

名字 类型 是否必需 描述 默认值 举例
sql string 一个SQL查询语句 select min( value) as minV, max(value) as maxV
from tsdb.cpu.usage_system`<br />where `timestamp`` between ‘2019-01-01’ and ‘2019-01-02’

SQL查询结果

查询结果JSON格式

名字 类型 描述 举例
columns string 类型的数组 查询结果每个column的列名 [“hostname”, “minV”, “maxV”]
metadata string 类型的数组 查询结果每个column的列类型 [“VARCHAR”, “FLOAT8”, “FLOAT8”]
rows map 类型的数组 查询结果行,每行是一个map, 列名是key, 列的值是value [
{
“hostname”: “host_9”, “minV”: “90.49879988870993”, “maxV”: “93.8549962369351”},{
“hostname”: “host_8”, “minV”: “0.9174383579092883”, “maxV”: “5.997678861502513”},

]

查询示例

假设我们要执行下面的查询,获得cpu.usage_system这个度量在’2019-03-01 00:00:00’ 到 ‘2019-03-01 00:01:00’ 这1分钟之内的在每台机器上的最小值和最大值,可以用下面的SQL查询语句表示:

  1. select hostname, min(`value`) as minV, max(`value`) as maxV
  2. from tsdb.`cpu.usage_system`
  3. where `timestamp` between '2019-03-01 00:00:00' and '2019-03-01 00:01:00'
  4. group by hostname

两种方式把这个SQL语句提交到TSDB

以curl命令行参数形式指定SQL查询语句

  1. curl -H "Content-Type: application/json" -d $'{"sql":"select hostname, min(`value`) as minV, max(`value`) as maxV from tsdb.`cpu.usage_system` where `timestamp` between \'2019-03-01 00:00:00\' and \'2019-03-01 00:01:00\' group by hostname"}' http://tsdb_host:tsdb_port/api/sqlquery

注意:

  • 在上面的命令行中,JSON的字符串被单引号包含,所以JSON字符串内部出现的单引号,需要使用转义符\
  • 如果把JSON字符串放进一个文件,则不需要使用转义符

SQL查询语句放在json文件

  1. //sql.json
  2. {"sql": "select hostname, min(`value`) as minV, max(`value`) as maxV from tsdb.`cpu.usage_system` where `timestamp` between '2019-03-01 00:00:00' and '2019-03-01 00:01:00' group by hostname"}

用curl提交查询

  1. curl -H "Content-Type: application/json" -d @sql.json http://tsdb_host:tsdb_port/api/sqlquery

查询结果

  1. {
  2. "columns": [
  3. "hostname",
  4. "minV",
  5. "maxV"
  6. ],
  7. "metadata": [
  8. "VARCHAR",
  9. "FLOAT8",
  10. "FLOAT8"
  11. ],
  12. "rows": [
  13. {
  14. "hostname": "host_9",
  15. "minV": "90.49879988870993",
  16. "maxV": "93.8549962369351"
  17. },
  18. {
  19. "hostname": "host_8",
  20. "minV": "0.9174383579092883",
  21. "maxV": "5.997678861502513"
  22. },
  23. {
  24. "hostname": "host_0",
  25. "minV": "0.12036918007593445",
  26. "maxV": "2.6224297271376256"
  27. },
  28. ....
  29. ]
  30. }