이번 회차는 SQL 쿼리를 잘 작성하는 방법과 쿼리 템플릿을 만드는 방법에 대한 강의!
나에게 정말 필요했던 강의라는 생각이 들었다. 현업 노하우가 담긴 강의란 생각 -
요즘 내가 느끼는 건 템플릿화를 하면 업무 효율도 측면에서 좋다는 점,
특히 분석을 하는 입장에서 스스로 지표에 대한 정의나 쿼리 로직을 규칙화해두는 것이
업무 효율도 측면에서 좋다는 것을 최근에 깨닫게 되었다.
추출 목적 / 조건 / 히스토리 들을 남겨서 잘 관리하는 게 중요하다.
업무를 하면서 공부도 하고 일석이조의 단계라고 생각한다.
당장은 귀찮을 지 몰라도 정리해 두면 나를 위해서 요긴하게 활용될 때가 있다.
📌 쿼리를 작성하는 흐름
강의를 듣다가 보니 3단계로 나눌 수 있을 것 같다는 생각에 나눠보았다.
크게 추출을 하기 위한 기획 > 실행 > 운영 단계로 생각하면 될 것 같다.
기획은 추출을 잘 하기 위한 사전 단계로
이 단계에 고민을 많이 하고 방향성을 잘 잡는 게 중요하다고 생각한다.
STEP 1. 기획 단계
1️⃣ 지표 고민 - 어떤 문제를 해결하기 위해 데이터가 필요한가
어떤 분석 문제를 풀거고 목적이 명확해야 한다.
2️⃣ 지표 구체화 - 추상적이지 않고 구체적인 지표 명시(분자, 분모 표시)
✏️ 가장 핵심 Point : 분모, 분자를 표시해 지표 이름을 구체적으로 작성해 정의하면
상대방으로 하여금 헷갈리지 않게 하고 공통된 시각으로 지표를 바라볼 수 있다.
현업을 하면서 가장 느낀점이 이 지표에 대한 정의이고 이를 구체화하는 작업이 필요하다는 것이다.
어려운 과정이지만 꼭 필수적인 과정이라고 생각한다. 지표는 정답이 아닌 해답의 영역인 것 같다.
3️⃣ 지표 탐색 - 유사한 문제를 해결한 케이스가 있나 확인
- 있을 경우 : 해당 쿼리 리뷰
- 구글링 / GPT 를 활용해 신규 쿼리를 작성하기
✏️ 굳이 처음부터 쿼리를 짜려고 하지 않아도 된다. 쿼리 리뷰를 해서 활용하는 것이 좋은 방법!
나의 경우에는 그냥 짜보고자 했는 데 이게 오히려 업무의 비효율성을 높이는 절차라 생각한다.
STEP 2. 실행 단계
4️⃣ 쿼리 작성 - 데이터가 있는 테이블 찾기 (ERD 참고를 통해 데이터 탐색)
- 1개 테이블 활용한다면 그냥 활용
- 2개 이상이라면 연결 방법 고민(JOIN)
✏️ 여기서 컬럼을 단계적으로 추출하는 게 필요하다. 한번에 추출하고자 하면 어려움이 있다.
최근에 내가 한번에 테이블을 뽑으려고 하다 보니 복잡해졌고, 쉬운 문제를 오히려 어렵게 풀게 되었던 것 같다.
STEP 3. 더블체크 및 운영 단계
5️⃣ 데이터 정합성 확인 - 예상한 결과와 동일한 지 확인
6️⃣ 쿼리 가독성 - 나중을 위해 깔끔하게 쿼리 작성
7️⃣ 쿼리 저장 - 쿼리는 재사용되므로 문서로 저장
✏️ 템플릿화를 해두면 반복해서 사용하게 되고 다른 사람들도 활용할 수 있게 된다.
그리고 나중의 나를 위해서 템플릿으로 잘 정리해두면 이후 업무 효율성을 높여준다.
📌 쿼리 작성 템플릿
| 쿼리를 작성하는 목표 | 쿼리를 통해 어떤 것을 할 지 / 어떤 분석을 할 지 작성 |
| 쿼리에서 확인할 지표와 정의 | 어떤 지표를 추출하고 싶은 지 / 왜 필요한 지 정리 |
| 쿼리 계산 방법 | 정의에 따라 분자, 분모를 표기하기 |
| 데이터 기간 | 데이터 많을 수록 비용과 속도 측면에서 비효율적이기에 기간 명시 중요 |
| 사용할 테이블 | 단일 테이블, 2가지 이상 테이블일 때 어떤 값들이 있는 테이블인 지 간단 명시 |
| Join Key | 2가지 이상 테이블 활용 시 연결할 수 있는 컬럼값 명시 |
| 데이터 특징 | 데이터 컬럼 히스토리 아카이빙 / 체크 포인트로 기록 |
➡️ 이 절차 이후에 SELECT FROM WHERE 로 작성하면 쿼리 작성이 수월하다.
템플릿 사용하는 것을 까먹게 되고 귀찮고 불편, 습관형성이 되지 않고 빠르게 해야 할 땐 비효율적이라고 생각할 수 있다.
➡️ 이걸 해결 및 개선하기 위해 생산성 도구를 활용하기!
1. 생산성 도구 : Espanso
Espanso - A Privacy-first, Cross-platform Text Expander
No more copy and pasting, create templates once and let Espanso do the rest for you. Customer support replies, sales pitches, medical reports, you name it. Espanso got you covered.
espanso.org
- 윈도우10, Mac, Linux 모두 사용 가능한 프로그램(무료)
- 특정 단어를 입력하면 원하는 문장(템플릿)으로 변경
☑️ 회고 템플릿, 리뷰 템플릿 등 다양하게 커스터마이징해서 활용 가능
✅ Espanso 핵심 로직
특정 단어가 감지되면 정의된 것으로 바꾼다.
STEP 1. Espanso 경로 확인해 수정 파일 접근하기

