Documentation
Postgres

Postgres

Prerequisites

Setup

Manual

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

CUBEJS_DB_TYPE=postgres
CUBEJS_DB_HOST=my.postgres.host
CUBEJS_DB_NAME=my_postgres_database
CUBEJS_DB_USER=postgres_user
CUBEJS_DB_PASS=**********

Environment Variables

Environment VariableDescriptionPossible ValuesRequired
CUBEJS_DB_HOSTThe host URL for a databaseA valid database host URL
CUBEJS_DB_PORTThe port for the database connectionA valid port number
CUBEJS_DB_NAMEThe name of the database to connect toA valid database name
CUBEJS_DB_USERThe username used to connect to the databaseA valid database username
CUBEJS_DB_PASSThe password used to connect to the databaseA valid database password
CUBEJS_DB_SSLIf true, enables SSL encryption for database connections from Cubetrue, false
CUBEJS_CONCURRENCYThe number of concurrent connections each queue has to the database. Default is 2A valid number
CUBEJS_DB_MAX_POOLThe maximum number of concurrent database connections to pool. Default is 8A valid number

Pre-Aggregation Feature Support

count_distinct_approx

Measures of type count_distinct_approx can only be used in pre-aggregations when using the Postgres HLL extension (opens in a new tab) with Postgres as a source database.

Pre-Aggregation Build Strategies

To learn more about pre-aggregation build strategies, head here.

FeatureWorks with read-only mode?Is default?
Batching
Export Bucket--

By default, Postgres uses batching to build pre-aggregations.

Batching

No extra configuration is required to configure batching for Postgres.

Export Bucket

Postgres does not support export buckets.

SSL

To enable SSL-encrypted connections between Cube and Postgres, 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.

Additional Configuration

AWS RDS

Use CUBEJS_DB_SSL=true to enable SSL if you have SSL enabled for your RDS cluster. Download the new certificate here (opens in a new tab), and provide the contents of the downloaded file to CUBEJS_DB_SSL_CA. All other SSL-related environment variables can be left unset. See the SSL section for more details. More info on AWS RDS SSL can be found here (opens in a new tab).

Google Cloud SQL

You can connect to an SSL-enabled MySQL database by setting CUBEJS_DB_SSL to true. You may also need to set CUBEJS_DB_SSL_SERVERNAME, depending on how you are connecting to Cloud SQL (opens in a new tab).

Heroku

Unless you're using a Private or Shield Heroku Postgres database, Heroku Postgres does not currently support verifiable certificates. Here is the description of the issue from Heroku (opens in a new tab).

As a workaround, you can set rejectUnauthorized option to false in the Cube Postgres driver:

const PostgresDriver = require("@cubejs-backend/postgres-driver");
module.exports = {
  driverFactory: () =>
    new PostgresDriver({
      ssl: {
        rejectUnauthorized: false,
      },
    }),
};