LUVIT♥ EPL과 유튜브 데이터로 배우는 DuckDB | 이기준
DuckDB를 활용한 SQL 기반 데이터 분석 입문서다. SQL 기초부터 고급 활용, 파이썬 연동, 데이터 시각화와 대시보드 제작까지 단계적으로 학습할 수 있다. EPL 데이터, 유튜브 트렌드, 「케이팝 데몬
www.aladin.co.kr
문자열 슬라이싱 (String Slicing)
SQL 애호가라 하더라도 SQL이 최신 프로그래밍 언어들로부터 배울 점이 있다는 사실은 인정할 수밖에 없다. DuckDB에서는 길고 복잡한 SUBSTRING 함수를 사용하는 대신, 대괄호 문법을 사용하여 문자열을 슬라이싱할 수 있다.
참고로 SQL은 1부터 시작하는 인덱스(1-indexed)를 사용하도록 정의되어 있기 때문에, 이는 대부분의 프로그래밍 언어와는 약간 다르다. 하지만 DuckDB 내부에서는 일관성을 유지하며 다른 데이터베이스들과도 유사한 동작을 제공한다.
SELECT 'I love you! I know'[:-3] AS nearly_soloed;
결과:
nearly_soloed
I love you! I k
간단한 LIST와 STRUCT 생성
DuckDB는 전통적인 관계형 모델보다 더욱 유연한 데이터 구조를 지원하기 위해 중첩 타입(Nested Type)을 제공한다. 동시에 높은 성능도 유지한다.
이를 쉽게 사용할 수 있도록 LIST(배열)와 STRUCT(객체)를 다른 SQL 시스템보다 간단한 문법으로 생성할 수 있으며, 데이터 타입은 자동으로 추론된다.
SELECT
['A-Wing', 'B-Wing', 'X-Wing', 'Y-Wing'] AS starfighter_list,
{
name: 'Star Destroyer',
common_misconceptions: 'Can''t in fact destroy a star'
} AS star_destroyer_facts;
LIST 슬라이싱
대괄호 문법은 LIST를 슬라이싱할 때도 사용할 수 있다. 여기서도 SQL 호환성을 위해 1부터 시작하는 인덱스를 사용한다.
SELECT
starfighter_list[2:2] AS dont_forget_the_b_wing
FROM (
SELECT ['A-Wing', 'B-Wing', 'X-Wing', 'Y-Wing'] AS starfighter_list
);
결과:
dont_forget_the_b_wing
[B-Wing]
STRUCT 점 표기법 (Dot Notation)
DuckDB의 STRUCT 컬럼에서는 점(.) 표기법을 사용하여 특정 키의 값에 편리하게 접근할 수 있다. 키 이름에 공백이 포함된 경우에는 큰따옴표를 사용할 수 있다.
SELECT
planet.name,
planet."Amount of sand"
FROM (
SELECT {
name: 'Tatooine',
'Amount of sand': 'High'
} AS planet
);
후행 쉼표 (Trailing Commas)
SELECT 문의 마지막 컬럼을 삭제한 뒤 오류가 발생하여 확인해 보니 마지막 쉼표까지 함께 삭제해야 했던 경험이 있는가?
없다고? 그렇다면 당신은 진정한 제다이일지도 모른다.
좀 더 진지하게 말하자면, 이 기능은 DuckDB가 커뮤니티의 의견에 얼마나 빠르게 반응하는지를 보여주는 사례이다. DuckDB와 직접 관련도 없는 트윗에서 이 문제가 언급된 후 불과 2일도 채 되지 않아 기능이 구현되고, 테스트를 거쳐, 메인 브랜치에 병합되었다.
이제 DuckDB에서는 쿼리의 여러 위치에서 후행 쉼표를 사용할 수 있다. 사소하지만 짜증 나는 오류를 줄이는 데 도움이 되기를 바란다.
SELECT
x_wing,
proton_torpedoes,
--targeting_computer
FROM luke_whats_wrong
GROUP BY
x_wing,
proton_torpedoes,
;
이처럼 마지막 항목 뒤에 쉼표가 남아 있어도 DuckDB는 이를 허용한다. 작은 기능처럼 보일 수 있지만, 컬럼을 자주 추가하고 제거하는 분석용 SQL에서는 의외로 생산성을 높여주는 편의 기능이다.
'EPL과 유튜브 데이터로 배우는 DuckDB' 카테고리의 다른 글
| DuckDB와 AI로 대용량 데이터셋 분석하기: 초보자 가이드 (0) | 2026.06.07 |
|---|---|
| DuckDB: 2026년 데이터 분석가들이 가장 과소평가하는 도구 (0) | 2026.06.07 |
| DuckDB의 더 친숙한 SQL - Part 2 (0) | 2026.06.05 |
| DuckDB의 더 친숙한 SQL - Part 1 (0) | 2026.06.04 |
| 2026년에 실제로 활용하게 될 DuckDB 확장 기능 (0) | 2026.06.03 |
댓글