# PRQL/prql

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/prql-prql).**

10,703 stars · 252 forks · Rust · apache-2.0

## Links

- GitHub: https://github.com/PRQL/prql
- Homepage: https://prql-lang.org
- awesome-repositories: https://awesome-repositories.com/repository/prql-prql.md

## Topics

`data` `pipeline` `sql`

## Description

PRQL is a functional, modular data transformation language that serves as a compiler for relational data pipelines. It allows developers to write expressive, pipelined queries that are translated into standard SQL dialects. By abstracting complex data manipulation into a readable, sequential syntax, the project enables the construction of maintainable workflows that remain independent of specific database engines.

The language distinguishes itself through a robust compilation infrastructure that performs type validation and relational algebra analysis before generating target-specific code. It supports modular namespace resolution and reusable function definitions, allowing for the creation of complex, hierarchical data projects. Developers can integrate these transformations directly into various programming environments or notebook interfaces, while maintaining the ability to embed raw SQL for specialized database features.

The project provides a comprehensive suite of data manipulation primitives, including support for windowed transformations, conditional logic, and complex aggregations. It also includes diagnostic tools for tracking column lineage and visualizing query transformation flows. The command-line interface facilitates project automation, dependency management, and real-time query previews, while editor-based syntax highlighting and grammar definitions support development productivity.

## Tags

### Data & Databases

