>

Grafana 대시 보드에 연결된 PostgreSQL 데이터베이스가 있습니다. 누적 수를 계산하여 그래프로 표시하고 싶지만 달성 방법을 찾지 못했습니다. 구체적으로, 내 테이블은 다음과 같습니다 :

project_name / project_namespace / project_creation_date
Project A / Namespace A / 2019-05-22
Project B / Namespace B / 2019-05-23
Project A2 / Namespace A / 2019-05-23
Project C / Namespace C / 2019-05-23
Project D / Namespace D / 2019-05-24
Project B2 / Namespace B / 2019-05-24

그래프에 표시하고 싶은 것은 각 날짜마다 존재하는 네임 스페이스의 수입니다. 5 월 22 일에는 하나의 네임 스페이스 (A)가 있고 5 월 23 일에는 두 개의 새로운 네임 스페이스 (B와 C)가 있으며 5 월 24 일에는 새로운 네임 스페이스 (D)가 있습니다. 이런 식으로 네임 스페이스의 누적 진화는 다음과 같습니다.

2019-05-22 Number of namespaces: 1 (A)
2019-05-23 Number of namespaces: 3 (A, that already existed, and new B and C)
2019-05-24 Number of namespaces: 4 (A, B and C, that already existed, and D)

이 방법으로 그래프는 22에서 1, 23에서 3 및 24에서 4로 표시해야합니다. Grafana의 SQL 문장으로 어떻게 이것을 달성 할 수 있습니까?

도움을 주셔서 감사합니다

안녕하세요.


  • 답변 # 1

    아이디어는 각 name_space의 첫 데이트를 얻는 것입니다. Postgres에서는 다음과 같이 표현할 수 있습니다.

    select project_creation_date, count(*) as day_count,
           sum(count(*)) over (order by project_creation_date) as cumulative_count
    from (select distinct on (project_namespace) project_namespace project_creation_date
          from t
          order by project_namespace, project_creation_date
         ) t
    group by project_creation_date
    order by project_creation_date;
    
    

    아래는 동일하며 표준 SQL이지만 성능이 좋지 않을 수 있습니다.

    select project_creation_date, count(*) as day_count,
           sum(count(*)) over (order by project_creation_date) as cumulative_count
    from (select project_namespace, min(project_creation_date) as project_creation_date
          from t
          order by project_namespace, project_creation_date
         ) t
    group by project_creation_date
    order by project_creation_date;
    
    

  • 이전 charts - 누적 막대 그래프 내부에 높은 차트로 텍스트를 표시하는 방법
  • 다음 javascript - 브라우저는 경도 변수를 정의되지 않은 것으로 읽습니다