A comprehensive IntelliJ IDEA plugin that provides advanced language support for Google Cloud Dataform projects, enabling developers to work efficiently with SQLX files and Dataform workflows.
- Syntax Highlighting: Full syntax highlighting for SQLX files with support for SQL, JavaScript, and config blocks
- Code Completion: Intelligent code completion for:
- Dataform built-in functions (
ref(),declare(),publish(), etc.) - JavaScript symbols and TypeScript definitions
- Workflow settings and configuration properties
- JSON schema-based completion for configuration files
ref()completion listing the actions declared in the project, in SQLX and JavaScript files- Dataform template expressions (
${...}), with the$key opening completion automatically
- Dataform built-in functions (
- Code Navigation: Navigate between references, includes, and declarations
- BigQuery SQL Support: Native BigQuery SQL dialect integration with proper syntax validation
- Declared Variables:
DECLAREvariables defined in pre-operations resolve inside the query
Ctrl+Q on:
- Table References:
ref()and resolved tables show the target action, its type, schema and columns - Columns: Column name, type, mode and description from the resolved table schema
- BigQuery Functions: Built-in documentation for the BigQuery function catalog, with signature, description and examples
Dataform expressions are folded to their evaluated value in the editor, the way IntelliJ shows
.properties values instead of their key. Ctrl+. expands a fold back to the source.
${...}in SQL andpre/post_operationsblocks, and in query template literals of.js/.tsdefinition files:FROM ${ref("users")}reads asFROM my-project.my_dataset.usersworkflow_settings.yamlreferences inconfig { }andjs { }blocks:dataform.projectConfig.vars.envreads as its YAML valueincludes/exports used inconfig { }andjs { }blocks, such ascolumns: my_descriptions.columns_descriptions, read as the exported value- An expression whose value is long or multi-line is painted over several lines, in place,
keeping the value's own formatting. Code sharing the line, such as
columns:and the trailing comma of a config property, is repainted around it. The gutter icon brings the source back - Shorter values fold to a single line;
Ctrl+Qon any expression shows the full value - Only expressions with a single deterministic value are folded: the Dataform graph functions
(
ref(),resolve(),self(),name(),schema(),database()), workflow settings, and your ownincludes/code. Expressions depending on the run mode (when(),incremental()) or defining actions (publish(),operate(),assert(),declare()) stay visible — but the deterministic${...}nested inside them, at any depth, are still folded - Values are computed by running the expression with the Node.js interpreter configured for the
project, so
includes/helper functions, string building and any other JavaScript resolve exactly as Dataform would evaluate them.ref()andself()use the last compiled graph, so they resolve after a build; nothing is folded when a value cannot be computed. - Because project JavaScript is executed as you type, the feature can be turned off under Settings ▸ Tools ▸ Dataform Tools ▸ Fold Dataform expressions to their evaluated value.
- SQL Injection: BigQuery SQL support within SQLX SQL blocks with template expression handling
- JavaScript Injection: Full JavaScript/TypeScript support in JS blocks
- Config Injection: JSON-based configuration with schema validation
- Template Injection: Support for Dataform template expressions
- JS Query Injection: BigQuery SQL injected in query template literals written in
.js/.tsfiles, with workingref()resolution and column completion
- File References: Navigate to included files and definitions
- Symbol References: Jump to function declarations and usages
- Workflow Settings References: Link to workflow configuration properties
- Column Navigation:
Ctrl+Clickfrom a column in a SQLX query to its declaration in the source table
- Schema Resolution: Table schemas are resolved through BigQuery dry-runs of the compiled queries
- Column Completion: Completion for columns of tables produced by your Dataform project, including
qualified names and nested
STRUCT/RECORDfields - Safe Introspection: Pre-operations that would create, alter, insert, update or delete are filtered out before a dry-run or a preview query is sent
A split editor next to any .sqlx file, with three views:
- Query: The compiled SQL, split into pre-operations, incremental pre-operations, the query, post-operations and compilation errors
- Schema: The resolved output schema of the action
- Lineage: The dependency graph around the current file
- File Lineage: Upstream and downstream dependencies of the open file
- Project Lineage: A full project graph (
Tools→Open Dataform Lineage, orAlt+Shift+D) - Column-Level Lineage: Expand a node to see its columns and follow column-to-column edges,
derived from the compiled
SELECTstatements, with a confidence level per edge - Interactive Graph: Pan, zoom, search, minimap, focus mode, and filtering by type, tag and schema
- Navigation: Jump from a node to its source file, or run the corresponding action
- Google Cloud Sign-In: Sign in from the Dataform tool window; the credential is stored in the IDE
password store and shared across projects and windows. An editor banner prompts for a new sign-in when
the session expires, so no external
gcloudlogin is required - Repository Management: Configure and switch between several Dataform repositories
- Service Account: Pick the service account used by a repository from the project's accounts, listed through the IAM API, so workflow invocations run with the right identity
- Workspace Management: Browse, create and select GCP Dataform workspaces
- Push / Pull: Synchronize local files with a GCP Dataform workspace
- Compare with Remote: Diff a local file against its remote workspace version
- Run Configurations: Dedicated Dataform workflow run configuration, by actions, by tags, or the whole project
- Gutter Icons: Run an action from a SQLX file, or run all actions sharing its tags
- Execution View: Live progress per action, with status, timings and failure reasons
- BigQuery Job Details: Job id, bytes processed and billed, duration and child job queries for each executed action
- Execute Query: Run the compiled query of an action directly from the preview editor
- Results Grid: Paged results shown in the Services view, with query statistics
- Built-in Formatter: Formatting model aware of injected SQL, JavaScript and config blocks
- Sqlfluff Support: Optional external formatting through Sqlfluff, configurable in the plugin settings
- Module Builder: Create new Dataform projects with proper structure
- CLI Integration: Automatic Dataform CLI installation and setup
- Project Indexing: Fast indexing of Dataform core definitions and JavaScript symbols
- Compilation: Project compilation integrated with the IDE build, with errors reported in the Build tool window
- Settings: Dataform core install path and Sqlfluff configuration under
Settings→Tools→Dataform
- Download the plugin from the JetBrains Marketplace (once published)
- Install via IntelliJ IDEA:
Settings→Plugins→Marketplace→ Search for "Google Cloud Dataform" - Restart IntelliJ IDEA
- IntelliJ IDEA 2026.1 or later
- Java 21 or later
- Node.js (for Dataform CLI)
- Dataform CORE
- Dataform CLI
File→New→Project- Select "Dataform" from the project types
- Configure your project settings
- The plugin will automatically set up the project structure and install the Dataform CLI
- Create or open
.sqlxfiles in your Dataform project - Use code completion (
Ctrl+Space) for Dataform functions and BigQuery SQL - Navigate between references using
Ctrl+ClickorCtrl+B - Benefit from syntax validation and error highlighting
workflow_settings.yaml: JSON schema validation and completiondataform.json: Project configuration with schema support- Package definitions with TypeScript type information
./gradlew build./gradlew runIdesrc/main/java/io/github/rejeb/dataform/
├── language/
│ ├── completion/ # Code completion contributors
│ ├── injection/ # Language injection (SQL, JS, Config)
│ ├── lexer/ # Lexer for SQLX files
│ ├── parser/ # Parser definition
│ ├── psi/ # PSI elements
│ ├── reference/ # Reference resolution
│ ├── service/ # Indexing and core services
│ └── util/ # Utility classes
├── projectWizard/ # New project wizard
└── setup/ # CLI installation and setup
- Kotlin: Plugin implementation
- JFlex: Lexer generation
- IntelliJ Platform SDK: Core plugin functionality
- Google Cloud Dataform API: Dataform integration
- BigQuery Dialect: SQL support
Licensed under the Apache License, Version 2.0. See LICENSE for details.
Contributions are welcome! Please feel free to submit issues and pull requests.
rbenrejeb
- GitHub: @rejeb
For issues and feature requests, please use the GitHub issue tracker.