콘텐츠로 이동

최신 모델 text-davinci-003을 사용하여 자연어 지침을 SQL 쿼리로 변환합니다.

PlaidCloud Lakehouse는 OLAP와 AI를 결합하여 SQL 쿼리를 효율적으로 작성할 수 있는 솔루션을 제공합니다. 이 함수를 사용하면 자연어로 작성한 지침을 테이블 스키마에 맞는 SQL 쿼리문으로 변환할 수 있습니다. 예를 들어 “10달러 이하의 모든 품목 가져오기”와 같은 문장을 입력으로 제공하면 해당하는 SQL 쿼리 “SELECT * FROM items WHERE price <= 10”을 출력으로 생성합니다.

업스트림 구현을 참조하십시오.

func.ai_to_sql('<natural-language-instruction>')

이 예제에서는 AI_TO_SQL 함수로 지침에서 SQL 쿼리문을 생성하고, 생성된 쿼리문을 실행하여 쿼리 결과를 가져옵니다.

func.ai_to_sql('List the total amount spent by users from the USA who are older than 30 years, grouped by their names, along with the number of orders they made in 2022')

함수가 출력으로 SQL 문을 생성합니다.

*************************** 1. row ***************************
database: openai
generated_sql: SELECT name, SUM(price) AS total_spent, COUNT(order_id) AS total_orders
FROM users
JOIN orders ON users.id = orders.user_id
WHERE country = 'USA' AND age > 30 AND order_date BETWEEN '2022-01-01' AND '2022-12-31'
GROUP BY name;
USE <your-database>;
SELECT * FROM ai_to_sql('<natural-language-instruction>');

이 예제에서는 AI_TO_SQL 함수로 지침에서 SQL 쿼리문을 생성하고, 생성된 쿼리문을 실행하여 쿼리 결과를 가져옵니다.

  1. 데이터를 준비합니다.
CREATE DATABASE IF NOT EXISTS openai;
USE openai;
CREATE TABLE users(
id INT,
name VARCHAR,
age INT,
country VARCHAR
);
CREATE TABLE orders(
order_id INT,
user_id INT,
product_name VARCHAR,
price DECIMAL(10,2),
order_date DATE
);
-- Insert sample data into the users table
INSERT INTO users VALUES (1, 'Alice', 31, 'USA'),
(2, 'Bob', 32, 'USA'),
(3, 'Charlie', 45, 'USA'),
(4, 'Diana', 29, 'USA'),
(5, 'Eva', 35, 'Canada');
-- Insert sample data into the orders table
INSERT INTO orders VALUES (1, 1, 'iPhone', 1000.00, '2022-03-05'),
(2, 1, 'OpenAI Plus', 20.00, '2022-03-06'),
(3, 2, 'OpenAI Plus', 20.00, '2022-03-07'),
(4, 2, 'MacBook Pro', 2000.00, '2022-03-10'),
(5, 3, 'iPad', 500.00, '2022-03-12'),
(6, 3, 'AirPods', 200.00, '2022-03-14');
  1. 영어로 작성한 지침을 입력으로 사용하여 AI_TO_SQL 함수를 실행합니다.
SELECT * FROM ai_to_sql(
'List the total amount spent by users from the USA who are older than 30 years, grouped by their names, along with the number of orders they made in 2022');

함수가 출력으로 SQL 문을 생성합니다.

*************************** 1. row ***************************
database: openai
generated_sql: SELECT name, SUM(price) AS total_spent, COUNT(order_id) AS total_orders
FROM users
JOIN orders ON users.id = orders.user_id
WHERE country = 'USA' AND age > 30 AND order_date BETWEEN '2022-01-01' AND '2022-12-31'
GROUP BY name;
  1. 생성된 SQL 문을 실행하여 쿼리 결과를 가져옵니다.
┌─────────┬─────────────┬─────────────┐
│ name │ order_count │ total_spent │
├─────────┼─────────────┼─────────────┤
│ Bob │ 2 │ 2020.00 │
│ Alice │ 2 │ 1020.00 │
│ Charlie │ 2 │ 700.00 │
└─────────┴─────────────┴─────────────┘