구조화된 텍스트 계산: SPL 실무
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
데이터 분석
대상자
- 개발자 및 데이터 분석가
- 난이도: 중간 (SQL 또는 Java 기초 지식 필요)
핵심 요약
- SPL은 구조화된 텍스트 파일(CSV, TSV)을 메모리 내 데이터 테이블로 로드하고 필터링, 집계, 정렬 등의 작업을 간단한 함수로 수행 가능
- JDBC 통합을 통해 Java 애플리케이션에서 SPL 스크립트를 호출할 수 있으며,
T()
,select()
,groups()
,sort()
등의 핵심 함수 사용 - SQL 대비 편의성과 Java 코드 대비 간결성 제공
섹션별 세부 요약
1. 파일 로드 및 기본 설정
import()
함수 사용:@t
옵션으로 헤더 행 처리,@c
로 CSV 파일 로드T()
함수 사용: 파일 확장자 기반 자동 로드 (예:score.txt
,score.csv
)- 예시:
A1=T("score.txt")
→score.txt
파일을 메모리 테이블로 로드
2. 필터링 및 조건 적용
select()
함수로 조건 적용:A2=A1.select(English>=90 && Gender==2)
- 동적 파라미터 사용:
A4.select(English>=? && Gender==?)
→ JDBC에서 값 전달 가능 - 결과 저장:
export()
함수로filter.txt
파일로 내보냄 (@t
옵션으로 헤더 포함)
3. 집계 및 정렬
groups()
함수로 집계 수행:A3.groups(Class,Gender; count(Name), avg(English))
sort()
함수로 정렬:A4.sort(-total, Math)
→ 총점 내림차순, 수학점 오름차순- SQL 대응:
```sql
SELECT Class, Gender, COUNT(*) AS cnt, ROUND(AVG(English), 2) AS engAvg
FROM score
GROUP BY Class, Gender
```
4. Java 통합 및 JDBC 사용
- JDBC 연결:
jdbc:esproc:local://
URL 사용,InternalDriver
클래스 로딩 - SPL 스크립트 호출:
```java
PreparedStatement ps = con.prepareCall("call scoreCalc()");
ps.execute();
```
- 결과 반환:
ResultSet
객체로 테이블 시퀀스, 단일 값, 다중 값 반환 가능
5. 계산 필드 추가 및 정렬 확장
new()
함수로 새로운 계산 필드 정의:
```spl
A5.new(Gender, Name, total=English+Chinese+Math, avg=total/3)
```
- 문자 및 날짜 필드 정렬:
sort(Name)
→ 문자 비교 기반 정렬
결론
- SPL은 구조화된 텍스트 데이터 처리에 SQL과 Java 대비 간편한 API 제공
- 핵심 함수:
T()
,select()
,groups()
,sort()
활용 - JDBC 통합 시:
esproc-bin-xxxx.jar
및raqsoftConfig.xml
설정 필수 - 실무 팁: 복잡한 집계/필터링 작업 시 SPL 스크립트를 Java 애플리케이션에서 호출하여 성능 개선 가능