本文介绍时序数据的查询分析语法及使用限制。

日志服务提供如下两种时序数据查询分析方式:
  • SQL查询分析:使用SQL语法,根据时序数据的编码方式进行查询分析。
  • SQL + PromQL查询分析:使用PromQL(Prometheus的查询语言)简化对时序数据的查询分析,并使用SQL语法进行嵌套查询。其中PromQL语法请参见Prometheus官方文档

SQL查询分析

SQL查询分析语句示例如下所示:
  • 查询分析全部数据
    *| SELECT * FROM "my_metric_store.prom" WHERE __name__ != '' 
  • 查询__labels__, 'domain'值为www.example.com的数据,并对__value__字段进行求和计算。
    *| SELECT sum(__value__) FROM "my_metri_store.prom" WHERE element_at(__labels__, 'domain')='www.example.com' 
  • 查询__labels__, 'domain'值为www.example.com的数据,并对__value__字段进行求和计算以及对数据按小时聚合。
    *| SELECT sum(__value__),date_trunc('hour', __time_nano__/1000000) as t
    FROM "my_metric_store.prom" 
    WHERE element_at(__labels__, 'domain')='www.example.com'
    GROUP BY t
    ORDER BY t DESC
SQL查询分析语句相关说明如下所示:
  • 时序数据的SQL查询分析语法与日志查询分析语法一致,详情请参见分析语法。但在时序数据的SQL查询分析语法中,FROM的表名只能为{metrics_store_name}.prom,其中{metrics_store_name}为您已创建的MetricStore名称。
    说明 请保留表名两端的双引号。
  • __labels__可使用element_at()函数获取其中某个Key的值,例如element_at(__labels__, 'key')
  • 表结构请参见编码方式

SQL+PromQL查询分析

通过SQL+PromQL查询分析方式,不仅可以使用PromQL语法,还可以使用日志服务提供的机器学习语法安全检测函数等高级功能。
说明 当使用SQL+PromQL查询分析时序数据时,您FROM的表名固定为metrics
日志服务提供5个PromQL函数,如下表所示。
函数名 说明 样例
promql_query(string) 即时查询分析,查询分析离结束时间最近的数据。该函数对应Prometheus的/query API,参数为query=<string>。 *| SELECT promql_query('up') FROM metrics
promql_query_range(string, string) 查询分析一定时间范围内的数据。对应Prometheus的/query_range API,参数为query=<string>、step=<duration>。 *| SELECT promql_query_range('up', '5m') FROM metrics
promql_labels() 返回所有的Label Key。 *| SELECT promql_labels() FROM metrics
promql_label_values(string) 返回某个Label的值。 *| SELECT promql_label_values('__name__') FROM metrics
promql_series(string) 返回匹配的时间序列。 *| SELECT promql_series('up') FROM metrics
PromQL函数相当于UDTF,即返回一个表。
  • promql_query(string)、promql_query_range(string, string)函数返回的表的结构如下表所示。
    字段名 字段类型 说明
    metric varchar 时序名称。如果查询分析中使用了Group By语法,那么该值可能为空。
    labels map<varchar, varchar> Lables信息,Map类型。
    time bigint 时间。
    value double 某个时间点对应的值。
  • promql_labels()、promql_label_values(string)函数返回的表的结构如下表所示。
    字段 字段类型 说明
    label varchar Label Key
  • promql_series(string)函数返回的表的结构如下表所示。
    字段 字段类型 说明
    series map<varchar, varchar> 时间序列

使用限制

  • MetricStore仅支持Prometheus查询分析API(例如/query API、/query_range API等),其它API如/admin API、/alerts API、/rules API等均不支持。
  • 当使用SQL+PromQL查询分析时,最多返回11000个时间点。
  • 当使用SQL+PromQL查询分析时,您的Metric name和Label命名应符合命名规范,详情请参见时序标识