수학 표현식 함수
수학 표현식 함수 (Math expressions)
Druid 표현식(expression) 언어에서 사용할 수 있는 수학 함수들을 소개하는 문서예요. Druid SQL과 native 쿼리 양쪽에서 쓰는 표현식 안에서 수학 연산·삼각함수·지수/로그 함수 등을 어떻게 쓰는지 다뤄요.
출처: 문서
본문
Apache Druid는 두 가지 쿼리 언어를 지원해요: Druid SQL 과 native 쿼리. 이 문서는 표현식(expression) 에서 사용하는 수학 함수들을 설명해요.
Druid 표현식은 자바스크립트에 익숙한 산술 연산자와 함수 집합을 지원해요. 일반적으로 단순한 산술은 성능이 매우 좋고, 자바스크립트 함수를 개별로 실행해야 하는 표현식보다 훨씬 빠르다고 간주돼요.
산술 연산자 (Arithmetic operators)
표현식은 다음 이항 산술 연산자를 지원해요:
| 연산자 | 의미 |
| + | 더하기 |
| - | 빼기 |
| * | 곱하기 |
| / | 나누기 |
| % | 나머지 (mod) |
| ^ | 거듭제곱 |
피연산자가 같은 타입이면 결과도 그 타입이에요. 그렇지 않으면 결과는 가장 넓은 피연산자 타입이 돼요 (예: DOUBLE과 LONG의 연산은 DOUBLE). 산술 연산에서 0으로 나누는 동작은 IEEE 754 의미론을 따르며, 피연산자 타입에 따라 Infinity나 NaN을 반환할 수 있어요.
비교 연산자 (Comparison operators)
==, !=, <, >, <=, >= 연산자를 지원해요. 비교 결과는 LONG(0 또는 1) 또는 BOOLEAN이에요.
논리 연산자 (Logical operators)
&&(and), ||(or), !(not) 연산자를 지원해요. 논리 연산은 3값 논리(three-valued logic)를 사용하고 결과는 BOOLEAN이에요.
수학 함수 (Mathematical functions)
수학 함수는 DOUBLE 입력을 받고 DOUBLE을 반환해요. 단, 표기된 함수들은 그렇지 않고 LONG 타입을 다루거나 반환해요.
| 함수 | 설명 |
| abs(x) | x의 절대값. LONG이면 LONG, 그 외에는 DOUBLE. |
| acos(x) | x의 아크코사인 (라디안). |
| asin(x) | x의 아크사인 (라디안). |
| atan(x) | x의 아크탄젠트 (라디안). |
| atan2(y, x) | 점 (x, y)의 각도 (라디안). |
| cbrt(x) | x의 세제곱근. |
| ceil(x) | x보다 크거나 같은 가장 작은 정수. DOUBLE을 반환해요. |
| cos(x) | x의 코사인 (라디안). |
| cosh(x) | x의 쌍곡코사인. |
| cot(x) | x의 코탄젠트. |
| degrees(x) | 라디안을 도 단위로 변환. |
| exp(x) | e의 x제곱. |
| expm1(x) | e의 x제곱에서 1을 뺀 값. |
| floor(x) | x보다 작거나 같은 가장 큰 정수. DOUBLE을 반환해요. |
| log(x) | 자연로그 (밑 e). |
| log10(x) | 상용로그 (밑 10). |
| log1p(x) | x+1의 자연로그. |
| nextUp(x) | x보다 큰 다음 부동소수점 값. DOUBLE을 반환해요. |
| nextDown(x) | x보다 작은 다음 부동소수점 값. DOUBLE을 반환해요. |
| pow(x, y) | x의 y제곱. |
| radians(x) | 도 단위를 라디안으로 변환. |
| rand() | [0,1) 범위의 무작위 DOUBLE. |
| round(x) | x를 가장 가까운 정수로 반올림. |
| signum(x) | x의 부호 표시 함수. |
| sin(x) | x의 사인 (라디안). |
| sinh(x) | x의 쌍곡사인. |
| sqrt(x) | x의 제곱근. |
| tan(x) | x의 탄젠트 (라디안). |
| tanh(x) | x의 쌍곡탄젠트. |
| trunc(x) | x의 소수부를 버림. |
특수 함수 (Special functions)
표현식은 인자에 따라 타입을 결정하는 몇 가지 다형(polymorphic) 수학 함수도 지원해요.
greatest(a, b, ...)과 least(a, b, ...)는 인자 목록 중 최댓값/최솟값을 계산해요. safe_divide(numerator, denominator)는 분모가 0일 때 나누기 오류 대신 0을 반환해요.
gcd(a, b)는 두 정수의 최대공약수, lcm(a, b)는 최소공배수를 반환해요. factorial(n)은 n의 팩토리얼을 반환해요. numerator(n)과 denominator(n)은 유리수 n의 분자/분모를 반환해요.
더 알아보기 (Learn more)
- 표현식 (Expressions) — Druid 표현식의 전체 문법과 함수 목록을 살펴보세요.
- SQL 함수 — SQL에서 사용할 수 있는 함수들을 알아보세요.