소개
UTL-X는 다양한 데이터 형식 간의 변환을 처리하는 오픈소스 데이터 변환 언어입니다. XML, JSON, CSV, YAML, OData와 같은 형식에 관계없이 동일한 변환 로직을 적용할 수 있어 개발자와 데이터 분석가의 워크플로우를 간소화합니다. 이 언어는 기능적이고 선언적인 프로그래밍 패러다임을 기반으로 하며, 강력한 표준 라이브러리와 함께 제공됩니다.
상세정보
형식 무관 변환
XML, JSON, CSV, YAML, OData 등 Tier 1 데이터 형식과 Tier 2 스키마/메타데이터 형식(XSD, JSCH, Avro, Protobuf 등)을 모두 지원합니다. 동일한 변환 코드로 여러 형식의 입출력을 처리할 수 있습니다.
풍부한 표준 라이브러리
652개의 표준 라이브러리 함수를 제공합니다. 문자열, 배열, 수학, 날짜, XML, CSV, 인코딩, 재무 등 다양한 카테고리의 함수를 사용할 수 있습니다.
함수형 및 선언적 프로그래밍
map, filter, reduce 등의 함수형 프로그래밍 기능과 패턴 매칭을 지원하여 깔끔하고 유지보수가 용이한 변환 로직을 작성할 수 있습니다. 강력한 타입 시스템으로 컴파일 시점에 오류를 잡아줍니다.
CLI 및 인라인 표현식
jq와 유사한 CLI 인터페이스를 제공합니다. utlx -e '.name' -r과 같은 인라인 표현식으로 스크립트 파일 없이도 데이터를 추출하고 변환할 수 있습니다. 포인트(.), 점 표기법, 원시 출력 모드를 지원합니다.
Windows (Chocolatey)
Chocolatey 패키지 관리자를 사용하여 설치할 수 있습니다. 패키지 관리자 터미널에서 다음 명령어를 실행합니다.
choco install utlx
기타 플랫폼
macOS는 Homebrew, Linux는 직접 다운로드 또는 Homebrew로 설치할 수 있습니다. GitHub Releases에서 각 플랫폼별 네이티브 바이너리(macOS ARM64, Linux x64, Windows x64)를 다운로드할 수도 있습니다. 소스 빌드는 JDK 17 이상이 필요합니다.
변환 스크립트 실행
utlx transform 스크립트.utlx 입력파일.xml 형식으로 스크립트 파일을 사용하여 변환을 실행합니다. 변환 결과를 파일로 저장하려면 -o 옵션을 추가합니다.
인스턴트 형식 변환
스크립트 파일 없이도 파이프를 사용하여 형식 간 변환을 수행할 수 있습니다. 예를 들어, cat data.xml | utlx 명령은 XML을 JSON으로 자동 변환합니다. --to 옵션으로 출력 형식을 지정할 수 있습니다.
인라인 표현식 사용
-e 옵션과 함께 인라인 표현식을 사용하면 jq처럼 데이터를 추출하고 변환할 수 있습니다. 예: cat data.json | utlx -e '.items |> filter(i => i.price > 100)'
이런 경우에 유용합니다
API 통합 시 REST API 응답 형식을 변환해야 하거나, 레거시 XML 데이터를 현대적인 JSON으로 마이그레이션해야 할 때 유용합니다. ETL 파이프라인에서 어떤 형식이든 데이터를 추출하고, 변환하고, 적재할 수 있습니다. 시스템 간 메시지 변환이나 설정 파일 간 형식 변환(XML ↔ JSON ↔ YAML)에도 활용됩니다.
지원 환경·시스템 요구사항
Windows, macOS, Linux를 지원합니다. 네이티브 바이너리를 사용하면 JVM 없이도 실행 가능하며, 빌드 시에는 JDK 17 이상이 요구됩니다.
최신 버전·업데이트
현재 최신 버전은 1.3.1입니다. v1.3.1은 XML 주석으로 인한 파서 충돌을 수정한 패치 릴리스입니다. v1.3.0은 패키지 네임스페이스를 org.apache.utlx.*에서 com.glomidco.utlx.*로 마이그레이션한 브레이킹 릴리스입니다.
제한 사항·확인 사항
AGPL-3.0 라이선스로 배포됩니다. 네트워크 서비스로 제공할 경우 소스 코드 공개가 요구됩니다. 변경된 버전은 오픈 소스로 유지해야 합니다. 네이티브 바이너리 사용 시 일부 함수 호출 문제가 이전 버전에서 발생했으나 v1.2.2에서 수정되었습니다.
시스템 요구사항
JDK 17 이상이 필요합니다.


