AI_TO_SQL(Lakehouse v1)
最新のモデル 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」が出力として生成されます。
アップストリームの実装を参照してください。
Analyzeの構文
Section titled “Analyzeの構文”func.ai_to_sql('<natural-language-instruction>')Analyzeの例
Section titled “Analyzeの例”この例では、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: openaigenerated_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;SQLの構文
Section titled “SQLの構文”USE <your-database>;SELECT * FROM ai_to_sql('<natural-language-instruction>');この例では、AI_TO_SQL関数を使用して指示からSQLクエリ文を生成し、生成された文を実行してクエリ結果を取得します。
- データを準備します。
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 tableINSERT 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 tableINSERT 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');- 英語で書いた指示を入力として、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: openaigenerated_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;- 生成されたSQL文を実行して、クエリ結果を取得します。
┌─────────┬─────────────┬─────────────┐│ name │ order_count │ total_spent │├─────────┼─────────────┼─────────────┤│ Bob │ 2 │ 2020.00 ││ Alice │ 2 │ 1020.00 ││ Charlie │ 2 │ 700.00 │└─────────┴─────────────┴─────────────┘