从Clikhouse到grafana的供应商指标

从Clikhouse到grafana的供应商指标,grafana,clickhouse,Grafana,Clickhouse,大家好,我在向grafana添加监视器时遇到了这样一个问题,监视器中包含供应商向clickhouse数据库请求状态的指标。 我需要状态为200或!=200人返回时间表 我们希望,当满足条件-count(当StatusRes!='200'时,案例1结束)时,我们将显示请求状态为非200的供应商的数据,但如果-count(当StatusRes 0='200'时,案例1结束)仅显示请求状态为200的供应商 但事实上,请求处理不正确(所有状态都返回200和500),我不知道为什么 以下是查询本身,我们将

大家好,我在向grafana添加监视器时遇到了这样一个问题,监视器中包含供应商向clickhouse数据库请求状态的指标。 我需要状态为200或!=200人返回时间表

我们希望,当满足条件-count(当StatusRes!='200'时,案例1结束)时,我们将显示请求状态为非200的供应商的数据,但如果-count(当StatusRes 0='200'时,案例1结束)仅显示请求状态为200的供应商

但事实上,请求处理不正确(所有状态都返回200和500),我不知道为什么

以下是查询本身,我们将在grafana中使用它来获取度量:

    SELECT
    $timeSeries as t,
    StatusRes,
    count(CASE WHEN StatusRes != '200' THEN 1 END),
    count(CASE WHEN StatusRes == '200' THEN 1 END),
    Provider
FROM $table

WHERE $timeFilter

GROUP BY
    t,
    StatusRes,
    Provider
ORDER BY
    t,
    StatusRes,
    Provider
count(col)
——统计col不为空的行数。这与CH无关,而是ANSI SQL

实际上应该使用countIf

    StatusRes,
    countIf(StatusRes != '200'),
    countIf(StatusRes == '200'),
    Provider
或总和

    sum(StatusRes != '200'),
    sum(StatusRes == '200'),


谢谢,带有“sum(StatusRes!=“200”)的示例对我很有用。但是如果不成功的话。请告诉我更多,但我如何才能使状态200和500的百分比?我更新了一个例子我的答复。我不明白为什么sum和countIf可以给出不同的结果。您好,现在sum value也适用于我。非常感谢。
create table XX(a Int64, StatusRes String) Engine=Memory;

INSERT INTO XX SELECT
    number,
    ['200', '500', '400'][(rand() % 3) + 1]
FROM numbers(1000);


SELECT
    sum(StatusRes = '200'),
    sum(StatusRes != '200')
FROM XX

┌─sum(equals(StatusRes, '200'))─┬─sum(notEquals(StatusRes, '200'))─┐
│                           321 │                              679 │
└───────────────────────────────┴──────────────────────────────────┘



SELECT
    countIf(StatusRes = '200'),
    countIf(StatusRes != '200')
FROM XX
┌─countIf(equals(StatusRes, '200'))─┬─countIf(notEquals(StatusRes, '200'))─┐
│                               321 │                                  679 │
└───────────────────────────────────┴──────────────────────────────────────┘