변환 함수
변환 함수 (Transformations)
쿼리 및 수집 구성에 사용되는 Pinot 변환 함수의 큐레이팅된 안내예요.
출처: 문서
본문
이 페이지는 Pinot 수집 구성과 SELECT 표현식에서 가장 자주 나타나는 변환 함수를 그룹화해요. 전체 시그니처와 예시는 링크된 카테고리 페이지를 사용하는 탐색 안내이며 완전한 함수 참조는 아니에요.
가장 중요한 구분은 함수가 쿼리 출력에서 직접 사용할 수 있는 타입화된 값을 반환하는지, 아니면 주로 수집 시점 성형에 의도된 것인지예요. 타입화된 JSON 헬퍼는 SQL에서 안정적인 컬럼 유형이 필요할 때 특히 유용해요.
핵심 계열
| Family | Common functions | Best fit | Notes |
|---|---|---|---|
| Math | ADD, SUB, MULT, DIV, MOD, ABS, CEIL, FLOOR, EXP, LN, SQRT, ROUND |
쿼리 프로젝션 및 수집 변환 | 집계나 필터링 전에 결정적 숫자 성형이 필요할 때 사용. |
| String | UPPER, LOWER, SUBSTR, CONCAT, TRIM, LTRIM, RTRIM, REGEXPEXTRACT, REGEXPREPLACE, REPLACE, STARTSWITH |
쿼리 프로젝션 및 수집 변환 | 정규화, 토큰화, 정리에 강한 적합. |
| Date/time | DATETRUNC, FROMDATETIME, TODATETIME, TOEPOCH*, FROMEPOCH*, DATETIMECONVERT |
쿼리 프로젝션 및 수집 변환 | 타임스탬프를 일관된 버킷과 저장 형식에 맞추는 데 사용. |
| JSON | JSONEXTRACTSCALAR, JSONEXTRACTOBJECT, JSONPATHSTRING, JSONPATHLONG, JSONPATHDOUBLE, JSONFORMAT, TOJSONMAPSTR |
타입화된 쿼리 출력 및 수집 구성 | 출력 컬럼에 안정적인 SQL 유형이 필요할 때 타입화된 헬퍼를 선호하고, 수집에서 한 번 파싱해 결과를 재사용하려면 JSONEXTRACTOBJECT 사용. |
| Binary | SHA, SHA256, SHA512, MD5, TOBASE64, UTF8 |
쿼리 프로젝션 및 수집 변환 | 지문 및 인코딩에 유용. |
| Array and multi-value | ARRAYLENGTH, VALUEIN, MAP_VALUE, array helpers |
쿼리 프로젝션 및 수집 변환 | 소스 컬럼에 배열 또는 맵이 포함될 때 사용. |
| Utility | EXTRACT, ISJSON, ISSUBNETOF |
쿼리 프로젝션 및 필터링 | 이 헬퍼들은 형태 정리와 쿼리 로직 사이의 경계에 있는 경향이 있음. |
주목할 JSON 헬퍼
Pinot는 범용 및 타입화된 JSON 접근을 모두 지원해요. 타입화된 변형은 결과 스키마를 명시적으로 유지하므로 쿼리 출력에 더 안전한 선택이에요.
- 결과 유형이 고정되어야 할 때
JSONPATHSTRING,JSONPATHLONG,JSONPATHDOUBLE사용. - 경로가 단순 선형 경로이고
JSONPATH*와 같은 결과를 더 낮은 수집 CPU로 원할 때 수집 변환에서JSONPATHSTRINGFAST,JSONPATHLONGFAST,JSONPATHDOUBLEFAST사용. 지원되지 않는 JsonPath 형태에 대해 Pinot는 기존JSONPATH*구현으로 폴백. - 잘 구성되고 중복 없는 JSON의 수집 변환에서만
JSONPATH*FIRSTMATCH사용. 이 조기 종료 변형은 필드가 일찍 나타날 때 더 빠를 수 있지만, 중복 키는 첫 번째 발생으로 해석되고 주소가 지정된 필드 이후의 잘못된 내용은 거부되지 않음. - 여러 다운스트림
JSONPATH*표현식이 같은 JSON 소스 컬럼에서 읽을 때 수집 변환에서JSONEXTRACTOBJECT사용. - 수집 데이터를 성형하고 다운스트림 스키마가 추론된 유형을 처리할 수 있을 때
JSONPATH와JSONPATHARRAY사용. - 객체나 맵을 JSON 텍스트로 직렬화해야 할 때
JSONFORMAT와TOJSONMAPSTR사용.
Multi-value 패턴
가장 일반적인 multi-value 패턴은 단순 정규화와 멤버십 검사예요.
ARRAYLENGTH는 multi-value 컬럼의 크기를 줌.VALUEIN은 multi-value 컬럼을 고정 값 집합에 대해 필터링.MAP_VALUE는 키를 알 때 저장된 맵에서 값을 추출.
이 안내를 언제 사용할까
다음과 같을 때 이 페이지를 사용하세요.
- 수집 변환 설계.
- 데이터 저장 전 문자열 또는 타임스탬프 정규화.
- 반정형 데이터를 안정적인 타입화된 컬럼으로 변환.
- 함수가 프로젝션, 필터, 수집 규칙 중 어디에 속하는지 확인.
이 페이지에서 다룬 내용
- Pinot 문서와 수집 구성에서 가장 중요한 변환 계열.
- 타입화된 쿼리 출력이 필요할 때 안전한 JSON 헬퍼.
- 데이터가 테이블에 도달하기 전에 성형하는 데 가장 유용한 multi-value 헬퍼.
다음 단계
- 정확한 문법과 예시에 대한 관련 계열 페이지를 열거나, 쿼리 형태도 실행 엔진에 의존한다면 SSE vs MSE 안내로 이동.