PPL의 표현식
PPL의 표현식 (Expressions)
표현식, 특히 값 표현식(value expression)은 스칼라 값을 반환해요. 표현식에는 여러 타입과 형태가 있어요. 예를 들어 원자 표현식으로서의 리터럴 값이 있고, 그 위에 만들어지는 산술·술어·함수 표현식이 있어요. Filter 또는 Stats 명령어의 산술 표현식처럼 다양한 절에서 표현식을 사용할 수 있어요.
출처: 문서
본문
표현식, 특히 값 표현식은 스칼라 값을 반환해요. 표현식은 타입과 형태가 다양해요. 예를 들어 원자 표현식으로서의 리터럴 값, 그리고 그 위에 만들어지는 산술·술어·함수 표현식이 있어요. Filter 또는 Stats 명령어의 산술 표현식처럼 다양한 절에서 표현식을 사용할 수 있어요.
산술 연산자 (Arithmetic operators)
산술 표현식은 숫자 리터럴과 이항 산술 연산자를 결합해 만들어져요. 사용 가능한 연산자는 다음과 같아요:
+: 덧셈-: 뺄셈*: 곱셈/: 나눗셈.plugins.ppl.syntax.legacy.preferred가true(기본값)면 정수 피연산자는 레거시 잘림(truncating) 결과를 따라요. 설정이false면 피연산자가 부동소수점으로 승격되어 분수 부분이 보존돼요. 0으로 나누면NULL을 반환해요.%: 모듈로(나머지). 이 연산자는 정수에서만 사용할 수 있으며 나눗셈의 나머지를 반환해요.
우선순위 (Precedence)
괄호를 사용해 산술 연산자의 우선순위를 제어할 수 있어요. 그렇지 않으면 우선순위가 높은 연산자가 먼저 수행돼요.
타입 변환 (Type conversion)
시스템은 어떤 연산자를 사용할지 결정할 때 암시적 타입 변환을 수행해요. 예를 들어 정수를 실수에 더하면 +(double,double) 시그니처와 일치하므로 결과가 실수가 돼요. 동일한 타입 변환 규칙이 함수 호출에도 적용돼요.
예제 (Examples)
다음은 다양한 유형의 산술 표현식 예시예요:
source=accounts
| where age > (25 + 5)
| fields age
쿼리는 다음과 같은 결과를 반환해요:
age
32
36
33
술어 연산자 (Predicate operators)
술어 연산자는 true 또는 false로 평가되는 표현식이에요.
MISSING과 NULL 값에 대한 비교는 다음 규칙을 따라요:
- MISSING 값은 다른 MISSING 값과만 같고, 다른 모든 값보다 작아요.
- NULL 값은 다른 NULL 값과 같고, MISSING 값보다 크지만 다른 모든 값보다는 작아요.
연산자 (Operators)
| 이름 | 설명 |
|---|---|
> |
크다 (Greater than) |
>= |
크거나 같다 (Greater than or equal to) |
< |
작다 (Less than) |
!= |
같지 않다 (Not equal to) |
<= |
작거나 같다 (Less than or equal to) |
= |
같다 (Equal to) |
== |
같다 (Equal to, 대체 구문) |
LIKE |
단순 패턴 매칭 |
IN |
값 목록 포함 여부 테스트 |
AND |
논리 AND |
OR |
논리 OR |
XOR |
논리 XOR |
NOT |
논리 NOT |
날짜와 시간 값을 비교할 수 있어요. 서로 다른 날짜·시간 타입(예: DATE와 TIME)을 비교하면 두 값 모두 DATETIME으로 변환돼요.
다음 변환 규칙이 적용돼요:
TIME값은 오늘 날짜와 결합돼요.DATE값은 그 날짜의 자정으로 해석돼요.
예제 (Examples)
다음 예제는 PPL 쿼리에서 술어 연산자를 사용하는 방법을 보여줘요.
기본 술어 연산자
다음은 비교 연산자의 예시예요:
source=accounts
| where age > 33
| fields age
쿼리는 다음과 같은 결과를 반환해요:
age
36
== 연산자는 동등 비교에 =의 대체 구문으로 사용할 수 있어요.
source=accounts
| where age == 32
| fields age
쿼리는 다음과 같은 결과를 반환해요:
age
32
=와 == 모두 동일한 동등 비교를 수행해요. 선호에 따라 둘 중 하나를 사용하면 돼요.
IN
IN 연산자는 필드 값이 지정된 값 목록에 있는지 테스트해요.
source=accounts
| where age in (32, 33)
| fields age
쿼리는 다음과 같은 결과를 반환해요:
age
32
33
OR
OR 연산자는 두 불리언 표현식 사이에 논리 OR 연산을 수행해요.
source=accounts
| where age = 32 OR age = 33
| fields age
쿼리는 다음과 같은 결과를 반환해요:
age
32
33
NOT
NOT 연산자는 논리 NOT 연산을 수행해 불리언 표현식을 부정해요.
source=accounts
| where not age in (32, 33)
| fields age
쿼리는 다음과 같은 결과를 반환해요:
age
36
28