기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
표현식 쿼리 쓰기
이 설명서 주제는 Grafana 버전 9.x를 지원하는 Grafana 워크스페이스를 위해 설계되었습니다.
Grafana 버전 10.x를 지원하는 Grafana 워크스페이스의 경우 Grafana 버전 10에서 작업 섹션을 참조하세요.
Grafana 버전 8.x를 지원하는 Grafana 워크스페이스의 경우 Grafana 버전 8에서 작업 섹션을 참조하세요.
서버 측 표현식을 사용하면 수학 및 기타 연산을 사용하여 쿼리에서 반환된 데이터를 조작할 수 있습니다. 표현식은 새 데이터를 생성하고 데이터 소스에서 반환하는 데이터를 조작하지 않습니다.
표현식 정보
서버 측 표현식을 사용하면 수학 및 기타 연산을 사용하여 쿼리에서 반환된 데이터를 조작할 수 있습니다. 표현식에 데이터를 허용 가능한 입력으로 사용할 수 있도록 일부 사소한 데이터 구조 조정을 제외하고 표현식에서는 새 데이터를 생성하고 데이터 소스에서 반환하는 데이터를 조작하지 않습니다.
표현식 사용
표현식은 주로 Grafana 알림에서 사용됩니다. 처리는 서버 측에서 수행되므로 표현식은 브라우저 세션 없이 작동할 수 있습니다. 그러나 표현식은 백엔드 데이터 소스 및 시각화와 함께 사용할 수도 있습니다.
참고
표현식은 레거시 대시보드 알림에서 작동하지 않습니다.
표현식은 서로 다른 데이터 소스의 쿼리를 결합할 수 있도록 하거나 데이터 소스에서 사용할 수 없는 작업을 제공하여 데이터 소스를 보강하기 위한 기능입니다.
참고
가능하면 데이터 소스 내에서 데이터 처리를 수행해야 합니다. 처리를 위해 스토리지에서 Grafana 서버로 데이터를 복사하는 것은 비효율적이므로 표현식은 경량 데이터 처리를 목표로 합니다.
표현식은 시계열 또는 숫자 데이터를 반환하는 데이터 소스 쿼리와 함께 작동합니다. 또한 다차원 데이터에서도 작동합니다. 예를 들어 여러 시리즈를 반환하는 쿼리가 있으며 여기에서는 각 시리즈가 레이블 또는 태그로 식별됩니다.
개별 표현식은 하나 이상의 쿼리 또는 기타 표현식을 입력으로 사용하여 데이터를 결과에 추가합니다. 각 개별 표현식 또는 쿼리는 RefID로 알려진 이름 지정된 식별자(예: 기본 문자 A
또는 B
)인 변수로 표시됩니다.
개별 표현식의 출력 또는 다른 표현식의 데이터 소스 쿼리를 참조하기 위해 이 식별자는 변수로 사용됩니다.
표현식 유형
표현식은 두 가지 유형의 데이터에서 작동합니다.
-
시계열 컬렉션.
-
각 번호가 항목인 숫자 컬렉션.
각 컬렉션은 단일 데이터 소스 쿼리 또는 표현식에서 반환되며 RefID로 표시됩니다. 각 컬렉션은 하나의 세트로,세트의 각 항목은 레이블 또는 키-값 페어로 저장되는 차원으로 고유하게 식별됩니다.
데이터 소스 쿼리
서버 측 표현식은 백엔드 데이터 소스에 대한 데이터 소스 쿼리만 지원합니다. 데이터는 일반적으로 레이블 지정된 시계열 데이터로 간주됩니다. 이후에 표현식에서 오류를 더 잘 처리할 수 있도록 쿼리 반환 유형(숫자 또는 시계열) 데이터의 어설션을 추가했습니다.
표현식과 함께 사용되는 데이터 소스 쿼리는 표현식 엔진에서 실행됩니다. 이렇게 하면 데이터를 데이터 프레임당 하나의 시계열 또는 하나의 숫자로 재구성합니다. 예를 들어 테이블 보기에서 한 프레임에 여러 시리즈를 반환하는 데이터 소스를 사용하는 경우 표현식으로 실행할 때 다르게 보일 수 있습니다.
현재 시간, 문자열 열 및 하나의 숫자 열이 없는 데이터 프레임을 사용할 때 시계열 이외의 숫자 형식만 지원됩니다.
Loc | Host | Avg_CPU |
---|---|---|
MIA |
A |
1 |
NYC |
B |
2 |
위의 예제에서는 표현식에서 작동하는 숫자를 생성합니다. 문자열 열은 레이블이 되고 숫자 열은 해당 값이 됩니다. 예를 들어 값이 1인 {"Loc": "MIA", "Host": "A"}
가 있습니다.
운영
표현식에서 수학, 축소 및 리샘플링 연산을 사용할 수 있습니다.
수학 연산
수학은 시계열 또는 숫자 데이터의 자유 형식 수학 공식에 사용됩니다. 수학 연산은 숫자와 시계열을 입력으로 가져와 다른 숫자와 시계열로 변경합니다.
다른 쿼리 또는 표현식의 데이터는 $A
와 같이 달러 기호가 붙은 RefID 접두사로 참조됩니다. 변수의 이름에 공백이 있는 경우 ${my variable}
과 같은 괄호 구문을 사용할 수 있습니다.
숫자 상수는 십진수(2.24
), 8진수(선행 0 포함, 예: 072
) 또는 16진수(선행 0x 포힘, 예: 0x2A
)일 수 있습니다. 지수 및 기호도 지원됩니다(예: -0.8e-2
).
연산자
산술(+
, 바이너리 및 단항 -
, *
, /
, %
, 지수 **
), 관계형(<
, >
, ==
, !=
, >=
, <=
), 논리(&&
, ||
및 단항 !
) 연산자가 지원됩니다.
연산에서 데이터 동작 방식은 데이터가 숫자인지 시계열 데이터인지에 따라 달라집니다.
$A + $B
또는 $A || $B
와 같은 바이너리 연산에서 연산자는 데이터 유형에 따라 다음과 같은 방식으로 적용됩니다.
-
$A
및$B
가 모두 숫자인 경우 두 숫자 사이에서 연산이 수행됩니다. -
한 변수가 숫자이고 다른 변수가 시계열인 경우 시계열에서 각 포인트 값과 숫자 사이의 연산이 수행됩니다.
-
$A
및$B
가 모두 시계열 데이터인 경우 두 시리즈의 각 값 사이에서 연산은$A
및$B
에 모두 존재하는 각 타임스탬프에 수행됩니다.Resample
연산을 사용하여 타임스탬프를 정렬할 수 있습니다.
요약:
-
번호 OP 번호 = 번호
-
숫자 OP 시리즈 = 시리즈
-
시리즈 OP 시리즈 = 시리즈
표현식은 단일 변수로 표시되는 여러 시리즈 또는 숫자와 함께 작동하므로 바이너리 연산도 두 변수 간에 합집합(조인)을 수행합니다. 각 개별 시리즈 또는 숫자와 연결된 식별 레이블을 기반으로 수행됩니다.
따라서 $A
에서 {host=web01}
과 같은 레이블을 포함하는 숫자와 $B
의 다른 숫자가 있는 경우 각 변수 내 두 항목 사이에서 연산이 수행되고 결과에서는 동일한 레이블을 공유합니다. 이 합집합의 동작 규칙은 다음과 같습니다.
-
레이블이 없는 항목은 모든 항목에 조인됩니다.
-
$A
및$B
에 각각 하나의 항목(시리즈 하나 또는 숫자 하나)만 포함된 경우 조인됩니다. -
레이블이 정확히 일치하는 경우 조인됩니다.
-
레이블이 다른 레이블의 하위 세트인 경우(예:
$A
의 항목에{host=A,dc=MIA}
레이블이 지정되고$B
의 항목에{host=A}
레이블이 지정된 경우) 조인됩니다. -
$A
와 같은 변수 내에서 각 항목에 대해 태그 키가 서로 다르면 조인 도작은 정의되지 않습니다.
관계형 연산자와 논리 연산자는 거짓인 경우 0, 참인 경우 1을 반환합니다.
수학 함수
대부분의 함수는 자체 표현식 연산에 존재하지만 수학 연산에는 수학 연산자 또는 기호와 유사한 일부 함수가 있습니다. 함수가 숫자 또는 시리즈를 가져올 수 있는 경우 인수와 동일한 유형이 반환됩니다. 시리즈인 경우 시리즈의 각 포인트 값에 대해 연산이 수행됩니다.
abs
abs는 인수의 절댓값을 반환하며, 이는 숫자 또는 시리즈일 수 있습니다. 예를 들면 abs(-1)
또는 abs($A)
입니다.
is_inf
is_inf는 숫자 또는 시리즈를 가져와 Inf
값에 대해 1
(음수 또는 양수), 기타 값에 대해 0
을 반환합니다. 예: is_inf($A)
.
참고
예를 들어 특별히 음의 무한대를 확인해야 하는 경우 $A == infn()
과 같은 비교를 수행할 수 있습니다.
is_nan
is_nan은 숫자 또는 시리즈를 가져와 NaN
값에 대해 1
, 기타 값에 대해 0
을 반환합니다. 예: is_nan($A)
. 이 함수는 NaN
이 NaN
과 같지 않으므로 존재합니다.
is_null
is_null은 숫자 또는 시리즈를 가져와 null
값에 대해 1
, 기타 값에 대해 0
을 반환합니다. 예: is_null($A)
.
is_number
is_number는 숫자 또는 시리즈를 가져와 모든 실수 값에 대해 1
, 기타 값((null
, Inf+
, Inf-
, NaN
)에 대해 0
을 반환합니다. 예: is_number($A)
.
log
Log는 인수의 자연 로그를 반환하며, 이는 숫자 또는 시리즈일 수 있습니다. 값이 0보다 작으면 NaN
이 반환됩니다. 예를 들면 log(-1)
또는 log($A)
입니다.
inf, infn, nan, null
inf, infn, nan 및 null 함수는 모두 이름의 단일 값을 반환합니다. 주로 테스트용으로 존재합니다. 예: null()
.
round
Round는 반올림된 정수 값을 반환합니다. 예: round(3.123)
또는 round($A)
.
ceil
Ceil은 숫자를 가장 가까운 정수 값으로 올림합니다. 예를 들어, ceil(3.123)
는 4
를 반환합니다.
floor
Floor는 숫자를 가장 가까운 정수 값으로 내림합니다. 예를 들어, floor(3.123
)은 3
을 반환합니다.
축소
축소는 쿼리 또는 표현식에서 반환된 하나 이상의 시계열을 가져와 각 시리즈를 단일 숫자로 바꿉니다. 시계열의 레이블은 출력된 각 축소된 번호에서 레이블로 유지됩니다.
필드:
-
함수 - 사용할 축소 함수
-
입력 - 리샘플링할 변수(refID, 예:
A
) -
모드 - 시리즈에 숫자가 아닌 값(null, NaN, +-Inf)이 포함된 경우 축소 함수의 제어 동작 허용
축소 함수
개수
Count는 각 시리즈의 포인트 수를 반환합니다.
Mean
Mean은 각 시리즈에서 모든 값의 합계를 해당 시리즈의 포인트 수로 나눈 값을 반환합니다. strict
모드에서 시리즈의 값이 null 또는 nan이거나 시리즈가 비어 있는 경우 NaN이 반환됩니다.
Min 및 Max
Min 및 Max는 각각 시리즈의 최솟값 또는 최댓값을 반환합니다. strict
모드에서 시리즈의 값이 null 또는 nan이거나 시리즈가 비어 있는 경우 NaN이 반환됩니다.
합계
Sum은 시리즈에 있는 모든 값의 합계를 반환합니다. 시리즈 길이가 0인 경우 합계는 0입니다. strict
모드에서 시리즈에 NaN 또는 Null 값이 있는 경우 NaN이 반환됩니다.
Last
Last는 시리즈의 마지막 숫자를 반환합니다. 시리즈에 값이 없는 경우 NaN을 반환합니다.
축소 모드
Strict
Strict 모드인 경우 입력 시리즈는 그대로 처리됩니다. 시리즈의 값이 숫자가 아닌 경우(null, NaN 또는 +-Inf) NaN이 반환됩니다.
숫자 이외 항목 삭제
이 모드에서 축소 함수를 실행하기 전에 입력 시리즈의 숫자가 아닌 모든 값(null, NaN 또는 +-Inf)은 필터링됩니다.
숫자 이외 항목 대체
이 모드에서 숫자가 아닌 모든 값은 사전 정의된 값으로 대체됩니다.
Resample
Resample은 각 시계열의 타임스탬프를 일관된 시간 간격으로 변경합니다. 기본 사용 사례는 동일한 타임스탬프를 공유하지 않는 시계열을 리샘플링하여 이들 사이에서 수학 연산을 수행할 수 있도록 하는 것입니다. 두 시리즈 각각을 리샘플링한 다음, 리샘플링된 변수를 참조하는 수학 연산에서 수행할 수 있습니다.
필드:
-
입력 - 리샘플링할 시계열 데이터의 변수(refID, 예:
A
) -
리샘플링 대상 - 리샘플링할 시간의 지속 시간(예:
10s.
). 단위는s
(초의 경우),m
(분의 경우),h
(시간의 경우),d
(일의 경우),w
(주의 경우),y
(년의 경우)일 수 있습니다. -
다운샘플링 - 기간 샘플당 데이터 포인트가 두 개 이상 있을 때 사용할 축소 함수. 동작 세부 정보는 축소 연산을 참조하세요.
-
업샘플링 - 데이터 포인트가 없는 기간 샘플을 채우는 데 사용하는 방법.
-
pad는 알려진 마지막 값으로 채움
-
backfill은 알려진 다음 값을 사용함
-
fillna는 NaN으로 빈 샘플 기간을 채움
-
표현식 작성
데이터 소스가 지원하는 경우 Grafana는 표현식 버튼을 표시하고 쿼리 편집기 목록에 기존 표현식을 표시합니다.
표현식을 작성하는 방법
-
패널을 여세요.
-
쿼리 아래에서 표현식을 선택하세요.
-
연산 필드에서 작성할 표현식 유형을 선택하세요.
-
표현식을 작성하세요.
-
적용을 선택합니다.
특수 사례
쿼리된 데이터 소스에서 시리즈 또는 숫자를 반환하지 않으면 표현식 엔진은 NoData
를 반환합니다. 예를 들어 요청에 표현식으로 병합되는 두 개의 데이터 소스 쿼리가 포함된 경우 데이터 소스 쿼리 중 하나 이상에서 NoData
가 반환되면 전체 쿼리에 대해 반환된 결과는 NoData
입니다. Grafana 알림이 NoData
결과를 처리하는 방법에 대한 자세한 내용은 데이터 없음 또는 오류 사례 처리 섹션을 참조하세요.