12P by neo 11일전 | ★ favorite | 댓글 3개

Pipe Query Syntax란?

  • GoogleSQL의 확장 문법으로, 읽기 쉽고 유지보수가 간편한 선형 구조의 쿼리 작성 가능
  • 기존 GoogleSQL(Standard SQL)과 동일한 연산 지원(선택, 그룹화, 조인, 필터링 등)
  • 연산 순서를 자유롭게 지정 가능하며, 중첩 서브쿼리 없이도 복잡한 쿼리 작성 가능

Standard SQL vs Pipe Query Syntax

  • Standard SQL
    • 특정한 구문 순서를 따라야 함
    • 다중 집계를 사용하면 CTE(Common Table Expression) 또는 중첩 서브쿼리가 필요함
    • SELECT, GROUP BY, ORDER BY에서 중복된 컬럼을 반복해야 함
  • Pipe Query Syntax
    • Pipe 연산자를 어떤 순서로든 적용 가능
    • Pipe 연산자를 추가하는 것만으로 간단하게 다중 집계 가능
    • 한 번만 컬럼을 선언하면 됨

Pipe Query Syntax 기본 구조

    1. FROM 절로 시작
    1. |> (pipe 연산자) 뒤에 연산을 추가
    1. 여러 개의 |> 연산자를 연결하여 단계적으로 쿼리를 구성
      (예: 필터링 → 집계 → 조인 순서 변경 가능)
  • 핵심 특성
    • 어떤 쿼리에도 Pipe 연산자 추가 가능 → 기존 GoogleSQL 쿼리 끝에 |> 연산자를 붙여 확장 가능
    • 연산 순서가 자유로움 → 원하는 순서대로, 원하는 횟수만큼 연산자 적용 가능
    • 모든 GoogleSQL 지원 환경에서 사용 가능 → 쿼리, 뷰, 테이블 반환 함수 등에서 활용 가능
    • 기존 SQL 문법과 혼합 사용 가능 → 서브쿼리는 표준 SQL, 메인 쿼리는 Pipe 문법으로 작성 가능
    • 이전 단계에서 정의한 모든 별칭(Alias)을 참조 가능
    • FROM 절로 시작 가능 → 이후 |> 연산자를 추가하여 점진적으로 쿼리 확장 가능

Pipe Query Syntax 와 Standard SQL 의 차이점

  • FROM 절로 쿼리 시작 가능
  • SELECT pipe 연산자는 집계를 수행하지 않음. AGGREGATE pipe 연산자를 사용하여 별도로 집계 수행
  • WHERE pipe 연산자로 필터링 수행. 표준 SQL에서의 WHERE, HAVING, QUALIFY 기능을 하나로 통합. 어느 단계에서든 필터링 가능 → 유연한 쿼리 작성 가능

Pipe Query Syntax의 장점

  • 논리적인 순서대로 쿼리 작성 가능 → 쿼리 가독성 향상
  • 유지보수 용이 → 중첩 서브쿼리 없이도 복잡한 연산 수행 가능
  • 유연한 연산 순서 → 원하는 순서대로 연산 적용 가능
  • 필터링이 더 직관적 → WHERE을 활용하여 다양한 단계에서 데이터 필터링 가능
  • 복잡한 집계 쿼리를 더 쉽게 작성 → AGGREGATE 연산자를 사용하여 명확한 집계 수행

Pre-GA 단계로 지원되는 것이며, 아직 지원은 제한적

prql을 먼저 보고 구글의 파이프라인 문법을 보니. 살짝 산만하군요.

Hacker News 의견
  • SQL의 파이프 문법이 2025년 1월 30일부터 Databricks에 구현되었음

    • 이전에는 SQL 확장이 어려웠고, 테이블 값 함수가 복잡했음
    • 이제는 고차 함수로 데이터 강화, 예측, 그룹화 등을 할 수 있게 되었음
    • 예를 들어, 특정 날짜 이후의 주문을 필터링하고, 고객별로 총 지출을 집계한 후, 특정 금액 이상인 고객을 필터링하여 고객 정보와 조인할 수 있음
    • 파이프를 사용한 반복 SQL은 GenAI와 함께 더 잘 작동할 수 있음
  • PRQL은 SQL로 컴파일되는 유사한 아이디어임

    • 예를 들어, 송장 데이터를 필터링하고, 수수료를 계산한 후, 수익이 일정 금액 이상인 데이터를 필터링할 수 있음
  • SQL 문법 확장이 계속되면 복잡성이 증가할 수 있음

    • SQL 구현자들이 외부 대체 문법을 더 잘 지원할 수 있도록 소스 맵 등에 집중했으면 좋겠음
    • 각 프로젝트나 개인이 자신에게 맞는 SQL 문법 변형을 선택할 수 있게 됨
  • 파이프 문법이 처음 발표되었을 때 SQLite 팀이 이를 시험해 보았음

    • 파이프 문자가 필수적이지 않다는 것을 발견했으며, 문법이 파이프 문자가 선택적일 때도 작동함
    • 개인적으로는 이 방식이 더 보기 좋다고 생각함
  • PRQL은 SQL DB를 위한 파이프 지향 문법으로, 새로운 언어이기 때문에 SQL과의 하위 호환성이 없음

    • Google과 같은 대기업의 지원을 받지 못하지만, 문법이 더 깔끔함
  • DuckDB에서도 사용 가능함

  • 파이프 뒤에 ">"를 입력하는 것이 번거로울 수 있음

  • Malloy 언어는 파이프 문법은 아니지만 유사한 분석적 문법을 가지고 있음

    • Looker의 공동 창립자인 Lloyd Tabb가 개발함
  • Kusto Query Language를 사용한 이후로 SQL이 이와 같은 기능을 갖추기를 기대하고 있음

    • 충분한 DB가 확장 기능으로 이를 지원하면 가능성이 있을 것임