Skip to main content

Time Dimensions

While every metrics view has a primary timeseries column that powers the main time series chart, you can define additional time dimensions using type: time. This enables users to filter and analyze data across multiple temporal columns.

When to Use Time Dimensions​

Time dimensions are useful when your data contains multiple date or timestamp columns that users may want to filter by:

  • Order date vs. Ship date: Filter orders by when they were placed or when they were shipped
  • Created vs. Updated timestamps: Analyze records by creation date or last modification
  • Event time vs. Processing time: Distinguish between when events occurred and when they were recorded
  • Multiple business dates: Handle scenarios like invoice date, due date, and payment date

Adding a Time Dimension​

To create a time dimension, add type: time to your dimension definition:

version: 1
type: metrics_view

model: orders_model
timeseries: order_date # Primary time series for charts

dimensions:
- name: order_date
display_name: Order Date
column: order_date
type: time

- name: ship_date
display_name: Ship Date
column: ship_date
type: time

- name: customer_region
column: region

Time Dimension vs. Timeseries​

Understanding the difference between these two concepts is important:

Featuretimeseries (top-level)type: time (dimension)
PurposePowers main time series chartEnables time-based filtering
Chart displayShows trends over timeUsed in filter panel
RequiredNo (but recommended)No
Multiple allowedNo (one per metrics view)Yes

The primary timeseries column determines which dates appear on the x-axis of your time series visualizations. Time dimensions provide additional temporal filtering options in the dashboard filter panel.

Full Example​

Here's a complete example with multiple time dimensions:

version: 1
type: metrics_view

model: sales_model
timeseries: transaction_date

dimensions:
# Time dimensions
- name: transaction_date
display_name: Transaction Date
column: transaction_date
type: time

- name: fulfillment_date
display_name: Fulfillment Date
column: fulfillment_date
type: time

- name: return_date
display_name: Return Date
column: return_date
type: time

# Categorical dimensions
- name: product_category
display_name: Product Category
column: category

- name: store_location
display_name: Store Location
column: store_id

measures:
- name: total_sales
display_name: Total Sales
expression: SUM(amount)

- name: order_count
display_name: Order Count
expression: COUNT(*)

Using Expressions​

You can also create time dimensions using expressions to transform or derive time values:

dimensions:
- name: order_month
display_name: Order Month
expression: DATE_TRUNC('month', order_date)
type: time

- name: fiscal_quarter_start
display_name: Fiscal Quarter Start
expression: DATE_TRUNC('quarter', order_date + INTERVAL '3 months') - INTERVAL '3 months'
type: time
tip

Time dimensions work with columns of type TIMESTAMP, TIME, or DATE. If your source data stores dates in a different format (like strings), use an expression to convert them to a proper date type.