SQL: CsvPath에서 GROUP BY 수행하기
Source: Dev.to
소개
CsvPath Framework의 표 형식 데이터 검증 언어에서 간단한 GROUP BY 보고서를 만드는 방법을 살펴보겠습니다. 예제 중 가장 쉬운 편에 속합니다!
SQL GROUP BY 개요
GROUP BY 쿼리는 행을 선택하고 하나 이상의 열을 기준으로 그룹화합니다. 전형적인 예는 다음과 같습니다:
SELECT
dept,
role,
SUM(salary) total_salary
FROM employee
GROUP BY dept, role
이 쿼리는 dept와 role의 고유 조합과 각 조합에 대한 급여 합계인 세 개의 열을 가진 결과 집합을 생성합니다.
CsvPath 예제 설정
FlightPath Data의 내장 예제를 사용합니다. 일반 프로젝트에서는 FlightPath가 유용한 예제들을 담은 examples 폴더를 생성합니다. 이번 데모에서는 examples/counting/projects.csv를 데이터 소스로 사용하고 새 CsvPath 파일을 만들겠습니다.
기본 스캐폴드
~ test-data:examples/counting/projects.csv ~
$[*][
]
~ test-data:... ~ 지시자는 FlightPath에게 어느 파일을 스캔할지 알려줍니다 (*는 전체 파일을 의미). 실제 운영 환경에서는 이 라인이 무시됩니다.
하나의 열을 사용한 간단한 GROUP BY
다음 CsvPath는 기관별 작업 시간을 집계합니다:
~ test-data:examples/counting/projects.csv ~
$[*][
subtotal.worker_hours(#agency, #13)
last() -> var_table("worker_hours")
]
subtotal.worker_hours(#agency, #13)은 헤더#13(즉#worker_hours_this_period열) 값들을 각 고유#agency값별로 소계합니다.last()는 파일의 마지막 행에만 매치됩니다. 매치되면->오른쪽에 있는 구문이 실행됩니다.var_table("worker_hours")는worker_hours변수의 텍스트 테이블을 출력합니다.
도움말 창 스크린샷
결과 테이블
이 간단한 집계에는 CsvPath 코드 두 줄만 필요합니다.
두 개의 열로 확장 (GROUP BY 다중 필드)
원래 SQL 예제처럼 dept와 role 두 컬럼으로 그룹화하려면 복합 키를 만듭니다:
~ test-data:examples/counting/projects.csv ~
$[*][
@key = concat(#agency, ", ", #neighborhood)
subtotal.Aggregate_hours(@key, #13)
last() -> var_table("Aggregate_hours")
]
@key는#agency와#neighborhood열을 연결해 각 그룹의 고유 식별자를 만듭니다.subtotal.Aggregate_hours(@key, #13)은 각 고유 키에 대해 작업 시간 값을 집계합니다.- 마지막
var_table호출은 집계 결과를 출력합니다.
전체 예제 스크린샷
결과 테이블
출력된 테이블은 사람이 읽기 쉬운 검증에 유용하고, 실제 구조화된 데이터는 vars.json 파일에 저장되어 자동화된 처리에 활용됩니다.
자동화와 보고
CsvPath는 무인 자동화를 위해 설계되었습니다. 검증 결과는 다음에 저장될 수 있습니다:
vars.json– 집계된 테이블과 같은 변수들을 보관합니다.errors.json– 내장 검증 오류를 수집합니다.error()함수를 사용해 사용자 정의 오류도 생성할 수 있습니다.
CsvPath는 출력 서브시스템을 제공하여 정보를 여러 스트림으로 분리해 전달할 수 있습니다. 이를 통해 정보 메시지, 오류 보고서, 실행별 데이터를 서로 다른 대상에게 별도로 제공할 수 있습니다.
기사 끝.



