JSON Schema for IDEs¶
QuickETL provides JSON Schema support for IDE autocompletion and validation.
Generate Schema¶
Export the JSON schema:
# To stdout
quicketl schema
# To file
quicketl schema -o .quicketl-schema.json
# With custom indentation
quicketl schema -o .quicketl-schema.json --indent 4
VS Code Setup¶
Option 1: YAML Extension Settings¶
- Install the YAML extension
- Generate the schema:
quicketl schema -o .quicketl-schema.json - Add to
.vscode/settings.json:
Option 2: Inline Schema Reference¶
Add a schema reference at the top of your YAML file:
Option 3: Project-Wide Schema¶
Create .vscode/settings.json in your project:
{
"yaml.schemas": {
"https://raw.githubusercontent.com/quicketl/quicketl/main/schema.json": [
"pipelines/*.yml"
]
},
"yaml.customTags": [
"!include scalar"
]
}
PyCharm / IntelliJ Setup¶
- Generate the schema:
quicketl schema -o .quicketl-schema.json - Go to Settings → Languages & Frameworks → Schemas and DTDs → JSON Schema Mappings
- Click + to add a new mapping:
- Name: QuickETL Pipeline
- Schema file or URL: Select
.quicketl-schema.json - File path pattern:
pipelines/*.yml
Features¶
With JSON Schema enabled, you get:
Autocompletion¶
Type and see suggestions:
Validation¶
Errors are highlighted:
Documentation¶
Hover over fields to see descriptions:
Required Fields¶
Missing required fields are highlighted:
Schema Contents¶
The generated schema includes:
- All source types (
file,database) - All sink types (
file,database) - All 12 transform operations
- All 5 quality checks
- All configuration options
- Descriptions for every field
Example schema structure:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "QuickETL Pipeline Configuration",
"type": "object",
"required": ["name", "source", "sink"],
"properties": {
"name": {
"type": "string",
"description": "Unique pipeline identifier"
},
"engine": {
"type": "string",
"enum": ["duckdb", "polars", "datafusion", "spark", "pandas"],
"default": "duckdb"
},
"transforms": {
"type": "array",
"items": {
"oneOf": [
{ "$ref": "#/definitions/SelectTransform" },
{ "$ref": "#/definitions/FilterTransform" },
...
]
}
}
}
}
Keeping Schema Updated¶
Regenerate the schema when QuickETL is updated:
Add to your Makefile or scripts:
CI/CD Validation¶
Validate pipelines in CI:
.github/workflows/validate.yml
name: Validate Pipelines
on: [push, pull_request]
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install QuickETL
run: pip install quicketl
- name: Validate all pipelines
run: |
for f in pipelines/*.yml; do
echo "Validating $f"
quicketl validate "$f"
done
Troubleshooting¶
Schema Not Loading¶
- Check the file path in settings matches your pipeline location
- Ensure the schema file exists and is valid JSON
- Restart your IDE after changing settings
Outdated Completions¶
Regenerate the schema after updating QuickETL:
Custom Transforms¶
If you add custom transforms, they won't appear in the schema. The schema covers built-in operations only.
Related¶
- Pipeline YAML - Configuration reference
- CLI: schema - Schema command details