Quick Start
1. List Embedded SQL Blocks
py-sql-cleaner list jobs/load_users.py
Example output:
Found 1 SQL blocks
1. jobs/load_users.py:3-7
variable: query
confidence: 0.95
unsafe: false
2. Preview Formatting Changes
py-sql-cleaner format jobs/load_users.py --dry-run
3. Format Embedded SQL
py-sql-cleaner format jobs/load_users.py
Before:
query = """
select user_id, updated_at
from users
qualify row_number() over(partition by user_id order by updated_at desc)=1
"""
After:
query = """
SELECT
user_id,
updated_at
FROM users
QUALIFY
ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY updated_at DESC) = 1
"""
Exact formatting is produced by SQLGlot and may change as SQLGlot changes.
4. Extract SQL
py-sql-cleaner extract jobs/load_users.py --out-dir sql
After extraction:
query = "sql/query.sql"
5. Check Formatting in CI
py-sql-cleaner check jobs/load_users.py
If embedded SQL is not formatted, py-sql-cleaner check exits with a non-zero status
code.