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

더 알아보기 (Learn more)