일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 전환분석
- aha-moment
- data-analysis
- 데이터디스커버리플랫폼
- productanalysis
- 야구
- 데이터분석
- 프롬프트
- 트위먼의법칙
- pandasai
- EDA
- retentioneering
- 주가데이터
- 아하모먼트
- 벅슨의역설
- 신기효과
- gapminder
- PyGWalker
- 시각화
- 데이터분석가
- 성장
- n8n
- 인과추론
- 분석한스푼
- DataAnalyst
- DataAnalysis
- data
- 데이터
- 글또
- 프롬프트엔지니어링
데이터 생존 로그
GPT한테 SQL 쿼리 짜달라고 하기 본문
데이터 분석가와 SQL 쿼리는 떼려해야 뗄 수 없는 관계라 생각한다.
반복적이고 간단한 쿼리를 짜며 고통받을 때도 있지만, 데이터를 봐야하는 입장에서 꼭 선행되어야 하는 작업이기 때문이다.
해당 게시글에서는 SQL 쿼리를 짜는 GPT를 만들어서 간단한 쿼리를 짤 수 있는지 테스트하는 과정을 담아보고자 한다!
그 중, Redshift의 쿼리를 만들어주는 GPT를 만들어보려한다.
나만의 GPT를 만들기 위해 필요한 준비물은 (20달러/월)이다. (GPT 플러스)
바로 시작해보자!
시작하기
GPT에 접속한 후, 우측 상단 +Create 버튼을 클릭하면
GPT Builder가 말을 건다. (GPT를 저 Builder와 대화하면서 만들어가는 것 같다.)
그리고 Configure를 클릭하면 유저가 직접 항목들을 설정해가며 만들 수 있도록 구성되어있다.
항목은 아래 7가지가 존재한다!
Name, Description, Instructions, Conversation starters, Knowledge, Capabilities, Actions
위 7가지 항목을 하나씩 채워보자!
Name, Description - 이름이랑 설명 만들어주기
Name은 'Redshift 쿼리 천재'로 만들어주었다.
Description은 'Redshift 쿼리를 잘 만들어줍니다.'로 설정했다.
별로 중요해보이지 않으니, 목적에 맞는 이름을 설정해주고 패스!
Conversation starters - 예시 질문 만들어주기
예시 질문을 담아두는 항목이다.
최대 4가지를 넣어줄 수 있다.
'일자별로 유입, 회원가입, 장바구니, 구매의 퍼널을 볼 수 있는 쿼리를 만들어줘'라는 예시를 하나 만들어주도록 하자.
Knowledge - 중요한 정보 알려주기
GPT가 쿼리를 잘 짜려면 1) 데이터 테이블 구조 2) 해당하는 DB의 문법 정보를 잘 알아야한다.
위 사항을 이 Knowledge 부분에 파일 형태로 input 시켜주면 된다.
일단 데이터 테이블 구조를 하나 가정해보자. (유저 행동 데이터)
컬럼명 | 설명 | 타입 |
UserId | 액션을 한 유저의 id | Varchar |
Action | 유저가 한 액션(회원가입, 장바구니, 구매 등) | Varchar |
ActionAt | 유저가 액션을 한 시간 | Timestamp |
위 예시 테이블은 아래와 같은 DDL로 구성되었을 것이다!
CREATE TABLE USER_BEHAVIOR
(
UserId VARCHAR COMMENT '액션을 한 유저의 id',
Action VARCHAR COMMENT '유저가 한 액션(회원가입, 장바구니, 구매)',
ActionAt VARCHAR COMMENT '유저가 액션을 한 시간'
);
위 DDL을 DDL.txt 파일로 만들어서 Knowledge 부분에 입력시켜주자.
다음엔 Redshift 문법을 GPT에게 알려줘야한다.
Redshift 공식 문서를 PDF로 다운받아, 동일하게 Knowledge에 입력시켜주면 된다!
Instructions - 규칙 알려주기
다음으로 GPT에게 규칙을 정해주자.
규칙은 '역할 및 목표', '제약사항', '가이드라인'과 같이 세 가지로 나누어서 각각 입력해주었다.
다음은 GPT에게 입력한 Instructions이다.
※역할 및 목표: 당신은 Redshift의 SQL(Structured Query Language, 관계형 데이터베이스를 관리하기 위한 표준 프로그래밍 언어) 전문가입니다. 입력 질문이 주어지면 올바른 SQL 쿼리를 만들어서 전달해주어야 합니다.
※제약사항: 반드시 한국어로 대답하세요.
※가이드라인: DDL.txt에는 데이터 테이블 정보가 들어있으며, redshift-dg.pdf에는 Redshift의 SQL 쿼리 문법이 들어있습니다. DDL.txt의 테이블 정보를 토대로 Redshift SQL 쿼리를 만드세요.
잘 모르겠거나 질문에 애매한 점이 있다면 역질문을 하세요.
최대한 설명은 하지 않고, SQL 쿼리만 전달해주세요. 설명은 질문이 있을 때에만 하세요.
Capabilities, Actions - 툴 사용여부 체크하기
Capabilities에서는 아래 그림과 같이 웹브라우징, 이미지 생성기, 코드 실행기 기능의 사용여부를 체크할 수 있다.
이미지 생성기와 코드 실행기는 필요 없으니 제외해주었다.
Actions는 API를 활용하는 것으로 보이는데, 해당 기능도 활용하지 않으니 패스!
얼굴 만들어주기
마지막으로 GPT의 프사를 만들어주자.
Configure탭의 최상단에 +모양 버튼이 있다.
DALL-E를 통해 이미지를 만드는 방법과 직접 업로드하는 방법이 있는데, 귀찮으니 DALL-E를 통해 만들었다.
아래 그림과 같은 그림이 나왔는데.... GPT의 의도를 잘 이해하진 못했다..^^
(DALL-E를 통해 직접 프롬프트를 입력해서 만드는게 더 의도와 잘 맞는 것 같긴 하다.)
간단한 쿼리 테스트해보기
우측 상단의 SAVE 버튼을 통해 내가 만든 GPT를 저장할 수 있다!
전체 공개 여부를 선택해서 저장한 후, 아래 그림과 같이 GPT를 직접 사용할 수 있다.
만들어둔 예시 질문을 클릭해보면..
잘 대답하는 것을 볼 수 있다!
아래는 GPT가 생성한 쿼리 전문이다.
WITH funneled_actions AS (
SELECT
DATE(ActionAt) AS action_date,
Action,
COUNT(DISTINCT UserId) AS user_count
FROM
USER_BEHAVIOR
WHERE
Action IN ('유입', '회원가입', '장바구니', '구매')
GROUP BY
DATE(ActionAt),
Action
),
pivoted_funnel AS (
SELECT
action_date,
MAX(CASE WHEN Action = '유입' THEN user_count ELSE 0 END) AS 유입,
MAX(CASE WHEN Action = '회원가입' THEN user_count ELSE 0 END) AS 회원가입,
MAX(CASE WHEN Action = '장바구니' THEN user_count ELSE 0 END) AS 장바구니,
MAX(CASE WHEN Action = '구매' THEN user_count ELSE 0 END) AS 구매
FROM
funneled_actions
GROUP BY
action_date
)
SELECT
*
FROM
pivoted_funnel
ORDER BY
action_date;
정리
- Redshift 쿼리를 짜주는 GPT를 만들어보았다.
- 테이블 정보와 쿼리 공식 문서를 input으로 따로 넣어주었다.
- Instructions에 규칙을 넣어주었다.
- 테스트 쿼리는 문제 없이 잘 나왔다.
- 업무에 적용할 만 하다!
'생존 도구🏹' 카테고리의 다른 글
💬통계와 관련된 알쓸신썰 3가지! (4) | 2024.11.10 |
---|---|
🔄데이터 분석가가 써먹는 전환 분석의 다섯 가지 접근법(feat. 로그 데이터, SQL) (0) | 2024.10.27 |
Python으로 이해하는 주가지표① - RSI(Relative Strength Index) (feat. 엔비디아) (0) | 2024.03.03 |
yfinance(야후 파이낸스)로 주가 데이터 손질하기 (1) | 2024.01.07 |
Retentioneering: 그 복잡한 product data를 간단하고 자유도 높게 다룰 수 있다고? (2) | 2023.12.17 |