Redshift

How to connect Redshift to Count

Click "Connect a database"

Enter your connection details

To connect your database, you'll need to enter:

  • Host

  • Port

  • Database name

  • Username

  • Password

You'll also need to ensure that your firewall accepts requests from the following IP addresses:

34.107.75.117
35.198.189.90
35.234.110.177

Connections between Count and your database are encrypted by SSL (TLS). Your database must be configured to use SSL in order for Count to connect.

Connect

Once you hit Connect you will see your connection details including a full list of tables accessible with this connection.

Use Projects to manage which users have access to which tables.

Advanced settings

The Redshift connection in Count supports a number of advanced settings:

  • Enable case-sensitive identifiers - read more about the impact of this setting here.

  • Max concurrent connections - Set the maximum number of simultaneous connections between Count and your database. If your database has a lower limit than the value set here, then the lower limit will take precedence.

  • Query timeout - queries executed from Count will be automatically aborted after this length of time.

Troubleshooting

If you're having trouble connecting, check the error message returned at the top of the Connection page against the table below for a possible fix.

Error snippet

Possible resolution

GETADDRINFO ENOTFOUND

Is the server running on

Connection time out

Connection refused

Could not connect to server

Failed to establish a connection

ECONNREFUSED

Check your Host and Port settings and that your database server is open to accept connections from the whitelisted Count IP addresses

Password authentication failed for user

Password authentication failed; please check Username, Password, and Database name settings

No PG_HBA.CONF entry for host

SETUSERID: USER

Check the Username with these credentials is authorised to connect to the database from the whitelisted Count IP addresses

Schema/tables are missing from my connection

If you do not see tables listed in Count that you expect, please check that the permissions for the user account used by Count are configured correctly. To test which tables your credentials have access to, you can try running a query from a Count cell like:

select * from svv_all_tables

You should also confirm:

  • The user account used for Count is covered by any IP whitelisting rules you have established.

  • The user account used for Count has been granted usage permissions on any schemas you require. The permissions need to be granted by an account with schema ownership.

Some permissions may need a new session before they take effect. Count may retain a session for some time after it is last used, so waiting a little before refreshing schema may help.

SSL certificate errors

What does "Trust server certificate" mean?

If you are unable to obtain a copy of your database CA (e.g. some Heroku systems), the only way to initiate encrypted communication with your database is to trust that the certificate sent by the server is correct (SSL mode "require"). This ensures full protection against eavesdropping, but not against MITM attacks. Count will only use this mode of communication if you activate the "Trust server certificate" in the "Advanced" section of the connection setup.

You should consult your database administrator to confirm that this setting is appropriate for your system.

If you are having trouble connecting, reach out to us to schedule a help session

Limitations

Assert

A commonly encountered idiosyncrasy for Redshift users is the Assert error. A query submitted to Redshift can result in an Assert error for a number of reasons, one of them being a bug in the Redshift itself. Below is a list of cases and workarounds for how to amend queries returning Assert errors.

Multiple subqueries in WHERE clause

The following query may result in an Assert error due to the subqueries in the WHERE clause:

SELECT date_col FROM public.table 
WHERE date_col 
    BETWEEN (SELECT value FROM start_date) AND (SELECT value FROM end_date)

Fix 1 - use a CROSS JOIN instead of multiple subqueries

SELECT date_col FROM public.table
  CROSS JOIN start_date
  CROSS JOIN end_date
WHERE date_col 
  BETWEEN start_date.value AND end_date.value

Fix 2 - use a jinja template

SELECT date_col FROM public.table 
WHERE date_col 
    BETWEEN {{ cells.start_date }}::date AND {{ cells.end_date }}::date

Last updated