TQL 한눈에 보기
Machbase Neo는 Transforming Query Language(TQL)와 이를 실행할 수 있는 API를 제공합니다.
일반적인 애플리케이션 개발 과정에서는 데이터베이스에서 조회한 테이블 형태의 결과를 원하는 데이터 구조로 변환하고, 가공한 뒤 JSON·CSV·차트 등으로 출력합니다.
TQL을 사용하면 이러한 과정을 몇 줄의 스크립트로 간단히 처리할 수 있으며, 작성한 TQL은 HTTP 엔드포인트로 노출해 API처럼 호출할 수도 있습니다.
TQL이란?
TQL(Transforming Query Language)은 데이터 변환을 위한 DSL입니다.
데이터 스트림의 흐름을 정의하며, 각 데이터 단위(레코드)는 key와 value로 구성됩니다.
- key : 보통 자동 증가하는 정수(쿼리 결과의 ROWNUM과 유사)
- value : 실제 데이터를 담고 있는 튜플
TQL 스크립트는 데이터를 가져오는 SRC 함수로 시작하고, 변환 결과를 출력하는 SINK 함수로 끝납니다.
중간에는 필요한 만큼 MAP 함수를 삽입해 데이터를 원하는 형태로 변형할 수 있습니다.
SRC
SQL()
: Machbase Neo 또는 브리지로 연결한 외부 DB에 SQL을 실행해 레코드를 생성FAKE()
: 테스트용 가상 데이터 생성CSV()
: CSV 파일 읽기BYTES()
: 파일 시스템/HTTP 요청/MQTT 페이로드에서 바이너리 데이터 읽기
SINK
INSERT()
: 레코드를 Machbase Neo 테이블에 기록CHART()
: 레코드를 차트로 렌더링JSON()
,CSV()
: 데이터를 각각 JSON/CSV 형식으로 인코딩
MAP
MAP 함수는 데이터를 다른 형태로 바꾸는 핵심 도구입니다.
수학 연산, 문자열 처리, 형식 변환, 외부 시스템 연동 등을 수행할 수 있습니다.
TQL 실행
웹 UI 접속
브라우저에서 http://127.0.0.1:5654/
로 접속한 뒤 계정(sys
/ manager
)으로 로그인해 주십시오.
새 TQL 만들기
상단 “New…” 페이지에서 “TQL”을 선택해 주십시오.

예제 코드 실행
샘플 TQL 코드를 에디터에 붙여넣고, 좌측 상단의 ▶︎ 아이콘을 클릭해 주십시오.
아래 예시는 주파수 1.5Hz, 진폭 1.0인 파형을 차트로 출력합니다.
FAKE( oscillator(freq(1.5, 1.0), range('now', '3s', '10ms')) )
CHART_SCATTER()

FAKE( oscillator(freq(1.5, 1.0), range('now', '3s', '10ms')) )
CHART_LINE()

FAKE( oscillator(freq(1.5, 1.0), range('now', '3s', '10ms')) )
CHART_BAR()

다양한 출력 형식
- CSV : 스프레드시트 등 CSV 파일을 읽는 도구와 연동하기에 좋습니다.
- JSON : 웹 애플리케이션·API와 연계하기 쉽게 구조화되어 있습니다.
TQL로 간단히 포맷을 변경할 수 있습니다.
FAKE( oscillator(freq(1.5, 1.0), range('now', '3s', '10ms')) )
JSON()

FAKE( oscillator(freq(1.5, 1.0), range('now', '3s', '10ms')) )
JSON(transpose(true))

FAKE( oscillator(freq(1.5, 1.0), range('now', '3s', '10ms')) )
CSV()

FAKE( oscillator(freq(1.5, 1.0), range('now', '3s', '10ms')) )
MARKDOWN()

FAKE( oscillator(freq(1.5, 1.0), range('now', '3s', '10ms')) )
MARKDOWN(html(true))

API로 활용하기
상단 우측 저장 아이콘을 눌러 코드를 hello.tql
로 저장해 주십시오.
이후 http://127.0.0.1:5654/db/tql/hello.tql로 접근하거나, curl
로 호출해 데이터를 받을 수 있습니다.
아이콘 | 설명 |
---|---|
![]() | 스크립트를 저장하면 우측 상단에 링크 아이콘이 표시됩니다. 클릭하면 스크립트 주소를 복사할 수 있습니다. |
curl -o - http://127.0.0.1:5654/db/tql/hello.tql
$ curl -o - -v http://127.0.0.1:5654/db/tql/hello.tql
...
< HTTP/1.1 200 OK
< Content-Type: text/csv
<
1686787739025518000,-0.238191
1686787739035518000,-0.328532
...
JSON()으로 변경
CSV()
를 JSON()
으로 바꾼 뒤 저장하고 다시 호출하면 JSON 형식으로 결과를 받을 수 있습니다.
curl -o - http://127.0.0.1:5654/db/tql/hello.tql