Transforms
Transforms are how Wallabi turns your raw data into something useful for your apps. A transform is essentially a saved query — it describes what data to pull and how to shape it.
You don’t need to write transforms by hand. When you describe what you want to see in your app, Claude Code generates the transforms for you. This page explains the concepts so you can understand what’s happening behind the scenes and have informed conversations with your team.
Two Kinds of Transforms
Section titled “Two Kinds of Transforms”Wallabi uses two kinds of transforms that work together:
| Server Transforms | Client Transforms | |
|---|---|---|
| What they do | Pull and shape data from your database | Filter, sort, and reshape data in the browser |
| Good for | Crunching large datasets | Fast, interactive exploration |
| Who writes them | Wallabi generates these for you | Wallabi generates these too |
Server transforms do the heavy lifting — they run queries against your database and return results in an efficient format. Client transforms take those results and reshape them further right in your browser, so filtering and sorting feel instant.
How Transforms Are Organized
Section titled “How Transforms Are Organized”Transforms are grouped into packages. Each package contains:
- Sources — declarations of which tables your transforms need (these map to the data sources you’ve connected in the Wallabi app)
- Transforms — the queries that shape your data
- A manifest — a registration file that ties everything together
When you ask Claude Code to build an app, it creates a package with the right sources and transforms automatically.
What You Can Do with Transforms
Section titled “What You Can Do with Transforms”- Filter — narrow results by date range, category, search term, or any field
- Aggregate — group and summarize data (totals, averages, counts)
- Join — combine data from multiple tables
- Chain — build one transform on top of another for multi-step data processing
Filtering deserves special mention: you don’t need to build filtering logic into your transforms. When you add filters to your app’s UI, Wallabi applies them automatically. This means the same transform can power a filtered table, an unfiltered chart, and a search view — all without changes to the underlying query.
Building Transforms with Wallabi
Section titled “Building Transforms with Wallabi”The typical flow:
- Describe what data you need — “Show me monthly revenue by product category for the last year”
- Claude Code examines your data sources — it looks at your tables and columns to find the right data
- Claude Code generates the transforms — server transforms for the database query, client transforms for interactive features
- You iterate — “Add a date filter” or “Break this down by region” and Claude Code updates the transforms
You can also use these commands in Claude Code to create transforms directly:
| Command | What it does |
|---|---|
/data-apps-builder:create-wads-package | Create a new set of sources and transforms |
/data-apps-builder:generate-transform | Add or modify a transform |
For the Curious: Under the Hood
Section titled “For the Curious: Under the Hood”Transforms are written in TypeScript and SQL. They’re managed by a framework called WADS (Wallabi Analytical Data Transformation System) that handles dependencies between transforms — if Transform B depends on the results of Transform A, WADS makes sure they run in the right order.
If you’re comfortable reading code, you’ll find transform files in the packages/ directory of your app host. Each transform has a build() function that returns SQL, and typed parameters that define what inputs it accepts (like date ranges or search terms).