주요 컨텐츠로 이동
Engineering blog

측면 열 별칭(Lateral Column Alias) 기능을 소개합니다

쿼리를 간소화하는 새로운 SQL 기능
Xinyi Yu
Wenchen Fan
Gengliang Wang
이 포스트 공유하기

(번역: Seungdon Choi) Original Blog Post

Apache Spark와 데이터브릭스에 새로운 SQL 기능을 지원하게 되어 기쁘게 생각합니다: 측면 열 별칭(LCA)입니다. 이 기능은 사용자가 동일한 SELECT 목록에서 이전에 지정된 표현식을 재사용할 수 있게 함으로써 복잡한 SQL 쿼리를 간소화하여 많은 경우 중첩된 하위 쿼리와 공통 테이블 표현식(CTE)을 사용할 필요가 없게 해줍니다. 이 블로그 게시물에서는 이 기능의 사용 사례와 이 기능이 Spark 및 데이터브릭스 사용자에게 가져다주는 이점에 대해 설명합니다.

측면 열 별칭 지원이란?

측면 열 별칭(LCA)은 사용자가 동일한 SELECT 목록 내에서 이전에 지정한 표현식을 재사용할 수 있는 기능을 제공합니다.
이 기능은 아래 제공된 예제를 통해 더 잘 이해할 수 있습니다. 다음은 간단한 쿼리입니다:

LCA가 지원되지 않는 경우 이 쿼리에서 사용자에게 SELECT 목록의 후자 a를 확인할 수 없다는 오류가 표시됩니다:

 

[UNRESOLVED_COLUMN.WITHOUT_SUGGESTION] A column or function parameter with name `a` cannot be resolved. ; line 1 pos 15;

 

다행히 LCA 기능을 사용하면 쿼리의 두 번째 a가 동일한 SELECT 목록에서 이전에 정의된 별칭인 1 AS a로 성공적으로 식별됩니다. 사용자에게 더 이상 오류가 표시되지 않고 다음과 같은 결과가 표시됩니다:

LCA 체인으로 복잡한 하위 쿼리 및 CTE 제거

앞의 예는 LCA의 기본 개념을 보여 주었지만, 이 기능의 진정한 힘은 복잡한 하위 쿼리와 CTE를 제거할 수 있는 기능에 있습니다.

LCA가 도입되기 전에는 사용자가 이전 별칭으로 정의된 속성을 참조하려고 할 때 여러 개의 하위 쿼리와 CTE를 처리해야 했습니다. 이로 인해 SQL 쿼리의 복잡성과 장황함이 증가하여 읽기, 쓰기 및 유지 관리가 어려웠습니다. 이와는 대조적으로, LCA 지원은 이러한 쿼리를 근본적으로 단순화하여 사용자 친화적이고 관리하기 쉽게 만듭니다.

예를 들어 보겠습니다. 이름, 카테고리, 가격, 고객 평점 등의 제품 정보를 저장하는 제품 테이블이 있다고 가정해 보겠습니다. 우리의 목표는 여러 가지 영향 요인을 기반으로 조정된 가격을 계산하는 것입니다. 이 시나리오는 LCA가 어떻게 복잡한 쿼리를 상당히 단순화된 버전으로 바꿀 수 있는지 명확하게 설명합니다.

다음은 테이블 구조입니다:

제품에 대한 사용자의 평가에 따른 가격 인상률과 카테고리 내 제품의 순위에 따른 가격 인상률 중 더 큰 값을 기준으로 각 제품의 조정된 가격을 계산하고 싶습니다. LCA가 지원되지 않는 경우 쿼리는 다음과 같이 표시됩니다: