SINK
모든 tql 스크립트는 반드시 하나의 싱크(SINK) 함수로 끝나야 합니다.
기본적으로 INSERT()
를 사용해 Machbase Neo 데이터베이스에 레코드를 저장할 수 있으며, CHART()
는 입력 레코드를 다양한 차트로 렌더링합니다. JSON()
과 CSV()
는 데이터를 각각 JSON·CSV 형식으로 출력합니다.
INSERT()
구문: INSERT( [bridge(),] columns..., table() [, tag()] )
INSERT()
는 들어오는 각 레코드를 지정한 테이블에 INSERT
문으로 저장합니다.
bridge()
bridge(’name’): 선택 옵션입니다.columns
string: 컬럼 이름 목록입니다.table()
table(’name’): 대상 테이블을 지정합니다.tag()
tag(’name’): 선택 옵션으로, 태그 테이블에만 사용할 수 있습니다.
태그 이름을 포함한 레코드를 Machbase에 기록합니다.
|
|
PUSHVALUE()
로 name
필드를 추가해 동일한 태그 이름으로 기록합니다.
|
|
대상 테이블이 태그 테이블이라면 tag()
옵션으로 태그 이름을 지정할 수 있습니다.
|
|
브리지를 통해 외부 데이터베이스에 삽입할 수도 있습니다.
|
|
APPEND()
구문: APPEND( table() )
APPEND()
는 Machbase Neo의 append 메서드를 사용해 레코드를 저장합니다.
table()
table(string): 대상 테이블을 지정합니다.
|
|
CSV()
구문: CSV( [tz(), timeformat(), precision(), rownum(), heading(), delimiter(), nullValue() ] )
레코드를 CSV 형식으로 출력합니다. 각 레코드의 값이 CSV 행의 필드가 되며, 두 개의 연속 개행(\n\n
)을 데이터 종료로 인식합니다.
예를 들어 레코드가 {key: k, value:[v1,v2]}
라면 결과는 v1,v2
입니다.
tz
tz(name): 타임존, 기본값tz('UTC')
timeformat
timeformat(string):DATETIME
출력 형식, 기본값timeformat('ns')
rownum
rownum(boolean): 행 번호 컬럼 추가precision
precision(int): 부동소수점 정밀도.precision(-1)
은 제한 없음,precision(0)
은 정수로 변환heading
heading(boolean): 첫 행에 컬럼 이름 포함delimiter
delimiter(string): 구분자 지정(기본값,
)nullValue()
:NULL
값을 대체할 문자열(기본값nullValue('NULL')
) Since v8.0.14substituteNull
substitute(string): 이전 버전 옵션(현재는nullValue()
사용)cache()
: 결과 데이터를 캐시합니다. Since v8.0.43
|
|
1,10
2,20
3,30
|
|
x,x10
1,10
2,20
3,30
|
|
x|x10
1|10
2|20
3|30
|
|
A|123
B|***
C|234
JSON()
구문: JSON( [transpose(), tz(), timeformat(), precision(), rownum(), rowsFlatten(), rowsArray() ] )
레코드를 JSON 형식으로 변환합니다.
transpose
transpose(boolean): 행과 열을 전치합니다. 많은 차트 라이브러리에서transpose(true)
가 유용합니다.tz
tz(name): 타임존, 기본값tz('UTC')
timeformat
timeformat(string):DATETIME
출력 형식, 기본값timeformat('ns')
rownum
rownum(boolean): 행 번호 컬럼 추가precision
precision(int): 부동소수점 정밀도.precision(-1)
은 제한 없음,precision(0)
은 정수로 변환rowsFlatten
rowsFlatten(boolean):rows
배열의 차원을 1단계 줄입니다.transpose(true)
와 함께 사용하면rowsFlatten(true)
는 무시됩니다. Since v8.0.12rowsArray
rowsArray(boolean): 각 레코드를 객체 배열로 반환합니다.transpose(true)
및rowsFlatten(true)
보다 우선합니다. Since v8.0.12cache()
: 결과 데이터를 캐시합니다. Since v8.0.43
|
|
{
"data": {
"columns": [ "x" ],
"types": [ "double" ],
"rows": [ [ 1, 10 ], [ 2, 20 ], [ 3, 30 ] ]
},
"success": true,
"reason": "success",
"elapse": "228.541µs"
}
|
|
{
"data": {
"columns": [ "x", "x10" ],
"types": [ "double", "double" ],
"cols": [ [ 1, 2, 3 ], [ 10, 20, 30 ] ]
},
"success": true,
"reason": "success",
"elapse": "183.542µs"
}
|
|
{
"data": {
"columns": [ "x", "x10" ],
"types": [ "double", "double" ],
"rows": [ 1, 10, 2, 20, 3, 30 ]
},
"success": true,
"reason": "success",
"elapse": "189.417µs"
}
|
|
{
"data": {
"columns": [ "x", "x10" ],
"types": [ "double", "double" ],
"rows": [ { "x": 1, "x10": 10 }, { "x": 2, "x10": 20 }, { "x": 3, "x10": 30 } ]
},
"success": true,
"reason": "success",
"elapse": "197.201µs"
}
NDJSON()
구문: NDJSON( [tz(), timeformat(), rownum()] )
Since v8.0.33
레코드를 NDJSON(Newline Delimited JSON) 형식으로 변환합니다. NDJSON은 한 줄당 하나의 JSON 객체를 포함하므로 대용량 데이터나 스트리밍 처리에 유리합니다. 데이터의 끝은 두 개의 연속 개행(\n\n
)으로 표시됩니다.
tz
tz(name): 타임존, 기본값tz('UTC')
timeformat
timeformat(string):DATETIME
출력 형식, 기본값timeformat('ns')
rownum
rownum(boolean): 행 번호 컬럼 추가cache()
: 결과 데이터를 캐시합니다. Since v8.0.43
|
|
{"NAME":"neo_load1","ROWNUM":1,"TIME":"2024-09-06 14:46:19.852","VALUE":4.58}
{"NAME":"neo_load1","ROWNUM":2,"TIME":"2024-09-06 14:46:22.853","VALUE":4.69}
{"NAME":"neo_load1","ROWNUM":3,"TIME":"2024-09-06 14:46:25.852","VALUE":4.69}
MARKDOWN()
테이블을 마크다운 또는 HTML 형태로 생성합니다.
구문: MARKDOWN( [ options... ] )
tz(string)
타임존, 기본값tz('UTC')
timeformat(string)
DATETIME
출력 형식, 기본값timeformat('ns')
html(boolean)
HTML 렌더러로 출력 여부(기본값false
)rownum(boolean)
행 번호 컬럼 표시precision
precision(int): 부동소수점 정밀도.precision(-1)
은 제한 없음,precision(0)
은 정수로 변환brief(boolean)
결과 행 생략 여부.brief(true)
는briefCount(5)
와 동일briefCount(limit int)
레코드 수가 제한을 넘으면 행을 생략합니다(0이면 생략 없음)
|
|
|column0 | column1 |
|:-------|:---------|
| 10 | The first line |
| 20 | 2nd line |
| 30 | Third line |
| 40 | 4th line |
| 50 | The last is 5th |
|
|
|column0 | column1 |
|:-------|:---------|
| 10 | The first line |
| 20 | 2nd line |
| ... | ... |
> Total 5 records
|
|
column0 | column1 |
---|---|
10 | The first line |
20 | 2nd line |
… | … |
Total 5 records
HTML()
구문: HTML(templates...)
Since v8.0.52
제공한 템플릿을 활용해 HTML 문서를 생성합니다. 자세한 예시는 HTML 문서를 참고해 주십시오.
TEXT()
구문: TEXT(templates...)
Since v8.0.52
제공한 템플릿을 활용해 텍스트 문서를 생성합니다. 데이터에 HTML 이스케이프를 적용하지 않는다는 점만 HTML()
과 다릅니다.
DISCARD()
구문: DISCARD()
Since v8.0.7
DISCARD()
는 이름처럼 모든 레코드를 조용히 무시하므로 어떠한 출력도 생성하지 않습니다.
|
|