A practical guide to Looker development
Lookerβs typical development flow follows this sequence:
β
Start in Production Mode
β You can see what the business sees
β But you canβt make dev changes yet
π Switch to Development Mode
β A new Git branch is automatically created for you
β Youβre now working in isolation
π§± Create a View File
β Go to βDevelopβ β select your project
β Create a new view: users.view.lkml
β Define sql_table_name
, at least one dimension
Example:
view: users {
Β Β sql_table_name: analytics.users ;;
Β Β dimension: user_id { type: number sql: ${TABLE}.user_id ;; }
}
π¦ Create/Modify a Model File
β If one doesnβt exist, create main.model.lkml
β Add include: "users.view.lkml"
β Add explore: users { from: users }
β Add the DB connection name
π§ͺ Validate LookML
β Use the Looker βValidateβ button (top-right)
β Fix any syntax errors
π Go to Explore
β Go to Explore β select your model β users
β Youβll now see your dimensions from users.view
π Build Your First Tile
β Pick a field (e.g. user_id
), select count
β Choose a chart type (e.g. bar or single value)
β Click βSave to Dashboardβ β New Dashboard β Name it
πΎ Save + Commit
β Go back to Develop panel
β Commit the files (e.g., users.view.lkml
, main.model.lkml
)
β Push to Git
π Deploy to Production
β Deploy the branch from the Looker UI
β Tile + dashboard now available to all users
SQL Runner is a built-in query editor inside Looker β used for ad hoc SQL and quick table inspection.
π Notes:
Looker uses real Git under the hood β each project links to a Git repo (GitHub, GitLab, Bitbucket, etc.) via the Looker UI. You commit + push from inside Lookerβs Develop tab, and optionally deploy to production β all tracked in Git history.
looker_project/ βββ README.md βββ .gitignore βββ model/ β βββ main.model.lkml βββ views/ β βββ users.view.lkml β βββ orders.view.lkml β βββ products.view.lkml βββ dashboards/ β βββ ecommerce.dashboard.lookml βββ explores/ β βββ ecommerce.explore.lkml βββ sets/ β βββ shared_fields.view.lkml βββ manifest.lkml
model/
: Contains all .model.lkml
files (declares explores + connections)views/
: Holds each view:
file with dimensions and measuresdashboards/
: Optional β only used for LookML-defined dashboardsexplores/
: Sometimes separated for modular Explore configssets/
: Shared field groupings or reusable logicmanifest.lkml
: Project-level config (extensions, includes, etc.)π You interact with this repo inside Lookerβs Develop panel, but itβs versioned and structured like any GitHub project.