Guides
Query acceleration
Disabling pre-aggregations

Disabling pre-aggregations

Use case

We want to disable pre-aggregations unless some condition is fulfilled, e.g., unless the deployment is running in a production environment.

Data modeling

You can add an environment variable and use it in data model files to enable or disable pre-aggregations.

YAML files

In YAML data model files, you can use Jinja with the built-in env_var function:

model/orders.yml
cubes:
  - name: orders
    sql_table: orders
 
    measures:
      - name: count
        type: count
    
    {% if env_var('PRE_AGGREGATIONS_ENABLED', True) %}
    pre_aggregations:
      - name: count
        measures:
          - count
    {% endif %}

JavaScript files

In JavaScript data model files, you can use JavaScript with an auxiliary file that exports your environment variable. Consider the following file structure:

.
├── env.js
└── model
    └── orders.js
env.js
module.exports = {
  pre_aggregations_enabled: process.env.PRE_AGGREGATIONS_ENABLED || true
}
model/orders.js
import { pre_aggregations_enabled } from '../env'
 
cube(`orders`, {
  sql_table: `orders`,
 
  measures: {
    count: {
      type: `count`
    }
  },
  
  pre_aggregations: pre_aggregations_enabled
    ? {
      main: {
        measures: (CUBE) => [
          `${CUBE}.count`
        ]
      }
    }
    : {}
})

Note that you will have to adjust the pre-aggregation definition to account for the context symbol transpilation. This is the reason why measures are defined as such above.