如何在像RDBMS这样的openTSDB中进行分组和聚合?

时间:2016-01-07 05:39:19

标签: opentsdb

我在openTSDB中存储了以下格式的数据:

src_ip dst_ip protocol value timestamp 1.1.1.1 2.2.2.1 tcp 100 100000001 1.1.1.1 2.2.2.2 tcp 100 100000001 1.1.1.1 2.2.2.3 udp 100 100000002 1.1.1.4 2.2.2.4 icmp 100 100000003

它们都属于同一个指标,例如metric01。

我想得到如下结果: select sum(value) from metric01 group by src_ip

有什么方法可以从http api获得结果吗?

3 个答案:

答案 0 :(得分:0)

与OpenTSDB一样,Axibase Time Series Database基于HBase / HDFS,同时支持SQL查询。您的分组查询可以正常运行:https://axibase.com/docs/atsd/sql/#grouping

ATSD社区版是免费的。

EDIT20160619 :更新了文档链接。此外,ATSD支持带有HAVING子句的GROUP BY来过滤分组结果。此外,ROW_NUMBER窗口函数可用于将LIMIT应用于结果集分区。

披露:我为Axibase工作

答案 1 :(得分:0)

是的,有办法。 OpenTSDB提供了一个rest API,你可以使用它。 为此,您需要遵循以下内容。

  1. 正在运行OpenTSDB的计算机的IP。
  2. Opentsdb的端口,默认为4242。
  3. 开始时间
  4. Aggregator,即sum,avg e.t.c
  5. 指标名称。
  6. 标签 由于您希望根据" src_ip"进行汇总,因此您不必提及它。样品如下。 假设您在本地计算机上运行OpenTSDB。

    http://127.0.0.1:4242/api/query?start=10d-ago&m=sum:metric01 {dst_ip = *,协议= *}

答案 2 :(得分:0)

现在,openTSDB可以做到这一点。如果有这样的要求,那么openTSDB可能不是你的选择。 openTSDB是时间序列db,也适用于kariosDB。我试过openTSDB和kariosDB,发现它们都不能。

因为在openTSDB中,group by是一回事,聚合是另一回事。 不像RDBMS,agg在group by上工作。在openTSDB中,agg在下采样

上工作