Getting Started with Projections
Learn what projections are, why they exist, and how to create your first projection from the model. Projections transform your canonical data model into purpose-specific representations for databases, search indices, APIs, and more.
A projection transforms your canonical data model into a purpose-specific representation. Rather than annotating your model with persistence details, search configuration, or API serialisation rules, you create separate projections - each one tailored to a downstream concern. This keeps the model clean and allows multiple views of the same data to coexist without conflict.
Why Use Projections
Separation of Concerns
Keep your canonical model free from implementation details like column types or index settings
Multiple Targets
Create different projections for PostgreSQL, Elasticsearch, REST APIs, and more from one model
Traceability
Every projected property traces back to its source in the model, maintaining full data lineage
Profile-Aware Types
Database profiles automatically resolve model types to native column types for your chosen platform
Transformation
Rename, reshape, and derive new properties using the expression builder
Chaining
Build multi-layer architectures by chaining projections together (medallion, data vault, etc.)
Projection Profile Types
Each projection has a profile type that determines how properties are resolved and what configuration options are available:
Creating Your First Projection
Key Concepts
Next Steps
Creating a Database Projection
Build a projection targeting a specific database platform.
Learn more →