コンテンツにスキップ

最新のモデル text-davinci-003 を使用して、自然言語の指示をSQLクエリに変換します。

PlaidCloud Lakehouseは、OLAPとAIを組み合わせて、SQLクエリを効率的に作成する手段を提供します。この関数を使用すると、自然言語で書かれた指示を、テーブルスキーマに沿ったSQLクエリ文に変換できます。たとえば、「Get all items that cost 10 dollars or less」という文を入力として渡すと、対応する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 │
└─────────┴─────────────┴─────────────┘