Skip to content

Metabase SQL API doesn't use pre-aggregationΒ #8230

@itestyoy

Description

@itestyoy

Hi! We have pre-aggregations set up like this and we're using Metabase with the SQL API:

model_filters_1_2_rollup: {
    measures: [],
    dimensions: [
        CUBE.app_name,
        CUBE.user_first_touch_date,
        CUBE.date,
        CUBE.app_version,
        CUBE.user_dimensions_initial_app_version,
        CUBE.user_dimensions_country_code,
        CUBE.user_dimensions_network_group,
        CUBE.user_dimensions_device_type,
        CUBE.user_dimensions_is_adjust_user
    ],
    time_dimension: CUBE.date_technical,
    .............................
},

The query via the SQL API doesn't seem to recognize the pre-aggregation, possibly due to the time dimension.

However, if we create a query via the REST API, it correctly utilizes the pre-aggregation:

{
  "dimensions": [
    "analytics_analysis_view.user_dimensions_initial_app_version"
  ],
  "order": {
    "analytics_analysis_view.user_dimensions_device_type": "asc"
  },
  "filters": [
    {
      "member": "analytics_analysis_view.user_dimensions_country_code",
      "operator": "equals",
      "values": ["us"]
    },
    {
      "member": "analytics_analysis_view.app_name",
      "operator": "equals",
      "values": ["app"]
    },
    {
      "member": "analytics_analysis_view.date",
      "operator": "inDateRange",
      "values": ["2024-01-01", "2024-02-01"]
    },
    {
      "member": "analytics_analysis_view.user_first_touch_date",
      "operator": "inDateRange",
      "values": ["2024-01-01", "2024-02-01"]
    }
  ]
}

But the query generated via Metabase may not utilize the pre-aggregation properly. It might look like this with timeDimensions:

{
  "dimensions": [
    "analytics_analysis_view.user_dimensions_initial_app_version"
  ],
  "order": {
    "analytics_analysis_view.user_dimensions_device_type": "asc"
  },
  "filters": [
    {
      "member": "analytics_analysis_view.user_dimensions_country_code",
      "operator": "equals",
      "values": ["us"]
    },
    {
      "member": "analytics_analysis_view.app_name",
      "operator": "equals",
      "values": ["app"]
    },
    {
      "member": "analytics_analysis_view.date",
      "operator": "inDateRange",
      "values": ["2024-01-01", "2024-02-01"]
    }
  ],
  "timeDimensions": [
    {
      "dimension": "analytics_analysis_view.user_first_touch_date",
      "granularity": "day",
      "dateRange": "Last 7 days"
    }
  ]
}

How can we ensure that the pre-aggregation is utilized via the SQL API?

Metadata

Metadata

Assignees

No one assigned

    Labels

    pre-aggregationsIssues related to pre-aggregationsquestionThe issue is a question. Please use Stack Overflow for questions.tool:metabase

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions