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.