유틸리티 함수
유틸리티 함수는 여러 함수의 인수로 공통적으로 활용할 수 있는 보조 기능을 제공합니다.
상수
| 상수 | 설명 |
|---|---|
NULL | null 값 |
PI | 원주율(3.141592…) 참고 |
컨텍스트
key()
구문: key()
현재 레코드의 키를 반환합니다.
value()
구문: value( [index] )
indexinteger (선택) 값 배열의 인덱스
현재 레코드의 값 전체를 배열로 반환합니다. 인덱스를 지정하면 해당 위치의 요소를 반환합니다.
예를 들어 현재 값이 [0, true, "hello", "world"]이면 다음과 같습니다.
value()는 값 배열 전체인[0, true, "hello", "world"]를 반환합니다.value(0)은 첫 번째 요소인0을 반환합니다.value(3)은 마지막 요소인"world"를 반환합니다.
payload()
구문: payload()
tql 스크립트를 호출한 측에서 보낸 현재 입력 스트림을 반환합니다.
tql 스크립트를 HTTP로 호출하면 payload()는 POST 요청 본문의 스트림을 반환합니다.
tql 스크립트를 MQTT로 호출하면 payload()는 PUBLISH 메시지의 페이로드를 반환합니다.
param()
구문: param( name )
namestring 쿼리 파라미터 이름
tql 스크립트를 HTTP로 호출한 경우 param() 함수로 요청에 포함된 쿼리 파라미터를 조회할 수 있습니다.
context()
구문: context()
스크립트 런타임의 컨텍스트 객체를 반환합니다.
문자열 함수
escapeParam()
구문: escapeParam( str ) : string
Since v8.0.7
escapeParam()은 문자열을 URL 쿼리에 안전하게 넣을 수 있도록 이스케이프합니다.
| |
strTrimSpace()
구문: strTrimSpace(str) : string
Since v8.0.7
strTrimSpace는 문자열 str의 앞뒤 공백을 모두 제거한 문자열을 반환합니다.
strTrimPrefix()
구문: strTrimPrefix(str, prefix) : string
Since v8.0.7
strTrimPrefix는 str의 앞부분에서 prefix를 제거한 문자열을 반환합니다. str이 prefix로 시작하지 않으면 str을 그대로 반환합니다.
strTrimSuffix()
구문: strTrimSuffix(str, suffix) : string
Since v8.0.7
strTrimSuffix는 str의 끝부분에서 suffix를 제거한 문자열을 반환합니다. str이 suffix로 끝나지 않으면 str을 그대로 반환합니다.
strHasPrefix()
구문: strHasPrefix(str, prefix) : boolean
Since v8.0.7
strHasPrefix는 문자열 str이 prefix로 시작하는지 확인합니다.
strHasSuffix()
구문: strHasSuffix(str, suffix) : boolean
Since v8.0.7
strHasSuffix는 문자열 str이 suffix로 끝나는지 확인합니다.
strReplaceAll()
구문: strReplaceAll(str, old, new) : string
Since v8.0.7
strReplaceAll은 문자열 str에서 서로 겹치지 않는 모든 old를 new로 바꾼 사본을 반환합니다.
old가 빈 문자열이면 문자열의 시작 위치와 각 UTF-8 시퀀스 바로 뒤에서 일치하므로, 룬 k개로 이루어진 문자열에서는 최대 k+1번 교체합니다.
strReplace()
구문: strReplace(str, old, new, n) : string
Since v8.0.7
strstringoldstringnewstringninteger
strReplace는 문자열 str에서 서로 겹치지 않는 old를 앞에서부터 n개까지 new로 바꾼 사본을 반환합니다.
old가 빈 문자열이면 문자열의 시작 위치와 각 UTF-8 시퀀스 바로 뒤에서 일치하므로, 룬 k개로 이루어진 문자열에서는 최대 k+1번 교체합니다.
n이 0보다 작으면 교체 횟수에 제한이 없습니다.
strSub()
구문: strSub(str, offset [, count]) : string
Since v8.0.7
strSub는 str의 부분 문자열을 반환합니다.
strIndex()
구문: strIndex(str, substr) : number
Since v8.0.15
str에서 substr이 처음 나타나는 인덱스를 반환합니다. str에 substr이 없으면 -1을 반환합니다.
strLastIndex()
구문: strLastIndex(str, substr) : number
Since v8.0.15
str에서 substr이 마지막으로 나타나는 인덱스를 반환합니다. str에 substr이 없으면 -1을 반환합니다.
strToUpper()
구문: strToUpper(str) : string
Since v8.0.7
strToUpper는 str의 모든 유니코드 문자를 대문자로 바꿔 반환합니다.
strToLower()
구문: strToLower(str) : string
Since v8.0.7
strToLower는 str의 모든 유니코드 문자를 소문자로 바꿔 반환합니다.
strSprintf()
구문: strSprintf(fmt, args...) : string
Since v8.0.7
strSprintf()는 포맷 지정자에 따라 문자열을 만들어 반환합니다(Go의 fmt.Sprintf와 유사).
포맷 문자열 fmt의 구문은 %[flags][width][.precision]verb입니다.
마지막에 오는 verb는 대응하는 인수의 타입과 해석 방법을 정합니다.
| verb | 설명 |
|---|---|
| f | 10진 부동소수점, 소문자 |
| F | 10진 부동소수점, 대문자 |
| e | 지수 표기(가수/지수), 소문자 |
| E | 지수 표기(가수/지수), 대문자 |
| g | %e와 %f 중 더 짧은 표현 |
| G | %E와 %F 중 더 짧은 표현 |
| q | 따옴표로 감싼 문자열 |
| t | true 또는 false |
| s | 문자열 |
| v | 기본 형식 |
| %% | % 문자 하나 |
| |
world,3.141792,hello world? 3.14strTime()
구문: strTime(time, format [, tz]) : string
Since v8.0.7
timetimeformatstring|sqlTimeformat()tztz() (선택) 시간대, 생략하면 기본값은tz('UTC')입니다.
strTime()은 시간 값을 지정한 형식과 시간대에 맞춰 문자열로 변환합니다.
MAPVALUE(0, strTime(time("now"), "2006/01/02 15:04:05.999", tz("UTC")), "result")숫자 형식 timeformat
| |
sqlTimeformat()
| |
| ROWNUM | result |
|---|---|
| 1 | 2024/01/10 07:27:29.667 |
이름으로 지정하는 timeformat
Since v8.0.12 | |
| ROWNUM | time |
|---|---|
| 1 | 10 Jan 24 07:23 UTC |
parseFloat()
구문: parseFloat( str ) : number
Since v8.0.7
strstring
str을 부동소수점 숫자로 변환합니다.
| |
parseBool()
구문: parseBool( str ) : boolean
Since v8.0.7
strstring
허용되는 문자열 “1”, “t”, “T”, “TRUE”, “true”, “True”, “0”, “f”, “F”, “FALSE”, “false”, “False” 중 하나를 받아 대응하는 불리언 값 true 또는 false로 변환합니다. 그 밖의 문자열이면 오류를 반환합니다.
| |
문자열 매칭
glob()
구문: glob(pattern, text) : boolean
Since v8.0.7
glob은 text가 pattern과 일치하면 true를 반환합니다.
| |
regexp()
구문: regexp(expression, text) : boolean
Since v8.0.7
regexp는 text가 정규 표현식 expression과 일치하면 true를 반환합니다.
| |
시간 함수
time()
구문: time( number|string ) : time
time('now')는 현재 시각을 반환합니다.time('now -10s50ms')는 현재보다 10.05초 이전 시각을 반환합니다.time(1672531200*1000000000)은 2023년 1월 1일 오전 0시 0분 0초 시각을 반환합니다.
| |
timeYear()
구문: timeYear( time [, timezone] ) : number
Since v8.0.15
timeYear()는 time의 연도를 반환합니다.
timeMonth()
구문: timeMonth( time [, timezone] ) : number
Since v8.0.15
timeMonth()는 time의 월을 반환합니다.
timeDay()
구문: timeDay( time [, timezone] ) : number
Since v8.0.15
timeDay()는 time의 일(그달의 날짜)을 반환합니다.
timeHour()
구문: timeHour( time [, timezone] ) : number
Since v8.0.15
timeHour()는 time의 시를 [0, 23] 범위로 반환합니다.
timeMinute()
구문: timeMinute( time [, timezone] ) : number
Since v8.0.15
timeMinute()는 time의 분을 [0, 59] 범위로 반환합니다.
timeSecond()
구문: timeSecond( time ) : number
Since v8.0.15
timeSecond()는 time의 초를 [0, 59] 범위로 반환합니다.
timeNanosecond()
구문: timeNanosecond( time ) : number
Since v8.0.15
timeNanosecond()는 time의 초 미만 부분을 나노초 단위로 [0, 999999999] 범위에서 반환합니다.
timeISOYear()
구문: timeISOYear( time [, timezone] ) : number
Since v8.0.15
timeISOYear()는 time이 속한 ISO 8601 연도를 반환합니다.
timeISOWeek()
구문: timeISOWeek( time [, timezone] ) : number
Since v8.0.15
timeISOWeek()는 time이 속한 ISO 8601 주차를 반환합니다. 주차는 1부터 53까지입니다. n년 1월 1일부터 3일까지는 n-1년의 52주차나 53주차에, 12월 29일부터 31일까지는 n+1년의 1주차에 속할 수 있습니다.
한 해의 첫 번째 주는 그해의 첫 번째 목요일이 들어 있는 주이고, 마지막 주는 다음 해 첫 번째 주의 바로 앞 주입니다. 자세한 내용은 https://www.iso.org/obp/ui#iso:std:iso:8601:-1:ed-1:v1:en:term:3.1.1.23 을 참고해 주십시오.
timeYearDay()
구문: timeYearDay( time [, timezone] ) : number
Since v8.0.15
timeYearDay()는 time이 그해의 몇 번째 날인지 반환합니다. 평년은 [1,365], 윤년은 [1,366] 범위입니다.
timeWeekDay()
구문: timeWeekDay( time [, timezone] ) : number
Since v8.0.15
timeWeekDay()는 time의 요일을 반환합니다(일요일 = 0, …).
| |
timeUnix()
구문: timeUnix( time ) : number
Since v8.0.13
timeUnix는 time을 Unix 시간, 즉 1970년 1월 1일 UTC부터 경과한 초 수로 반환합니다. 결과는 time에 연결된 시간대와 관계없이 같습니다.
timeUnixMilli()
구문: timeUnixMilli( time ) : number
Since v8.0.13
timeUnixMilli는 time을 Unix 시간, 즉 1970년 1월 1일 UTC부터 경과한 밀리초 수로 반환합니다. 결과는 time에 연결된 시간대와 관계없이 같습니다.
timeUnixMicro()
구문: timeUnixMicro( time ) : number
Since v8.0.13
timeUnixMicro는 time을 Unix 시간, 즉 1970년 1월 1일 UTC부터 경과한 마이크로초 수로 반환합니다. 결과는 time에 연결된 시간대와 관계없이 같습니다.
timeUnixNano()
구문: timeUnixNano( time ) : number
Since v8.0.13
timeUnixNano는 time을 Unix 시간, 즉 1970년 1월 1일 UTC부터 경과한 나노초 수로 반환합니다. 결과는 time에 연결된 시간대와 관계없이 같습니다.
timeAdd()
구문: timeAdd( number|string|time [, timeExpression] ) : time
예
timeAdd('now', 0)은 현재 시각을 반환합니다.timeAdd('now', '-10s50ms')는 현재보다 10.05초 이전 시각을 반환합니다.timeAdd(value(0), '1m')은 value(0)이 time 값이면 value(0)보다 1분 뒤의 시각을 반환합니다.
| |
roundTime()
구문: roundTime( time, duration ) : time
Unix epoch부터 경과한 시간이 duration의 정수배가 되도록 시각을 내림합니다. duration에는 1h, 1s 같은 단위를 지정합니다.
예
roundTime(time('now'), '1h')roundTime(value(0), '1s')
parseTime()
구문: parseTime( time, format [, timezone] ) : time
timestring 시간 표현formatstring 시간 형식 표현."DEFAULT","RFC3339"같은 미리 정의된 이름이나sqlTimeformat()등을 사용할 수 있습니다.timezonetz 시간대.tz()로 원하는 지역을 지정하며, 생략하면 기본값은tz("UTC")입니다.
예
parseTime("2023-03-01 14:01:02", "DEFAULT", tz("Asia/Tokyo"))parseTime("2023-03-01 14:01:02", "DEFAULT", tz("local"))
tz()
구문: tz( name ) : timeZone
지정한 이름에 해당하는 시간대를 반환합니다.
예
tz('local')tz('UTC')tz('EST')tz("Europe/Paris")
timeformat()
구문: timeformat( format )
formatstring
| |
2023-11-30 20:50:32.123,10
2023-11-30 20:50:43.219,11| format | 출력 형식 |
|---|---|
| DEFAULT | 2006-01-02 15:04:05.999 |
| NUMERIC | 01/02 03:04:05PM ‘06 -0700 |
| ANSIC | Mon Jan _2 15:04:05 2006 |
| UNIX | Mon Jan _2 15:04:05 MST 2006 |
| RUBY | Mon Jan 02 15:04:05 -0700 2006 |
| RFC822 | 02 Jan 06 15:04 MST |
| RFC822Z | 02 Jan 06 15:04 -0700 |
| RFC850 | Monday, 02-Jan-06 15:04:05 MST |
| RFC1123 | Mon, 02 Jan 2006 15:04:05 MST |
| RFC1123Z | Mon, 02 Jan 2006 15:04:05 -0700 |
| RFC3339 | 2006-01-02T15:04:05Z07:00 |
| RFC3339NANO | 2006-01-02T15:04:05.999999999Z07:00 |
| KITCHEN | 3:04:05PM |
| STAMP | Jan _2 15:04:05 |
| STAMPMILLI | Jan _2 15:04:05.000 |
| STAMPMICRO | Jan _2 15:04:05.000000 |
| STAMPNANO | Jan _2 15:04:05.000000000 |
| s | 초 단위 Unix epoch 시간 |
| ms | 밀리초 단위 Unix epoch 시간 |
| us | 마이크로초 단위 Unix epoch 시간 |
| ns | 나노초 단위 Unix epoch 시간 |
| s_ms | 초와 밀리초(05.999) |
| s_us | 초와 마이크로초(05.999999) |
| s_ns | 초와 나노초(05.999999999) |
| s.ms | 초와 밀리초, 0으로 채움(05.000) |
| s.us | 초와 마이크로초, 0으로 채움(05.000000) |
| s.ns | 초와 나노초, 0으로 채움(05.000000000) |
sqlTimeformat()
구문: sqlTimeformat( format )
formatstring
| format | 출력 형식 |
|---|---|
| YYYY | 4자리 연도 |
| YY | 2자리 연도 |
| MM | 01~12 범위의 2자리 월 |
| DD | 01~31 범위의 2자리 일 |
| HH24 | 00~23 범위의 2자리 시 |
| HH12 | 01~12 범위의 2자리 시 |
| HH | 1~12 범위의 시(0으로 채우지 않음) |
| MI | 00~59 범위의 2자리 분 |
| SS | 0~59 범위의 2자리 초 |
| nnn… | 1~9자리 소수 초 |
| |
2023-11-30 20:50:32.123456,10
2023-11-30 20:50:43.219876,11ansiTimeformat()
구문: ansiTimeformat( format )
formatstring
| |
2023-11-30 11:50:32.123456,10
2023-11-30 11:50:43.219876,11| format | 출력 형식 |
|---|---|
| yyyy | 4자리 연도 |
| mm | 01~12 범위의 2자리 월 |
| dd | 01~31 범위의 2자리 일 |
| hh | 00~23 범위의 2자리 시 |
| nn | 00~59 범위의 2자리 분 |
| ss | 0~59 범위의 2자리 초 |
| fff… | 1~9자리 소수 초 |
수학 함수
수학 함수입니다. Since v8.0.6
시스템 아키텍처가 다르면 결과가 비트 단위까지 같다고 보장하지 않습니다.
| 함수 | 설명 |
|---|---|
abs(x) | x의 절댓값 |
acos(x) | x의 아크코사인(라디안) |
acosh(x) | x의 역쌍곡코사인 |
asin(x) | x의 아크사인(라디안) |
asinh(x) | x의 역쌍곡사인 |
atan(x) | x의 아크탄젠트(라디안) |
atanh(x) | x의 역쌍곡탄젠트 |
ceil(x) | x보다 크거나 같은 최소 정수 값 |
cos(x) | 라디안 값 x의 코사인 |
cosh(x) | x의 쌍곡코사인 |
exp(x) | e**x, 밑이 e인 x의 지수 함수 |
exp2(x) | 2**x, 밑이 2인 x의 지수 함수 |
floor(x) | x보다 작거나 같은 최대 정수 값 |
log(x) | x의 자연로그 |
log2(x) | x의 이진 로그. 특수한 경우의 동작은 log와 같습니다. |
log10(x) | x의 상용로그. 특수한 경우의 동작은 log와 같습니다. |
max(x,y) | x와 y 중 큰 값 |
min(x,y) | x와 y 중 작은 값 |
mod(x,y) | x/y의 부동소수점 나머지. 결과의 크기는 y보다 작고 부호는 x와 같습니다. |
pow(x, y) | x**y, 밑이 x인 y의 지수 함수 |
pow10(x) | 10**x, 밑이 10인 x의 지수 함수 |
remainder(x,y) | x/y의 IEEE 754 부동소수점 나머지 |
round(x) | 가장 가까운 정수. 정확히 중간이면 0에서 먼 쪽으로 반올림합니다. |
sin(x) | 라디안 값 x의 사인 |
sinh(x) | x의 쌍곡사인 |
sqrt(x) | x의 제곱근 |
tan(x) | 라디안 값 x의 탄젠트 |
tanh(x) | x의 쌍곡탄젠트 |
trunc(x) | x의 정수 부분 |
MAPVALUE에서 수학 함수를 사용하는 예입니다.
| |
random()
구문: random() : number
Since v8.0.7
random()은 반열린 구간 [0.0,1.0)에 속하는 부동소수점 의사 난수를 반환합니다.
simplex()
구문: simplex(seed, dim1 [, dim2 [, dim3 [, dim4]]]) : number
Since v8.0.7
seedint 시드 값dim1~dim4float number
simplex()는 지정한 시드와 차원 값으로 Simplex 노이즈(wikipedia)를 반환합니다. 최대 4차원까지 지정할 수 있습니다.
| |
리스트/딕셔너리
count()
구문: count( array|tuple ) : number
요소 개수를 반환합니다.
list()
구문: list(args...) : list
Since v8.0.7
list()는 args를 요소로 하는 새 튜플을 반환합니다.
dict()
구문: dict( name1, value1 [, name2, value2 ...]) : dictionary
Since v8.0.8
dict()는 namen:valuen 쌍으로 구성된 새 딕셔너리를 반환합니다.

