SQL: CsvPath에서 GROUP BY 수행하기

발행: (2025년 12월 4일 오전 10:28 GMT+9)
5 min read
원문: Dev.to

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

이 쿼리는 deptrole의 고유 조합과 각 조합에 대한 급여 합계인 세 개의 열을 가진 결과 집합을 생성합니다.

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 변수의 텍스트 테이블을 출력합니다.

도움말 창 스크린샷

FlightPath Data 도움말 창

결과 테이블

CsvPath를 사용한 CSV 파일 검증 보고서

이 간단한 집계에는 CsvPath 코드 두 줄만 필요합니다.

두 개의 열로 확장 (GROUP BY 다중 필드)

원래 SQL 예제처럼 deptrole 두 컬럼으로 그룹화하려면 복합 키를 만듭니다:

~ 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 호출은 집계 결과를 출력합니다.

전체 예제 스크린샷

CSV 파일 검증을 위한 전체 CsvPath 예제

결과 테이블

CsvPath가 CSV 파일에 대해 출력한 검증 보고서

출력된 테이블은 사람이 읽기 쉬운 검증에 유용하고, 실제 구조화된 데이터는 vars.json 파일에 저장되어 자동화된 처리에 활용됩니다.

자동화와 보고

CsvPath는 무인 자동화를 위해 설계되었습니다. 검증 결과는 다음에 저장될 수 있습니다:

  • vars.json – 집계된 테이블과 같은 변수들을 보관합니다.
  • errors.json – 내장 검증 오류를 수집합니다. error() 함수를 사용해 사용자 정의 오류도 생성할 수 있습니다.

CsvPath는 출력 서브시스템을 제공하여 정보를 여러 스트림으로 분리해 전달할 수 있습니다. 이를 통해 정보 메시지, 오류 보고서, 실행별 데이터를 서로 다른 대상에게 별도로 제공할 수 있습니다.


기사 끝.

Back to Blog

관련 글

더 보기 »

생성12

DBVisualizer에서 지난 45일간 추가된 행 수를 세는 T-SQL 스크립트

create10

sql SELECT utc.table_name, xt.rows_last_45_days FROM SELECT table_name FROM user_tab_columns WHERE UPPERcolumn_name = 'INTERNTIMESTAMP' AND data_type LIKE 'TIME...'

2단계

번역할 텍스트를 제공해 주시겠어요?