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.jsenv.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.