- [Transpilers](https://awesome-repositories.com/f/data-databases/sql-query-builders/transpilers.md) — Compiles high-level, functional data transformation pipelines into standard SQL for execution across multiple database engines.
- [Transformation Chains](https://awesome-repositories.com/f/data-databases/data-transformation-functions/transformation-chains.md) — Processes data by chaining sequential operations where the output of each step flows directly into the next transformation.
- [Data Transformation Languages](https://awesome-repositories.com/f/data-databases/data-transformation-languages.md) — Provides a functional, modular language designed to simplify complex data manipulation through sequential pipeline operations.
- [Database Query Translators](https://awesome-repositories.com/f/data-databases/database-query-translators.md) — Translates expressive query syntax into native SQL dialects while supporting raw SQL embedding.
- [Data Processing Pipelines](https://awesome-repositories.com/f/data-databases/data-processing-pipelines.md) — Provides a framework for building maintainable data processing workflows that abstract away verbose SQL syntax.
- [Query Translators](https://awesome-repositories.com/f/data-databases/query-translators.md) — Translates high-level data transformation pipelines into native SQL syntax for efficient execution. ([source](https://prql-lang.org/book/project/integrations/clickhouse.html))
- [SQL Query Builders](https://awesome-repositories.com/f/data-databases/sql-query-builders.md) — Translates functional query syntax into optimized database-specific SQL to simplify complex manipulation logic.
- [SQL Dialect Adapters](https://awesome-repositories.com/f/data-databases/sql-dialect-adapters.md) — Maps internal logical representations to specific SQL flavors by applying engine-specific syntax rules and keyword escaping.
- [Analytical Data Engines](https://awesome-repositories.com/f/data-databases/analytical-data-engines.md) — Manages complex data transformations and aggregations through reusable functions and hierarchical modules.
- [Data Aggregation Tools](https://awesome-repositories.com/f/data-databases/data-aggregation-tools.md) — Computes summary statistics across rows by distilling multiple values into single results using functions like sum, count, or average. ([source](https://prql-lang.org/book/print.html))
- [Column-Level Lineage Extraction](https://awesome-repositories.com/f/data-databases/column-mappings/column-level-lineage-extraction.md) — Generates graphs representing the flow and transformation of data columns to track dependencies and data provenance. ([source](https://prql-lang.org/book/project/bindings/python.html))
- [Column Transformation](https://awesome-repositories.com/f/data-databases/column-transformation.md) — Adds calculated columns to a relation using constants or expressions based on existing column values. ([source](https://prql-lang.org/book/print.html))
- [Relational Join Engines](https://awesome-repositories.com/f/data-databases/relational-join-engines.md) — Combines rows from multiple relations based on matching criteria using standard join types. ([source](https://prql-lang.org/book/print.html))
- [Row-wise Transformations](https://awesome-repositories.com/f/data-databases/row-wise-transformations.md) — Applies pipelines to segments of rows defined by relative positions or value ranges. ([source](https://prql-lang.org/book/reference/stdlib/transforms/window.html))
- [Data Import](https://awesome-repositories.com/f/data-databases/data-import.md) — Reads data from common file formats like Parquet, CSV, and JSON to integrate local datasets into transformation pipelines. ([source](https://prql-lang.org/book/reference/data/read-files.html))
- [Conditional Row Filters](https://awesome-repositories.com/f/data-databases/database-schema-mapping/row-mapping-logic/row-record-access/conditional-row-filters.md) — Restricts rows in a relation by applying conditional logic that evaluates to true or false. ([source](https://prql-lang.org/book/print.html))
- [Query Parameterization](https://awesome-repositories.com/f/data-databases/query-parameterization.md) — Supports inserting placeholders into queries to ensure dynamic and secure execution. ([source](https://prql-lang.org/book/print.html))
- [Query Sorting](https://awesome-repositories.com/f/data-databases/query-sorting.md) — Orders query results by specifying columns and directions using a concise syntax for ascending or descending sequences. ([source](https://prql-lang.org/book/reference/syntax/index.html))
- [Raw SQL Execution](https://awesome-repositories.com/f/data-databases/raw-sql-execution.md) — Allows embedding raw database-specific SQL statements directly into the query pipeline. ([source](https://prql-lang.org/book/project/integrations/databend.html))

### Software Engineering & Architecture

- [Data Transformation Pipelines](https://awesome-repositories.com/f/software-engineering-architecture/data-transformation-pipelines.md) — Translates a declarative, pipelined syntax into standard database query languages to simplify complex data manipulation logic. ([source](https://prql-lang.org/book/reference/spec/index.html))
- [Data Operation Pipelines](https://awesome-repositories.com/f/software-engineering-architecture/data-operation-pipelines.md) — Enables chaining multiple data processing operations into sequential, readable workflows. ([source](https://prql-lang.org/book/reference/syntax/pipes.html))
- [Conditional Branching](https://awesome-repositories.com/f/software-engineering-architecture/conditional-branching.md) — Executes branching operations using case statements to map input values to specific outputs based on defined criteria. ([source](https://prql-lang.org/book/reference/syntax/index.html))
- [Transformation Validators](https://awesome-repositories.com/f/software-engineering-architecture/data-schema-validation/data-type-validation/transformation-validators.md) — Enforces schema constraints and data structure integrity during the transformation process before generating executable code.
- [Abstract Syntax Tree Tools](https://awesome-repositories.com/f/software-engineering-architecture/abstract-syntax-tree-tools.md) — Translates high-level source code into intermediate tree structures for analysis and transformation before final query generation.
- [Namespace Scopes](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/configuration-dependency-systems/modular-dependency-management/namespace-scopes.md) — Organizes code into hierarchical scopes to manage dependencies and resolve variable references across multiple project files.

### Development Tools & Productivity

- [Function Definitions](https://awesome-repositories.com/f/development-tools-productivity/custom-task-functions/sql-function-namespaces/function-definitions.md) — Creates reusable logic blocks using a functional syntax that accepts parameters and returns computed values. ([source](https://prql-lang.org/book/reference/syntax/index.html))
- [Interactive Data Exploration Tools](https://awesome-repositories.com/f/development-tools-productivity/interactive-data-exploration-tools.md) — Enables live feedback and rapid iteration during data exploration within notebooks and editors.
- [Query Previewers](https://awesome-repositories.com/f/development-tools-productivity/side-by-side-diff-viewers/query-previewers.md) — Displays generated SQL code in a side-by-side pane while editing queries to provide immediate feedback on transformation logic. ([source](https://prql-lang.org/book/project/integrations/vscode.html))
- [Notebook Execution Environments](https://awesome-repositories.com/f/development-tools-productivity/code-execution-environments/notebook-execution-environments.md) — Enables interactive data transformation scripts within notebook environments for immediate analysis. ([source](https://prql-lang.org/book/project/integrations/jupyter.html))
- [CLI Productivity Tools](https://awesome-repositories.com/f/development-tools-productivity/terminal-shell-cli/cli-tooling-frameworks/cli-tooling/project-lifecycle-orchestrators/cli-productivity-tools.md) — Provides a command-line interface to resolve dependencies, execute scripts, format code, and generate shell completions. ([source](https://prql-lang.org/book/reference/spec/modules.html))
- [Configuration Extensions](https://awesome-repositories.com/f/development-tools-productivity/configuration-extensions.md) — Allows users to annotate source code, define reusable transformations, organize modules, and specify language versions. ([source](https://prql-lang.org/book/reference/syntax/comments.html))

### Programming Languages & Runtimes

- [Intermediate Representations](https://awesome-repositories.com/f/programming-languages-runtimes/compiler-interpreter-internals/compiler-infrastructure/intermediate-representations.md) — Uses a formal logical model to represent data transformations, enabling optimization and analysis before final query emission.
- [Data Structure and Type Helpers](https://awesome-repositories.com/f/programming-languages-runtimes/programming-utilities/data-structure-type-helpers.md) — Enforces type constraints on variables and function parameters to ensure data integrity during compilation. ([source](https://prql-lang.org/book/reference/spec/type-system.html))
- [Data Structures](https://awesome-repositories.com/f/programming-languages-runtimes/programming-utilities/data-structure-type-helpers/data-structures.md) — Groups multiple fields or items into structured containers and homogeneous collections to facilitate batch processing. ([source](https://prql-lang.org/book/reference/syntax/arrays.html))

### Scientific & Mathematical Computing

- [Arithmetic Operations](https://awesome-repositories.com/f/scientific-mathematical-computing/numerical-mathematical-foundations/arithmetic-number-types/arithmetic-operations.md) — Executes standard arithmetic, trigonometric, and logarithmic operations on data fields to support complex calculations. ([source](https://prql-lang.org/book/reference/stdlib/index.html))
