A practical guide to Looker development
Looker supports the following chart types in its Explore and Dashboard UI — ordered from most frequently used to least:
Looker provides multiple ways to customize visualizations to match user needs or business branding.
These settings are available per tile in the “Edit” > “Series” and “Plot” tabs.
${revenue} / ${orders}
)percent_of_previous
, rank
, moving average
, and moreUseful for lightweight transformations without touching backend LookML.
Looker supports custom HTML in tooltips to show dynamic context when hovering over chart elements.
âś… Where to use:
âś… How to define:
In your view file, you can define an html
block inside a dimension
or measure
.
Example:
measure: avg_order_value {
  type: average
  sql: ${TABLE}.order_amount ;;
  html: "<b>Avg:</b> \${value}"
}
âś… Supported tokens:
\${value}
— shows the measure’s rendered value\${name}
— shows the field label<b>
, <br>
, <i>
, and inline stylingTooltips are especially useful when:
📌 Notes:
Dashboards in Looker are visual collections of saved queries and charts — often created directly from the Explore UI.
.dashboard.lookml
filesExample use cases:
date
filter affecting all chartsregion
filter syncing across multiple visualizations📌 Notes:
LookML dashboards are defined as code using .dashboard.lookml
files — giving you version control, reusability, and programmatic flexibility.
dashboard:
and element:
blocksBasic structure:
dashboard: user_summary {
  title: "User Summary Dashboard"
  filters: [ ... ]
  elements: [ ... ]
}
Inside the dashboard block:
filter:
defines global filterselement:
defines each chart/tileExample element:
element: total_users_tile {
  type: single_value
  query: {
    model: ecommerce
    explore: users
    fields: [users.total_users]
  }
}
You can use Liquid variables to customize behavior dynamically. For example:
{{ _user_attributes['region'] }}
{% if parameter_name._value == 'X' %}
Show this content
{% else %}
Show alternate content
{% endif %}
These work inside fields like label
, html
, and other blocks that support dynamic runtime evaluation.
Use LookML dashboards when:
📌 Notes:
Drill behavior lets users click into a value on a chart and either:
Drills are defined at the dimension or measure level in the view file.
Example:
dimension: user_id {
  type: number
  sql: ${TABLE}.user_id ;;
  drill_fields: [orders.order_id, orders.order_amount]
}
This means clicking a user_id will show a table of related order IDs and amounts.
Instead of showing fields, you can link to another Explore or dashboard.
Example:
link: {
  label: "View User Details"
  url: "/explore/ecommerce/users?fields=users.id,users.email&user_id="
}
You can also link to LookML dashboards using:
url: "/dashboards/user_summary_dashboard?user_id="
Use link:
blocks with url:
and Liquid templating (``) to:
drill_fields:
= in-app table of detailslink:
= navigation to another page or tool