데이터 생존 로그

GPT한테 SQL 쿼리 짜달라고 하기 본문

생존 도구🏹

GPT한테 SQL 쿼리 짜달라고 하기

분석가 베어그릴스 2024. 3. 17. 16:46

데이터 분석가와 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에 규칙을 넣어주었다.
  • 테스트 쿼리는 문제 없이 잘 나왔다.
  • 업무에 적용할 만 하다!
반응형
Comments