구조화된 텍스트 계산: 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.jarraqsoftConfig.xml 설정 필수
  • 실무 팁: 복잡한 집계/필터링 작업 시 SPL 스크립트를 Java 애플리케이션에서 호출하여 성능 개선 가능