Skip to Content
DocumentationCachingRecipesDisabling 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.

Was this page useful?