Skip to main content

High-level Guide (Looker to Holistics)

Overview

This guide provides a high-level overview of migrating from Looker to Holistics, covering project organization and the step-by-step migration process.

Concept Mapping

LookerHolistics
View (.view)Model (.model.aml)
Model (.model)Collection of Dataset (.dataset.aml)
DimensionDimension
MeasureMeasure or Metric
ExploreDataset (.dataset.aml)

Project Structure

In Holistics, we organize analytics code into a clear folder structure:

📁 project/
📁 models/ # Similar to Looker views
📁 tables/ # Table-based models
📄 orders.model.aml
📄 users.model.aml
📁 queries/ # Derived table models
📄 active_users.model.aml

📁 datasets/ # Similar to Looker explores
📄 ecommerce.dataset.aml
📄 marketing.dataset.aml

📁 dashboards/ # Dashboard definitions
📄 sales.page.aml
📄 performance.page.aml

For more details on project organization, see our Project Structure documentation.

Migration Steps

High-level Flow
  1. Prepare Your Environment

  2. Migration Views, Models, and Explores

  3. Migrate Dashboards

    • Migrate dashboards (will update later)

1. Prepare Your Environment

  1. Set up your Holistics project
  2. Configure your data sources
  3. Plan your model and dataset organization

2. Migrate Views to Models

In Looker, business logic starts with Views (.view files):

# orders.view.lkml
view: orders {
sql_table_name: public.orders ;;

dimension: order_id {
primary_key: yes
sql: ${TABLE}.id ;;
}

measure: total_amount {
type: sum
sql: ${amount} ;;
}
}

In Holistics, this becomes a Model (.model.aml file):

// models/tables/orders.model.aml
Model orders {
type: 'table'
data_source_name: 'warehouse'
table_name: 'public.orders'

dimension order_id {
type: 'number'
definition: @sql {{ #SOURCE.id }};;
}

measure total_amount {
type: 'number'
definition: @sql sum({{ amount }});;
}
}

Follow the Views Migration Guide for detailed steps.

3. Migrate Models and Explores to Datasets

In Looker, explores are defined in model files that join multiple views:

# ecommerce.model.lkml
connection: "warehouse"

explore: orders {
join: users {
sql_on: ${orders.user_id} = ${users.id} ;;
relationship: many_to_one
}
join: products {
sql_on: ${orders.product_id} = ${products.id} ;;
relationship: many_to_one
}
}

In Holistics, this becomes a Dataset that combines multiple models:

// datasets/ecommerce.dataset.aml
Dataset ecommerce {
models: [orders, users, products]

relationships: [
relationship(orders.user_id > users.id, true),
relationship(orders.product_id > products.id, true)
]
}

Follow the Model Migration Guide and Explore Migration Guide for details.

4. Configure Access Control

In Looker, access control is defined in LookML:

access_grant: sales_team {
user_attribute: department
allowed_values: ["sales"]
}

In Holistics, permissions are managed through the UI:

See our Permission System documentation for details.

5. Migrate Dashboards

After your models and datasets are set up:

  1. Recreate your Looker dashboards in Holistics
  2. Configure drill-downs and actions

Additional Resources


Let us know what you think about this document :)