AI_TO_SQL (Lakehouse v1)
Converts natural language instructions into SQL queries with the latest model text-davinci-003.
PlaidCloud Lakehouse offers an efficient solution for constructing SQL queries by incorporating OLAP and AI. Through this function, instructions written in a natural language can be converted into SQL query statements that align with the table schema. For example, the function can be provided with a sentence like “Get all items that cost 10 dollars or less” as an input and generate the corresponding SQL query “SELECT * FROM items WHERE price <= 10” as output.
See the upstream implementation.
Analyze Syntax
Section titled “Analyze Syntax”func.ai_to_sql('<natural-language-instruction>')Analyze Examples
Section titled “Analyze Examples”In this example, an SQL query statement is generated from an instruction with the AI_TO_SQL function, and the resulting statement is executed to obtain the query results.
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')A SQL statement is generated by the function as the output:
*************************** 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 Syntax
Section titled “SQL Syntax”USE <your-database>;SELECT * FROM ai_to_sql('<natural-language-instruction>');SQL Examples
Section titled “SQL Examples”In this example, an SQL query statement is generated from an instruction with the AI_TO_SQL function, and the resulting statement is executed to obtain the query results.
- Prepare data.
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');- Run the AI_TO_SQL function with an instruction written in English as the input.
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');A SQL statement is generated by the function as the output:
*************************** 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;- Run the generated SQL statement to get the query results.
┌─────────┬─────────────┬─────────────┐│ name │ order_count │ total_spent │├─────────┼─────────────┼─────────────┤│ Bob │ 2 │ 2020.00 ││ Alice │ 2 │ 1020.00 ││ Charlie │ 2 │ 700.00 │└─────────┴─────────────┴─────────────┘