Skip to main content

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:

2/ Migrating the project one concept at a time:

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

  1. Set up your Holistics project
  2. Configure your data sources (similar to Looker connections)
  3. 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:

  1. Recreate your Looker dashboards in Holistics
  2. Set up drill-downs and actions
  3. Test and validate

For detailed steps, see our Dashboard Migration Guide.

Detailed Migration Guides

For step-by-step instructions on migrating specific components:

Additional Resources


Let us know what you think about this document :)