튜토리얼 에이전트 – 02 Qurify와 함께 데이터를 활용하고 인사이트 얻기

지난 게시물에서는 Qurify 튜토리얼 에이전트와 함께 Qurify의 기본적인 사용법을 익히고, 테이블과 칼럼의 목록을 가져오거나 테이블 간의 관계, 그리고 샘플 데이터를 가져오는 방법을 알아보았습니다.
이번 게시물에서는 튜토리얼을 9단계부터 이어서 진행하면서, 지금까지 살펴본 기능들을 응용하여 보다 복잡한 요청을 처리할 수 있는 가이드라인을 제시하도록 하겠습니다.

결과 정렬하기 (ORDER BY)
특정한 칼럼만 조회하거나, 조건을 걸어 특정한 데이터만 탐색할 수 있다고 해도 그 결과가 정렬되어 있지 않으면 데이터를 한 눈에 알아보기 어려울 수 있습니다. 이러한 문제점을 해소하기 위해, Qurify와 함께 결괏값을 정렬해보도록 하겠습니다.
generate_sql_query를 이용해서 orders 테이블에서 freight이 높은 순으로 정렬해서 5개 보여줘
SQL에서는 결괏값을 정렬하기 위해 ORDER BY 컬럼명을 사용합니다. 이 구문은 해당 컬럼을 기준으로 데이터를 정렬하는 기능을 수행합니다. 기본적으로는 오름차순 정렬(1, 2, 3, …)을 수행하며, 내림차순 정렬(…, 3, 2, 1)이 필요하다면 컬럼명의 뒤에 DESC를 추가하면 됩니다.
SELECT
order_id,
freight
FROM
orders
ORDER BY
freight DESC
LIMIT
5

ORDER BY freight DESC를 사용하여 freight 컬럼을 기준으로 내림차순 정렬을 수행했습니다. 이처럼 정렬된 결괏값이 필요할 경우, 프롬프트에 '컬럼 A를 기준으로 정렬'과 같은 키워드를 입력하기만 하면 Qurify가 정렬 작업을 수행하여 적절한 결과를 제공합니다.
전체 개수 계산 (COUNT)
10단계에서는 데이터를 직접 집계함으로써 그 개수를 알아보는 시간을 갖겠습니다. 데이터의 개수를 파악하는 것은 데이터의 전체 규모를 파악하는 데 있어 가장 기본적이면서 유용한 방법입니다.
orders에 데이터 총 몇 개야?
SELECT
count(*)
FROM
orders;

DBHub의 execute_sql 실행 결과를 보면 orders 테이블 내에는 총 830개의 데이터, 즉 830행이 존재함을 알 수 있습니다.
그룹별 집계 (GROUP BY)
테이블 내 모든 데이터의 개수를 세어보았으니, 이제 데이터를 그룹화하여 그 개수를 집계해보겠습니다. 그룹별 집계를 쉽게 설명하자면, 특정 컬럼의 값이 같은 데이터끼리 묶어 그룹을 만드는 것과 같습니다.
generate_sql_query를 이용해서 orders 테이블에서 customer_id 별로 개수 알려줘
SELECT
customer_id,
count(order_id) AS order_count
FROM
orders
GROUP BY
customer_id

GROUP BY customer_id를 사용함으로써 'customer_id 별로 분류'해야 한다는 조건을 만족하고 있습니다. AS order_count 구문을 통해 컬럼의 이름을 알기 쉽게 변경한 모습도 볼 수 있습니다.
두 테이블 조인 (JOIN)
관계형 데이터베이스는 데이터를 여러 테이블에 나누어 저장합니다. 여러 테이블로 분리된 데이터를 다시 조합하여 정보를 탐색해야 하는 경우, 조인을 사용합니다.

generate_sql_query를 이용해서 orders와 order_details를 조인해서 order_details 별 order_count 합계를 알려줘
SELECT
od.order_id,
count(o.order_id) AS order_count
FROM
order_details od
JOIN orders o ON od.order_id = o.order_id
GROUP BY
od.order_id

JOIN 구문을 두 부분으로 나눠볼 수 있습니다:
- order_details od JOIN orders o: 두 테이블을 조인합니다. order_details는 od, orders는 o라는 별칭 사용
- ON od.order_id = o.order_id: 두 테이블의 order_id가 일치하는 행을 기준으로 연결

만약 데이터베이스 질의 결과를 이해하기 어려울 경우, Qurify의 실행 결과 기반 질문 기능을 활용할 수 있습니다.
각 컬럼이 의미하는 것을 알려줘

Qurify는 질의 결과에 대한 의문도 해소해 줍니다. 대화 과정에서 실행 결과를 이해하기 어렵거나 궁금한 점이 생길 경우, 언제든지 실행 결과 기반 질문을 사용할 수 있습니다.

2단계 이상 조인을 통한 숨은 인사이트 발굴
13단계에서는 이전 단계에서보다 조금 더 복잡한 미션을 제시합니다. 사용자가 단순한 데이터 탐색을 넘어 보다 복잡한 질의를 통해 숨은 인사이트를 발굴할 수 있도록 준비한 단계입니다.
사용자는 직접 연결된 관계가 아닌, 2단계 이상으로 간접 연결된 테이블을 찾아 아래의 7단계 프로세스를 통해 인사이트를 추출하는 것을 목표로 합니다:
- 연결 관계를 확인합니다.
- 컬럼 정보를 확인합니다.
- 적절한 질문을 생성합니다.
- find_similar_examples를 사용해 유사한 예제를 찾습니다.
- find_relevant_schema를 사용해 관련 테이블의 스키마를 확인합니다.
- 적절한 쿼리를 생성합니다.
- 결과를 확인하고 분석합니다.

발굴한 인사이트는 지정된 형식으로 정리합니다:
- 질문: (자신이 생성한 질문)
- 최종 쿼리: (실행한 SQL 쿼리)
- 사용한 테이블, 컬럼, 연결관계: (도구로부터 얻은 정보의 종합)
- 답변: (쿼리 결과에 대한 설명)
- 사용 도구 요약: (이 분석을 위해 사용한 도구와 각 도구의 역할을 시간 순서대로 요약)

사용자의 요청에 따라 인사이트 추출 프로세스를 준수하고, 2단계 이상으로 간접 연결된 테이블들을 탐색하며, 최종 보고 형식을 준수한 모습입니다.

최종 미션: AI 주도 전체 분석 워크플로우
튜토리얼의 마지막 단계입니다. 이전 단계까지 수행했던 미션을 토대로 AI가 데이터 탐색부터 질문 생성, 쿼리 실행, 최종 분석으로 이루어진 전체 워크플로우를 자율적으로 수행하도록 지시하는 미션을 수행합니다.
최종 미션의 경우 Qurify에서 튜토리얼 에이전트와 함께 차근차근 큐리파이 배우기를 진행하며 직접 수행해 보세요.
마치며
Qurify 튜토리얼 에이전트가 제시하는 단계를 따라 튜토리얼을 모두 진행해보았습니다. 테이블과 컬럼 목록을 확인하는 기초적인 기능부터 AI를 이용한 워크플로우 자동화까지 직접 실행하며, Qurify와 함께 데이터 탐색 및 분석과 인사이트 발굴을 모두 성공적으로 수행했습니다.
튜토리얼을 모두 마친 후에도 Qurify의 기능을 다시 알아보고 싶다면 언제든지 튜토리얼을 재시작할 수 있습니다. 튜토리얼 에이전트와 함께 Qurify를 사용하는 법을 익히며 데이터베이스를 최대한으로, 그리고 효율적으로 활용해 보세요.