SQL 기반 시각화 만들기
- 쿼리를 실행할 ClickHouse 연결을 선택합니다.
- 필요에 따라 Source를 선택합니다. 이렇게 하면
$__filters매크로를 통해 대시보드 수준 필터를 차트에 적용할 수 있습니다. - 편집기에서 SQL 쿼리를 작성하고, 쿼리 매개변수와 매크로를 사용해 대시보드 시간 범위 및 필터와 연동합니다.
- 실행 버튼을 클릭해 결과를 미리 본 다음 저장합니다.
쿼리 매개변수
{paramName:Type}을 사용합니다.
사용 가능한 매개변수
| 매개변수 | 유형 | 설명 |
|---|---|---|
{startDateMilliseconds:Int64} | Int64 | 대시보드 날짜 범위의 시작(epoch 기준 밀리초) |
{endDateMilliseconds:Int64} | Int64 | 대시보드 날짜 범위의 끝(epoch 기준 밀리초) |
{intervalSeconds:Int64} | Int64 | 시간 버킷 크기(세분화 수준 기준, 초 단위) |
{intervalMilliseconds:Int64} | Int64 | 시간 버킷 크기(세분화 수준 기준, 밀리초 단위) |
| 매개변수 | 유형 | 설명 |
|---|---|---|
{startDateMilliseconds:Int64} | Int64 | 대시보드 날짜 범위의 시작(epoch 기준 밀리초) |
{endDateMilliseconds:Int64} | Int64 | 대시보드 날짜 범위의 끝(epoch 기준 밀리초) |
매크로
$__ 접두사가 붙으며, 쿼리가 ClickHouse로 전송되기 전에 치환됩니다.
시간 경계 매크로
| Macro | Expands to | Column type |
|---|---|---|
$__fromTime | toDateTime(fromUnixTimestamp64Milli({startDateMilliseconds:Int64})) | DateTime |
$__toTime | toDateTime(fromUnixTimestamp64Milli({endDateMilliseconds:Int64})) | DateTime |
$__fromTime_ms | fromUnixTimestamp64Milli({startDateMilliseconds:Int64}) | DateTime64 |
$__toTime_ms | fromUnixTimestamp64Milli({endDateMilliseconds:Int64}) | DateTime64 |
$__interval_s | {intervalSeconds:Int64} | Int64 |
시간 필터 매크로
WHERE 절 조각을 생성합니다.
| 매크로 | 설명 |
|---|---|
$__timeFilter(column) | DateTime 컬럼을 대시보드 시간 범위에 맞게 필터링합니다 |
$__timeFilter_ms(column) | DateTime64(밀리초) 컬럼을 대시보드 시간 범위에 맞게 필터링합니다 |
$__dateFilter(column) | Date 컬럼을 대시보드 시간 범위에 맞게 필터링합니다 |
$__dateTimeFilter(dateCol, timeCol) | 별도의 Date 및 DateTime 컬럼을 사용하여 필터링합니다 |
$__dt(dateCol, timeCol) | $__dateTimeFilter의 별칭입니다 |
$__timeFilter(TimestampTime)의 예시 확장:
시간 인터벌 매크로
SELECT 및 GROUP BY 절에 사용됩니다. 이 매크로는 Line 및 Stacked-bar 시각화에서만 사용할 수 있습니다.
| 매크로 | 설명 |
|---|---|
$__timeInterval(column) | DateTime 컬럼을 intervalSeconds 단위의 인터벌로 묶습니다. |
$__timeInterval_ms(column) | DateTime64 컬럼을 intervalMilliseconds 단위의 인터벌로 묶습니다. |
$__timeInterval(TimestampTime)의 확장 예시:
대시보드 필터 매크로
| Macro | Description |
|---|---|
$__filters | 대시보드 수준에서 설정된 필터 조건으로 대체됩니다 (Source가 선택되어 있어야 함) |
$__filters는 해당 SQL WHERE 조건으로 확장됩니다. Source가 선택되지 않았거나 적용된 필터가 없으면 (1=1)로 확장되므로 WHERE 절에 포함해도 항상 안전합니다.
쿼리 결과가 차트에 표시되는 방법
Line 및 Stacked Bar 차트
| 역할 | 컬럼 유형 | 설명 |
|---|---|---|
| 타임스탬프 | 첫 번째 Date 또는 DateTime 컬럼 | x축으로 사용됩니다. |
| 시리즈 값 | 모든 숫자형 컬럼 | 각 숫자형 컬럼은 각각 별도의 시리즈로 그려집니다. 일반적으로 집계 값입니다. |
| 그룹 이름 | String, 맵 또는 배열 컬럼 | 선택 사항입니다. 그룹 값이 서로 다른 행은 각각 별도의 시리즈로 그려집니다. |
파이 차트
| 역할 | 컬럼 유형 | 설명 |
|---|---|---|
| 조각 값 | 첫 번째 숫자형 컬럼 | 각 조각의 크기를 결정합니다. |
| 조각 레이블 | String, 맵 또는 배열 컬럼 | 선택 사항입니다. 고유한 각 값이 조각 레이블이 됩니다. |
숫자 차트
| 역할 | 컬럼 유형 | 설명 |
|---|---|---|
| 숫자 | 첫 번째 숫자 컬럼 | 첫 번째 숫자 컬럼의 첫 번째 행 값이 표시됩니다. |
테이블 차트
예시
필수 system table 접근 권한play-clickstack.clickhouse.com에서 다음 예시를 실행하려면
otel_v2.otel_logs 또는 otel_v2.otel_traces를 지정해야 합니다.라인 차트 — 서비스별 시간대별 로그 수
ts(DateTime)는 x축 타임스탬프로 사용됩니다.count(numeric)는 시리즈 값으로 표시됩니다.ServiceName(string)은 서비스마다 별도의 선을 생성합니다.
라인 차트 — 매크로 사용
Stacked Bar 차트 — 심각도별 오류 건수
테이블 차트 — 가장 느린 엔드포인트 상위 10개
파이 차트 — 서비스별 요청 분포
request_count(숫자형)은 각 조각의 크기를 결정합니다.ServiceName(문자열)은 각 조각의 레이블을 지정합니다.
숫자 차트 — 전체 오류 수
total_errors가 표시됩니다.
참고 사항
- SQL 기반 시각화는
readonly모드가 활성화된 상태로 실행되며,SELECT쿼리만 허용됩니다. - SQL 기반 시각화에는 SQL 쿼리가 정확히 하나만 포함되어야 하며, 여러 쿼리는 지원되지 않습니다.
- SQL Editor는 쿼리 매개변수와 매크로 모두에 대해 자동 완성 제안을 제공합니다.
- 대시보드 필터를 SQL 기반 시각화에 적용하려면 Source를 선택해야 합니다. 정확하게 필터링되도록 Source는 조회하는 테이블과 일치해야 합니다.