Skip to main content
ClickHouse is a fast and resource efficient open-source database for real-time applications and analytics.

Prerequisites

Setup

Manual

Add the following to a .env file in your Cube project:

Environment Variables

Pre-Aggregation Feature Support

When using pre-aggregations with ClickHouse, you have to define indexes in pre-aggregations. Otherwise, you might get the following error: ClickHouse doesn't support pre-aggregations without indexes.

count_distinct_approx

Measures of type count_distinct_approx can not be used in pre-aggregations when using ClickHouse as a source database.

rollup_join

You can use rollup_join pre-aggregations to join data from ClickHouse and other data sources inside Cube Store. Alternatively, you can leverage ClickHouse support for integration table engines to join data from ClickHouse and other data sources inside ClickHouse. To do so, define table engines in ClickHouse and connect your ClickHouse as the only data source to Cube.

Pre-Aggregation Build Strategies

To learn more about pre-aggregation build strategies, head here.
By default, ClickHouse uses batching to build pre-aggregations.

Batching

No extra configuration is required to configure batching for ClickHouse.

Export Bucket

Clickhouse driver only supports using AWS S3 for export buckets.

AWS S3

For improved pre-aggregation performance with large datasets, enable export bucket functionality by configuring Cube with the following environment variables:
Ensure the AWS credentials are correctly configured in IAM to allow reads and writes to the export bucket in S3.

SSL

To enable SSL-encrypted connections between Cube and ClickHouse, set the CUBEJS_DB_SSL environment variable to true. For more information on how to configure custom certificates, please check out Enable SSL Connections to the Database.

Custom headers

The ClickHouse driver supports forwarding custom HTTP headers on every request to the ClickHouse server. This is useful when requests pass through a proxy or gateway that expects additional headers (e.g., for routing or tracing). See the ClickHouse JavaScript client configuration for more details. Custom headers can’t be configured via environment variables. Instead, use the driver_factory configuration option to pass a headers object to the driver:
In multitenant deployments, you can use the security context to pass per-tenant headers, for example to forward a user token from the API request down to ClickHouse:

Additional Configuration

You can connect to a ClickHouse database when your user’s permissions are restricted to read-only, by setting CUBEJS_DB_CLICKHOUSE_READONLY to true. You can connect to a ClickHouse database with compression enabled, by setting CUBEJS_DB_CLICKHOUSE_COMPRESSION to true.