SQL functions
| Function Name | Description |
|---|---|
| parse_sql() | Interprets and analyzes SQL queries, making it easier to extract and understand SQL statements within datasets. |
| format_sql() | Converts the data model produced by parse_sql() back into a SQL statement for validation or formatting purposes. |
parse_sql()
Analyzes an SQL statement and constructs a data model, enabling insights into the SQL content within a dataset.Limitations
- It’s mainly used for simple SQL queries. SQL statements like stored procedures, Windows functions, common table expressions (CTEs), recursive queries, advanced statistical functions, and special joins aren’t supported.
Arguments
| Name | Type | Required or Optional | Description |
|---|---|---|---|
| sql_statement | string | Required | The SQL statement to analyze. |
Returns
A dictionary representing the structured data model of the provided SQL statement. This model includes maps or slices that detail the various components of the SQL statement, such as tables, fields, conditions, etc.Examples
Basic data retrieval
The SQL statementSELECT * FROM db retrieves all columns and rows from the table named db.
WHERE Clause
This example parses aSELECT statement with a WHERE clause, filtering customers by subscription_status.
JOIN operation
This example shows parsing an SQL statement that performs aJOIN operation between orders and customers tables to match orders with customer names.
GROUP BY Clause
In this example, theparse_sql() function is used to parse an SQL statement that aggregates order counts by product_id using the GROUP BY clause.
Nested Queries
This example demonstrates parsing a nested SQL query, where the inner query selectsuser_id from orders based on purchase_date, and the outer query selects names from users based on those IDs.
ORDER BY Clause
Here, the example shows how to parse an SQL statement that ordersusers by registration_date in descending order.
Sorting users by registration data
This example demonstrates parsing an SQL statement that retrieves thename and registration_date of users from the users table, and orders the results by registration_date in descending order, showing how to sort data based on a specific column.
Querying with index hints to use a specific index
This query hints at MySQL to use a specific index namedindex_name when executing the SELECT statement on the users table.
Inserting data with ON DUPLICATE KEY UPDATE
This example showcases MySQL’s ability to handle duplicate key entries elegantly by updating the existing record if the insert operation encounters a duplicate key.Using JSON functions
This query demonstrates MySQL’s support for JSON data types and functions, extracting the age from a JSON object stored in theuser_info column.
format_sql()
Transforms the data model output byparse_sql() back into a SQL statement. Useful for testing and ensuring that the parsing accurately retains the original structure and intent of the SQL statement.
Arguments
| Name | Type | Required or Optional | Description |
|---|---|---|---|
| parsed_sql_model | dictionary | Required | The structured data model output by parse_sql(). |
Returns
A string that represents the SQL statement reconstructed from the provided data model.Examples
Reformatting a basic SELECT Query
After parsing a SQL statement, you can reformat it back to its original or a standard SQL format.Formatting SQL Queries
This example first parses a SQL statement to analyze its structure and then formats the parsed structure back into a SQL string usingformat_sql.
Formatting a simple SELECT Statement
This example demonstrates parsing a straightforwardSELECT statement that retrieves user IDs and usernames from an user_accounts table where the active status is 1. After parsing, it uses format_sql to convert the parsed data back into a SQL string.
Reformatting a complex query with JOINS
In this example, a more complex SQL statement involving anINNER JOIN between orders and customers tables is parsed. The query selects orders and customer names for orders placed after January 1, 2023. format_sql is then used to reformat the parsed structure into a SQL string.
Using format_sql with aggregation functions
This example focuses on parsing an SQL statement that performs aggregation. It selects product IDs and counts of total sales from asales table, grouping by product_id and having a condition on the count. After parsing, format_sql reformats the output into an SQL string.