Documentation
Recipes
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 !== 'false' }
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.