STEP 2. espanso edit, 터미널에 입력해 base.yml 파일 수정하여 템플릿화 준비

matches 의 값이 특정 값을 입력하면 템플릿화를 해주는 것!
STEP 3. sql 입력시 트리거로 작동될 수 있도록 명령어 변경

| 표현은 열어졌을 때 쓴다는 표현이어서 함께 표기하는 것!
STEP 4. 수정된 내용 적용될 수 있도록 Reload config

매번 까먹을 수 있는 부분을 주석 처리가 가능하게끔 해서 처리할 수 있는 게 Point 인 것 같다.
현업에서 파트 사람들과 얘기해서 적용해볼 수 있도록 해야겠다.
📌 오류를 디버깅하는 방법
오류 메시지가 알려주고자 하는 것
- 현재 작성한 방식으로 하면 답을 얻을 수 없다는 길잡이 역할
- 문제가 되는 부분의 진단
오류가 발생되면 더 좋은 길로 나아가게 하려고 생각하기
오류 메시지를 보면서 의미를 파악하고 해결하는 절차로 생각하기

밑줄 앞뒤 쪽에 오류가 난 것으로 생각하면 됨
✅ 챗 GPT 와 해결하는 것도 방법!
데이터 예시나 쿼리를 제공하고 오류가 발생한 것을 말해보기 > 그 후 또 다른 시도 후 오류 발생 말해주기를 통해 학습
예시 1. 그룹화가 되지 않았을 때의 에러

✅ [8:1] 과 같이 명확하게 명시될 경우, [줄, 칸]으로 해석하면 된다.
✅ 참고 : BigQuery 가이드북 문서를 통해 많은 오류 해결 방법 확인하기
➡️ https://zzsza.github.io/bigquery/error.html
BigQuery 오류 모음 | BigQuery Guide Book - 빅쿼리 가이드북
BigQuery 오류 모음 여러 오류와 해결 방법을 기록해둡니다. Cannot query over table 'project.dataset.table' without a filter over column(s) 'date_kr' that can be used for partition elimination 해당 테이블에 date_kr라는 필터가
zzsza.github.io
✏️ 핵심 Point : 오류 발생되면 오류 메시지와 함께 오류 발생, 이를 번역하고 해석해서 검색 후 해결하는 방법으로 진행하자
✏️ 이번 강의와 학습을 통해 느낀점
✅ 템플릿화를 통해 이후 업무 효율성과 공유 활성화를 위해 꼭 현업에서 해야 하는 부분이다.
✅ 조건 및 테이블을 잘 정리해두면 이후 분석 및 추출 건에 활용할 수 있다. 반드시 그때그때 진행하자.
💪🏻 Next to do
☑️ 실제 현업 데이터에서 단계별 추출 진행 시 템플릿 활용해보기
☑️ 쿼리 추출 로직에 대한 히스토리 기록으로 남겨두기
☑️ 오류에 대한 히스토리 체크 후 아카이빙
➡️ 이 모든 것을 귀찮음의 과정이 아닌 배움의 기록 과정으로 생각하기!
'Google BigQuery' 카테고리의 다른 글
| [강의 수강 10일차] 시간 데이터 연습 문제 풀기 (0) | 2025.05.30 |
|---|---|
| [강의 수강 8일차] 데이터 탐색 - 변환 (1) 데이터 타입의 이해 / 문자열 함수 (0) | 2025.05.28 |
| [강의 수강 6일차] SELECT절 연습 문제 풀어보기 (3) (0) | 2025.05.21 |
| [강의 수강 5일차] SELECT절 연습 문제 풀어보기 (2) (0) | 2025.05.18 |
| [강의 수강 4일차] SELECT절 연습 문제 풀어보기 (1) (0) | 2025.05.14 |