# Disabling pre-aggregations

## Use case

We want to disable [pre-aggregations][ref-pre-aggs] 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][ref-env-vars-recipe-yaml], you can use Jinja with the
built-in `env_var` function:

```yaml filename="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][ref-env-vars-recipe-js], you can use JavaScript
with an auxiliary file that exports your environment variable. Consider the
following file structure:

```tree
.
├── env.js
└── model
    └── orders.js
```

```javascript filename="env.js"
module.exports = {
  pre_aggregations_enabled: process.env.PRE_AGGREGATIONS_ENABLED !== 'false'
}
```

```javascript filename="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][ref-context-symbols-transpilation]. This is
the reason why `measures` are defined as such above.


[ref-pre-aggs]: /product/caching#pre-aggregations
[ref-env-vars-recipe-yaml]: /product/configuration/recipes/environment-variables#yaml-files
[ref-env-vars-recipe-js]: /product/configuration/recipes/environment-variables#javascript-files
[ref-context-symbols-transpilation]: /product/data-modeling/dynamic/schema-execution-environment#context-symbols-transpile
