Influxdb 总和小于XDB测量中标签和的和?

Influxdb 总和小于XDB测量中标签和的和?,influxdb,Influxdb,或者我做错了什么。我有一个服务,统计它收到的请求。请求具有平台、执行请求的客户端应用程序版本和其他标记。当服务重新启动时(很少在更新时发生,指标会重置) 因此,我想计算最近时间范围内来自每个平台的查询的百分比,并执行以下操作: SELECT SUM("received") as "received" FROM ( SELECT NON_NEGATIVE_DIFFERENCE(MAX("received")) as "received" FROM "http_metrics" WH

或者我做错了什么。我有一个服务,统计它收到的请求。请求具有平台、执行请求的客户端应用程序版本和其他标记。当服务重新启动时(很少在更新时发生,指标会重置)

因此,我想计算最近时间范围内来自每个平台的查询的百分比,并执行以下操作:

SELECT SUM("received")  as "received"
FROM (
  SELECT NON_NEGATIVE_DIFFERENCE(MAX("received")) as "received"
  FROM  "http_metrics"
  WHERE time >= now() - 4h GROUP BY time(1s)
) GROUP BY "platform";
返回:

...
tags: platform=ios
time                 received
----                 --------
1970-01-01T00:00:00Z 581

tags: platform=unknown
time                 received
----                 --------
1970-01-01T00:00:00Z 12310

tags: platform=web
time                 received
----                 --------
1970-01-01T00:00:00Z 6196
time                 received
----                 --------
1970-01-01T00:00:00Z 8274
并在不分组的情况下执行相同操作:

SELECT SUM("received")  as "received"
FROM (
  SELECT NON_NEGATIVE_DIFFERENCE(MAX("received")) as "received"
  FROM  "http_metrics"
  WHERE time >= now() - 4h GROUP BY time(1s)
);
返回:

...
tags: platform=ios
time                 received
----                 --------
1970-01-01T00:00:00Z 581

tags: platform=unknown
time                 received
----                 --------
1970-01-01T00:00:00Z 12310

tags: platform=web
time                 received
----                 --------
1970-01-01T00:00:00Z 6196
time                 received
----                 --------
1970-01-01T00:00:00Z 8274
这显然是不正确的,因为“未知”平台无法接收比所有平台更多的请求。但我甚至不知道哪一个是不正确的,总的还是按平台还是两者都不正确


如何正确计算请求总数和按平台计算请求总数

好的,问题是因为我的测量有其他标签,比如服务器和应用程序版本,每个标签都有单独的计数器,然后它们都变成交错的,可以在图表上看到,这应该是平滑的和累积的,但非常尖锐:

但是当我们添加
groupby*

SELECT "received" FROM  "http_metrics"  WHERE $timeFilter GROUP BY *;
它分为多个单独的平滑系列:

现在,这是可微的,从中我们可以创建子查询来进行聚合

总数:

SELECT SUM("received") as "received" FROM (
    SELECT NON_NEGATIVE_DIFFERENCE(MAX("received")) as "received"
    FROM "http_metrics"
    WHERE time >= now() - 6h
    GROUP BY time(1s), *
) WHERE  time >= now() - 6h;

time                           received
----                           --------
2018-07-17T01:07:46.184292033Z 1367
分组:

SELECT SUM("received") as "received" FROM (
    SELECT NON_NEGATIVE_DIFFERENCE(MAX("received")) as "received"
    FROM "http_metrics"
    WHERE time >= now() - 6h
    GROUP BY time(1s), *
) WHERE  time >= now() - 6h
GROUP BY "platform";

... I'm not going to bore you with response, but sum matches total sum.
所以,我想故事应该是这样的:每次你想区分有一些标签的计数器时,你都需要
GROUP BY*

SELECT "received" FROM  "http_metrics"  WHERE $timeFilter GROUP BY *;