Build an Executive Dashboard in Looker
Write LookML and build a multi-tile executive dashboard in Looker.
Introduction
30 Second Summary
Every team meeting has that moment where someone asks "what do the numbers say?" and everyone scrambles through a spreadsheet no one fully trusts. Enterprise analytics platforms solve this by giving entire organizations a single source of truth they can query without writing SQL.
In this project, you will build an executive analytics dashboard in Looker that tracks sales performance, customer spending patterns, and shipping efficiency using real e-commerce data. Along the way, you will write LookML code to extend the data model and create calculated metrics that answer real business questions.
What You'll Build
Picture opening a single browser tab, clicking into your dashboard, and screen-sharing live sales trends, shipping metrics, and customer insights with your team or in an interview.
By the end of this project, you'll have:
- A live Looker instance where you can query e-commerce data with point-and-click field selection and see results in seconds.
- A custom LookML dimension you wrote yourself that answers a business question the default model cannot.
- A polished, multi-tile executive dashboard with cumulative sales tracking, target reference lines, and shipping performance metrics you can screen-share in any interview.
- Secret Mission: Create a derived table for customer cohort analysis and schedule automated dashboard delivery.
Are there any prerequisites?
You need a Google account and a credit card for Google Cloud billing setup. You will not be charged. Google Cloud provides a Free Trial with $300 in credit for 90 days, and the Looker trial instance runs at no cost for 90 days.
Before We Start
Before we dive in, let's lock in what you're about to build and why it matters.
You're going to build an executive analytics dashboard in Looker from scratch. By the end, you'll have a live dashboard with custom metrics you wrote yourself, proving you can navigate the platform, extend its data model with LookML, and deliver executive-ready analytics.
Set Up Your Google Cloud Account and Looker Trial Instance
To build dashboards in Looker, you need a live Looker environment to work in.
Google Cloud provides a 90-day Looker trial instance at no cost. In this step, you will create a Google Cloud account, set up a project, and provision your Looker instance so you have a working environment for the rest of the project.
In this step, get ready to:
- Create a Google Cloud account with the free trial and set up a project.
- Enable the Looker API and create a trial instance.
- Sign in to your Looker instance and confirm the homepage loads.
Create a Google Cloud account and project
Google Cloud offers a Free Trial with $300 in credit valid for 90 days. You will not be charged unless you manually upgrade to a paid account after the trial.
- Open your web browser and navigate to cloud.google.com.
- Click Get started for free.
- Sign in with your Google account (or create one if you do not have one).
- Select your country and agree to the Terms of Service.
- Enter your payment information when prompted.
Why does Google ask for a credit card?
Google requires a payment method to verify your identity and prevent fraudulent accounts. You will not be charged during the Free Trial. Billing only starts if you manually upgrade to a paid account later.
- After verification completes, you will see the Google Cloud Console with a $300 credit banner at the top.
Now create a dedicated project for this Looker work.
- Click the project selector dropdown at the top of the Google Cloud Console.
- Click New Project.
- In the Project name field, enter looker-learning.
- Click Create.
- After creation, select looker-learning from the project selector to switch into it.
You should see the project name looker-learning displayed at the top of the Console. This confirms your project is active and ready.
Already have a Google Cloud account?
If you already have an account, just create a new project named looker-learning and confirm billing is enabled on it. You can check billing status under Billing in the navigation menu.
Enable the Looker API and create a trial instance
With your project ready, you can now provision a Looker instance. This is the live environment where you will build Explores and dashboards throughout the project.
- In the Google Cloud Console search bar at the top, type Looker and select the Looker product page from the results.
- If prompted, click Enable to enable the Looker API.
- Click Create An Instance.
- In the Edition section, select a Trial edition (trial-standard).
- Click Create.
How long does provisioning take?
Instance provisioning takes approximately 60 minutes. This is a hard wait from Google's side while your environment is spun up. You can close your browser and come back later.
When you return, navigate back to the Looker Instances page in the Google Cloud Console to check the status. You are looking for the status to change to Active.
Instance creation failing?
Make sure billing is enabled on your looker-learning project. Navigate to Billing in the Console menu and confirm a billing account is linked.
Also confirm you selected the Trial edition. Other editions require a paid subscription.
Help me troubleshoot my Looker instance creation
Sign in to your Looker instance
Once provisioning completes (approximately 60 minutes), your instance is ready to use.
- Return to the Google Cloud Console and navigate to the Looker Instances page (search Looker in the top search bar and select Looker again).
- Confirm your instance shows status Active.
- Click the Instance URL link to open your Looker instance in a new tab.
- Sign in with the same Google account you used for the Cloud Console.
Before the page loads, what do you think you will see? A code editor? A blank canvas? Think about what a business intelligence tool's homepage might look like.
You should now see the Looker homepage with a navigation panel on the left side. This is your working environment for the rest of the project.
Can't see the Instance URL or it says 'Creating'?
If the status still shows Creating, the instance has not finished provisioning. Wait until the full 60 minutes have elapsed and refresh the page.
If you see Active but the Instance URL does not load, try a different browser or clear your browser cache.
Help me access my Looker instance
Your Looker environment is live and ready to explore. Next up, you will query real e-commerce data and see how Looker's semantic layer turns point-and-click field selections into powerful SQL queries.
Explore Data with the Sample E-Commerce Dataset
Your Looker instance is provisioned and you're signed in. Now it's time to see what this platform actually does with real data.
Every Looker instance ships with a preconfigured sample project connected to live BigQuery e-commerce data. You'll query it immediately, building intuition for how Explores, dimensions, and measures work before you touch any code.
In this step, get ready to:
- Navigate to the sample e-commerce Explore.
- Build a query to find top-spending customers.
- View the generated SQL to understand Looker's semantic layer.
Navigate to the sample Explore
An Explore is Looker's interactive query-building interface. You select fields from a panel on the left, and Looker generates the SQL for you behind the scenes.
- In the left navigation panel, click Explore.
- Expand Z) Sample LookML in the Explore menu.
- Click 2) Intermediate Ecommerce to open the Explore page.
The Explore page loads with a field picker on the left showing available dimensions and measures, organized by view.
What is an Explore?
An Explore is Looker's point-and-click query builder. You pick fields from the left panel, add filters, and click Run. Looker handles the SQL, JOINs, and aggregations automatically based on a semantic model defined in LookML.
The sample project comes pre-connected to a BigQuery dataset with tables for users, orders, order items, and products.
Build your first query: Top Spenders
You'll build a query to find your top 15 customers by sales in the last 4 weeks. This demonstrates how Looker lets you answer business questions without writing SQL.
- In the field picker on the left, expand the Users view and click Email to select it as a dimension.
- Expand the Order Items view and click Sales (Validated) to select it as a measure.
You should see both fields highlighted in the field picker. The Email field appears in blue (dimension) and Sales appears in orange (measure).
- In the Data section on the right, set the Row Limit to 15.
- Click the Filters section to expand it.
- Add a filter on Order Items > Created At Week.
- Set the filter condition to is in the last 4 weeks.
Before you click Run, what do you expect to see? Think about what these two fields and the row limit would produce together.
- Click Run to execute the query.
You should see a table of 15 rows, each showing a customer email and their total sales amount for the last 4 weeks. The highest spenders appear at the top.
- Click the Visualization section to expand it and see a bar chart of your top 15 customers by sales.
Don't see any results?
Make sure you selected Sales (Validated) under Order Items (the orange measure), not a similarly named dimension. Measures are the aggregation fields that produce totals.
Check that your filter says is in the last 4 weeks and not a specific date range that might return zero results.
help me troubleshoot why my Looker Explore query is returning no results
Understand what just happened
You just queried a database without writing a single line of SQL. Let's see the SQL that Looker generated for you.
- Click the SQL tab in the Data section to see the SQL query that Looker sent to BigQuery.
You'll see a full SQL statement with a SELECT, JOIN, WHERE clause, GROUP BY, and ORDER BY. Looker wrote all of this from your two field selections and one filter.
What is the semantic layer?
Looker's semantic layer is a model written in LookML that defines how tables relate, how fields should be aggregated, and what business logic applies. When you pick fields in an Explore, Looker consults this model to generate correct SQL automatically.
This is why you never wrote a JOIN statement. The semantic model already knows that the users table connects to order_items through a defined relationship.
What are dimensions and measures?
Dimensions (blue columns) are groupable attributes like email, city, or date. They describe the "what" or "who" of your data.
Measures (orange columns) are aggregations like sum, count, or average. They answer "how much" or "how many" questions. Looker keeps them visually distinct so you always know which fields group your data and which fields calculate against it.
You've queried real data without writing a single line of SQL. Next up, you'll hit a business question that the default model cannot answer, and write your first LookML to fix it.
Write Your First LookML Dimension
You have explored live e-commerce data and seen how Looker generates SQL from simple field selections. Now you want to answer a real business question: how long does shipping take, and is it getting worse?
To answer this, you need a field that calculates the duration between when an order ships and when it arrives. You will look for this field in the Explore, and when you discover it does not exist, you will write LookML to create it yourself.
In this step, get ready to:
- Search the default model for a shipping duration field and discover it does not exist.
- Open the Looker IDE and write a custom LookML dimension that calculates days between ship and delivery.
- Test your new dimension in the Explore and confirm shipping duration data appears.
Search for a shipping duration field
The business question is straightforward: how many days pass between when an order ships and when it arrives at the customer? The Explore should have a field for this.
- Return to the Intermediate Ecommerce Explore from the previous step.
- In the field picker on the left, look through all available fields under Order Items for anything related to shipping duration.
- You will find date fields like Shipped Date and Delivered Date, but no pre-built field that calculates the number of days between them.
This is the limitation. The sample model has the raw dates but not the business metric you need.
Why does this gap exist?
Looker's data model only contains fields that someone has explicitly defined in LookML. The sample project includes common fields, but it cannot anticipate every business question.
Without LookML, you would need to ask a data engineer to add a column or write raw SQL. With LookML, you can add it yourself in minutes.
Open the Looker IDE and add your custom dimension
LookML is the language that powers Looker's semantic layer. You will write a dimension that calculates the number of days between the shipped date and the delivered date.
- Click the Main menu icon to expand the navigation panel.
- Select the Development Mode toggle at the bottom of the menu.
You should see a banner at the top of the screen that says "You are in Development Mode." This means your changes will not affect other users until you push them to production.
What is Development Mode?
Development Mode gives you a private sandbox where you can edit LookML files and preview changes. It uses a separate Git branch under the hood, so nothing you do here affects the production environment.
- Click the Main menu icon and select Develop.
- From the Develop menu, select sample_thelook_ecommerce.
- In the File Browser panel on the left, expand the 2_intermediate_lookml folder.
- Click the order_items view file to open it in the editor.
What if I see a Create Developer Copy button?
The first time you open a project in Development Mode, Looker displays a Create Developer Copy button. Click it to create your personal branch. The IDE will then load the project files for editing.
- Scroll to the bottom of the order_items file and find the closing } brace of the view.
- Add the following dimension just before that closing }:
dimension: shipped_to_delivered_days {
group_label: "Other Dates"
type: duration_day
sql_start: ${shipped_raw} ;;
sql_end: ${delivered_raw} ;;
}
What does this code do?
- dimension: tells Looker this is a groupable attribute (blue field in the picker), not an aggregate.
- type: duration_day calculates the number of whole days between two dates.
- sql_start and sql_end reference the raw timestamp fields already defined in this view using Looker's ${} substitution operator.
- group_label: "Other Dates" places your new field in a named group in the field picker, making it easy to find.
- Click Save Changes at the top of the Looker IDE.
Seeing a syntax error after saving?
- Make sure every line inside the dimension block ends with ;; (double semicolons). LookML uses these as line terminators instead of commas.
- Check that your dimension is placed before the final } that closes the view. If it is outside the view block, Looker will flag an error.
- Confirm that Development Mode is enabled. You cannot save changes in Production Mode.
Help me debug a LookML syntax error in my shipped_to_delivered_days dimension.
Test your new dimension in the Explore
- In the Looker IDE, click the See file actions arrow icon next to the view filename at the top of the file editor panel.
- Select the Explore option that corresponds to the Intermediate Ecommerce Explore.
- In the field picker, expand the Other Dates group and select Shipped to Delivered Days.
- Add the measure # of Order Items from the field picker.
Before you click Run, what do you expect to see in the results? Think about what "Shipped to Delivered Days" represents and what values would make sense.
- Click Run to execute the query.
You should see numeric values (1, 2, 3, etc.) in the Shipped to Delivered Days column, representing how many days each shipment took to arrive. This data did not exist before you wrote that LookML dimension.
Don't see the Shipped to Delivered Days field?
- Make sure you saved your changes in the IDE. Unsaved changes do not appear in the field picker.
- Confirm you are still in Development Mode. The banner at the top should read "You are in Development Mode."
- Check that you are in the Intermediate Ecommerce Explore, not a different Explore.
Help me find my custom dimension in the Looker Explore field picker.
You just extended Looker's data model with five lines of code. Next up, you will use this dimension alongside other metrics to build a multi-tile executive dashboard.
Build Your Executive Dashboard
In the last step, you proved that LookML lets you add new fields to a data model in minutes. But individual queries only answer one question at a time.
Executives need a single view that combines multiple metrics into one story. In this step, you will build a professional multi-tile dashboard, demonstrating the end-to-end workflow that a Looker Customer Success lead guides customers through every day.
In this step, get ready to:
- Create a new dashboard and save your first tile.
- Add a Sales Goal Tracking tile with table calculations for cumulative totals.
- Add a Shipping Performance tile using the custom dimension you built.
Create a new dashboard and add the Top Spenders tile
Your first tile will show the top 15 customers by sales. You will build this query in the Explore, then save it as the first tile on a brand-new dashboard.
- Return to the Intermediate Ecommerce Explore (Main menu > Explore > expand Z) Sample LookML > click 2) Intermediate Ecommerce).
- Clear any existing fields from a previous query by clicking the Clear All button.
- In the field picker on the left, expand Users and select Email.
- Expand Order Items and select Sales (Validated).
- In the Data section, set the Row Limit to 15.
- Click Filters, add a filter on Order Items > Created At Week, and set the condition to is in the last 4 weeks.
- Click Run to execute the query.
You should see a table listing 15 customer emails ranked by their sales amount. The Visualization section below shows a bar chart of these top spenders.
- Click the gear icon in the Explore and select Save to Dashboard.
- Select New Dashboard and enter the title Sales and Shipping Performance.
- Choose a folder (your personal folder works fine) and click Save.
- Click the dashboard link in the confirmation notification to open your new dashboard.
You should see your new dashboard with a single Top Spenders tile displayed.
What just happened?
You saved your Explore query directly as the first tile on a new dashboard. The dashboard is now a container where you will add more tiles, each answering a different business question.
Don't see the dashboard link?
The notification appears briefly at the top of the Explore page. If you missed it, click the Main menu icon, select Dashboards, and look for Sales and Shipping Performance in your folder.
Help me find my saved dashboard in Looker
Add a Sales Goal Tracking tile with table calculations
This tile tracks cumulative weekly sales against a yearly sales goal. You will use table calculations to create derived metrics that do not exist in the underlying data model.
- From your dashboard, click the Dashboard actions three-dot icon and select Edit dashboard.
- Click Add Tile and select New Tile from Explore to open a new tile editor in the Intermediate Ecommerce Explore.
- In the field picker, select Order Items > Created At Week and Order Items > Sales (Validated).
- Click Filters, add a filter on Order Items > Created At Date, and set the condition to is in the year 2024.
- Click Run to confirm you see weekly sales data for 2024.
You should see a data table with one row per week and a sales total for each. Now you will add two table calculations on top of this data.
- In the Custom Fields section of the field picker, click Add and select Table Calculation.
- Enter this formula for the running total:
running_total(${order_items.total_sales_price_validated})
- In the Name field, enter Cumulative Sales.
- Set the Format to short_dollars.
- Click Save to save this table calculation.
- Add a second Table Calculation and enter this formula for the target line:
row() * 72000 + (${cumulative_sales} * 0)
- In the Name field, enter Target Sales.
- Set the Format to Decimals and set decimal places to 0.
- Click Save to save this table calculation.
- Click Run to see both new columns populated with values.
What are table calculations?
Table calculations are derived metrics computed on query results in your browser. They do not modify the underlying database or LookML model.
The running_total function sums each row with all previous rows, producing a cumulative line. The Target Sales formula multiplies the row number by 72,000 to draw a straight diagonal representing $3.75M spread evenly across 52 weeks.
- Set the visualization type to Column chart (click the chart type selector and choose the column icon).
- Click the Edit menu on the Visualization bar, then open the Series tab.
- In Customizations, find Target Sales and change its Type to Line.
- Open the Y tab, scroll to the Markings section, and click Add Reference Line.
- In the Value menu, select custom and enter 3750000 as the reference value (this represents the yearly sales goal).
- Click Save to save the tile to your dashboard.
You should now see a column chart where the blue columns show cumulative weekly sales, a diagonal line shows the target pace, and a horizontal reference line marks the $3.75M annual goal.
Target Sales line not showing?
Make sure you changed the Target Sales series Type to Line in the Series > Customizations section. If it stays as a column, it will be hidden behind the Cumulative Sales columns.
Also confirm you clicked Run after adding both table calculations. Table calculations only produce values after the query runs.
Help me debug my Target Sales line
Add a Shipping Performance tile using your custom dimension
Your final tile uses the custom shipping dimension you created in the previous step. This proves you can extend the data model and immediately surface new metrics in a dashboard.
- In the dashboard (still in edit mode), click Add Tile and select New Tile from Explore again to open a new tile editor.
- In the field picker, expand Other Dates and select Shipped to Delivered Days.
- Select the measure # of Order Items under the Order Items section.
- Add the field Order Items > Created At Week, then click the Pivot icon next to it to pivot it into columns.
- Click Filters and add a filter on Order Items > Created At Week set to is in the last 8 weeks.
- Add a second filter on Shipped to Delivered Days set to is not null.
- Add a third filter on Shipped to Delivered Days set to is > 2.
- Click Run to execute the query.
- Click Save to add this tile to your dashboard.
You should see a pivoted visualization showing order item counts broken down by shipping duration (3+ days) across the last 8 weeks.
- Click Save in the blue dashboard toolbar to save all your changes and exit edit mode.
Before you look at the final result, predict what you expect to see. How many tiles should appear? Which tile has a diagonal line overlaid on columns?
You should now see your completed Sales and Shipping Performance dashboard with 3 tiles: the Top Spenders bar chart, the Sales Goal Tracking column chart with a target line and a $3.75M reference marker, and the Shipping Performance pivot table.
Only seeing 1 or 2 tiles?
Make sure you clicked Save after adding each tile inside the tile editor, AND clicked Save in the dashboard's blue toolbar to commit all changes. If you exited edit mode without saving, the new tiles are lost.
Help me recover my missing dashboard tiles
Your executive dashboard is complete. You have gone from raw data exploration to a polished multi-tile view that could be screen-shared in a stakeholder meeting. If you are ready for a bigger challenge, the Secret Mission takes you into derived tables and automated delivery.
Secret mission
Customer Cohort Analysis with a Derived Table
Ready to go beyond single dimensions? In this bonus challenge, you will create a SQL-based derived table that builds an entirely new virtual table for customer cohort analysis. Then you will join it into a new Explore, add a cohort tile to your dashboard, and schedule automated delivery.
Clean Up Your Resources
Clean Up Your Resources
Decide whether to keep your resources running, pause them to come back later, or delete them entirely. This project uses a Looker trial instance (free for 90 days) and a Google Cloud project covered by the $300 free trial credit, so there are no immediate ongoing costs.
Cost warning
The Looker trial instance is free for 90 days. After 90 days, you must delete it or it will require a paid subscription.
The $300 GCP free trial credit covers any BigQuery usage from the sample dataset. If you exhaust the credit or the 90-day trial period ends, remaining resources may incur charges.
Resources you used:
- Looker trial instance (trial-standard edition, free for 90 days).
- Google Cloud project (looker-learning) with billing enabled, covered by the $300 free trial credit.
Keep everything running
No action needed. Choose this if you are still actively building dashboards and experimenting with LookML.
- Your Looker trial instance stays active for 90 days at no cost.
- Your Google Cloud project remains available with the $300 free trial credit.
- All dashboards, LookML changes, and scheduled deliveries you created continue to work.
Pause - I'll come back to this later
The Looker trial instance cannot be paused. It stays running but costs nothing during the 90-day trial period.
- No action required. Your instance and project remain active at no cost until the trial expires.
- Set a calendar reminder before the 90-day mark to decide whether to delete or continue.
Delete - I don't want to use this again
Remove all project resources permanently. Follow these steps to clean up everything.
Delete your Looker instance:
- In the Google Cloud Console, search for "Looker" and navigate to the Looker Instances page.
- Click the three-dot menu beside your instance.
- Select Delete Instance.
- In the pop-up, type your instance name to confirm and click DELETE.
Delete your Google Cloud project (removes all resources at once):
- In the Google Cloud Console, go to the Manage resources page.
- Select the looker-learning project.
- Click Delete.
- Enter the project ID and click Shut down.
Deleting the project stops all billing and removes all associated resources, including the Looker instance if you have not already deleted it separately.
Nice Work!
Nice Work!
You just built a professional executive analytics dashboard in Looker from scratch. From provisioning your own instance to writing LookML and assembling multi-tile visualizations, you have proven you can navigate the full Looker workflow end to end.
Here's what you accomplished:
- Set up a Google Cloud account and provisioned a Looker (Google Cloud core) trial instance from scratch.
- Explored live e-commerce data using Looker's Intermediate Ecommerce sample, understanding dimensions, measures, and the semantic layer.
- Wrote LookML in Looker's IDE to create a custom shipping duration dimension, proving you can extend data models on demand.
- Built a multi-tile executive dashboard with table calculations (running totals, target lines) and reference markers.
- Secret Mission: Created a SQL-based derived table for customer cohort analysis, joined it to an Explore, and scheduled automated dashboard delivery.
Ready to quiz yourself?