Migrating from Looker to Holistics: Quick Start
If you're familiar with Looker, this guide will help you understand Holistics through concepts you already know. We'll cover the key differences, similarities, and provide a step-by-step migration path.
Overview of the migration process
1/ Preparation: Familarize yourself with:
- Conceptual differences between Looker and Holistics
- Holistics concepts: Models, Datasets, Dashboards
2/ Migrating the project one concept at a time:
- Migrate Looker views to Holistics models
- Inside the views, migrate dimensions and measures
- Migrate Looker Model and Looker explores to Holistics datasets
- Migrate Looker dashboards to Holistics dashboards
Migration Tool
We're developing an automated converter to help you quickly migrate your Looker projects to Holistics. Check it out at Migration Tool
Project Structure
If you're used to organizing your LookML files, here's how Holistics structures projects:
📁 project/
📁 models/ # Like your Looker views
📁 tables/ # For regular table views
📄 orders.model.aml
📄 users.model.aml
📁 queries/ # For derived table views
📄 active_users.model.aml
📁 datasets/ # Like your Looker explores
📄 ecommerce.dataset.aml
📄 marketing.dataset.aml
📁 dashboards/ # Your dashboard definitions
📄 sales.page.aml
📄 performance.page.aml
Migration Steps
1. Prepare Your Environment
- Set up your Holistics project
- Configure your data sources (similar to Looker connections)
- Plan how your views will map to models
2. Convert Views to Models
Your Looker views will become Holistics models. Here's a simple example:
// Your current Looker view
view: orders {
sql_table_name: public.orders ;;
dimension: order_id {
primary_key: yes
sql: ${TABLE}.id ;;
}
measure: total_amount {
type: sum
sql: ${amount} ;;
}
}
// Your new Holistics model
Model orders {
type: 'table'
data_source_name: 'warehouse' // Like your connection name
table_name: 'public.orders'
dimension order_id {
type: 'number'
definition: @sql {{ #SOURCE.id }};; // #SOURCE replaces ${TABLE}
}
measure total_amount {
type: 'number'
definition: @sql sum({{ amount }});;
}
}
Key differences:
- Use
#SOURCE
instead of${TABLE}
- Use
{{ field_name }}
instead of${field_name}
- Dimensions and measures use
definition
with@sql
tag
For detailed conversion steps, see our Views Migration Guide.
3. Convert Explores to Datasets
Your Looker explores will become Holistics datasets. The main difference is how joins are handled:
// Your current Looker explore
explore: orders {
join: users {
sql_on: ${orders.user_id} = ${users.id} ;;
relationship: many_to_one
}
}
// Your new Holistics dataset
Dataset ecommerce {
models: [orders, users] // List all models (views) used
relationships: [
// '>' indicates many-to-one relationship
relationship(orders.user_id > users.id, true)
]
}
Key differences:
- No need to specify a root view
- Define relationships instead of explicit joins
- Holistics automatically determines optimal join paths
For detailed steps, see our Explore Migration Guide.
4. Set Up Access Control
Unlike Looker's LookML-based access grants, Holistics manages permissions through its UI:
- Resource Access: Control access to Datasets and Dashboards
- Row-level Security: Similar to Looker's access filters, but configured in the UI
- Column-level Security: Control access to specific fields
See our Permission System documentation for details.
5. Migrate Dashboards
After setting up your models and datasets:
- Recreate your Looker dashboards in Holistics
- Set up drill-downs and actions
- Test and validate
For detailed steps, see our Dashboard Migration Guide.
Detailed Migration Guides
For step-by-step instructions on migrating specific components: