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