Skip to content

Move default_time_dimension from Metric to Model#8

Merged
nicosuave merged 1 commit intomainfrom
use-default-time-dimension
Dec 3, 2025
Merged

Move default_time_dimension from Metric to Model#8
nicosuave merged 1 commit intomainfrom
use-default-time-dimension

Conversation

@nicosuave
Copy link
Copy Markdown
Member

@nicosuave nicosuave commented Dec 3, 2025

Summary

Breaking change: default_time_dimension and default_grain are now model-level settings, not per-metric.

This aligns with MetricFlow's approach (defaults.agg_time_dimension) where all metrics in a semantic model share the same default time dimension.

Changes

  • Removed default_time_dimension and default_grain from Metric
  • Added default_time_dimension and default_grain to Model
  • Generator auto-includes default time dimension when querying metrics
  • Updated MetricFlow adapter to use defaults.agg_time_dimension
  • Updated Sidemantic adapter for model-level defaults
  • Updated Omni adapter to use model's default

Example

models:
  - name: orders
    default_time_dimension: order_date
    default_grain: month
    dimensions:
      - name: order_date
        type: time
    metrics:
      - name: revenue
        agg: sum
        sql: amount
# Auto-includes orders.order_date__month
layer.compile(metrics=["orders.revenue"])

# Override with different granularity
layer.compile(metrics=["orders.revenue"], dimensions=["orders.order_date__week"])

@nicosuave nicosuave force-pushed the use-default-time-dimension branch from 3bfc48d to cd9139c Compare December 3, 2025 16:22
@nicosuave nicosuave changed the title Use default_time_dimension from metrics when compiling queries Move default_time_dimension from Metric to Model Dec 3, 2025
@nicosuave nicosuave force-pushed the use-default-time-dimension branch from cd9139c to dc6c05f Compare December 3, 2025 16:24
Breaking change: default_time_dimension and default_grain are now
model-level settings, not per-metric. This aligns with MetricFlow's
approach where all metrics in a semantic model share the same default
time dimension.

When a model has default_time_dimension set and no time dimension from
that model is in the query, auto-include it. Also applies default_grain
if specified.

User-provided time dimensions override the default.
@nicosuave nicosuave force-pushed the use-default-time-dimension branch from dc6c05f to be69572 Compare December 3, 2025 16:28
@nicosuave nicosuave merged commit 6c3e744 into main Dec 3, 2025
10 checks passed
@nicosuave nicosuave deleted the use-default-time-dimension branch December 3, 2025 16:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant