Connect BI tools, SQL clients and Postgres drivers to your warehouse at pg.embrasure.ai. In alpha.
Alpha
The Postgres endpoint is in alpha. Expect rough edges: some tools' generated SQL or catalog queries may not work yet, and limits may change. Tell us what breaks, with the tool and its version.
Embrasure speaks the PostgreSQL wire protocol at pg.embrasure.ai. Tools that connect to PostgreSQL, such as Tableau, Power BI, Metabase, DBeaver, psql, JDBC, psycopg, Npgsql and node-postgres, can query your warehouse without an Embrasure driver. Every query goes through the same access checks, data policies and query history as queries in Embrasure.
The endpoint is read-only. It runs SELECT and other read statements; writes, DDL and COPY are refused.
| Setting | Value |
|---|---|
| Host | pg.embrasure.ai |
| Port | 5432 |
| Database | A warehouse database, such as ember |
| User | Your email (any name works; the token identifies you) |
| Password | A personal access token (dpt_…) |
| SSL | Required |
The token decides the workspace and what you can read. Create one in Access Embrasure → API → Personal access tokens; it needs the read scope and lasts 30 days unless you choose another lifetime. Revoking the token ends access, including for connections that are already open. For a shared BI service, create a token for a service account so it doesn't expire with a person's access.
psql "host=pg.embrasure.ai port=5432 dbname=ember user=you@example.com sslmode=verify-full sslrootcert=system"sslrootcert=system (libpq 16 and later) verifies the certificate against your operating system's trusted roots. With older clients, use sslmode=require.
| Client | Connection details |
|---|---|
| JDBC (DBeaver, DataGrip, Metabase, Tableau, Looker) | jdbc:postgresql://pg.embrasure.ai:5432/ember?sslmode=verify-full&sslfactory=org.postgresql.ssl.DefaultJavaSSLFactory |
| Npgsql, Power BI | Host=pg.embrasure.ai;Database=ember;Username=you@example.com;Password=<token>;SSL Mode=VerifyFull |
| psycopg, SQLAlchemy | postgresql://you%40example.com:<token>@pg.embrasure.ai:5432/ember?sslmode=require |
| node-postgres | new pg.Client({ host: "pg.embrasure.ai", database: "ember", user, password, ssl: true }) |
In Power BI and Tableau, choose the PostgreSQL connector, enter the host and database, and use your token as the password.
Each warehouse database is a PostgreSQL database; connect to the one you query most. Its schemas are the schemas you see in the catalog, such as default or a synced source's public. Tables can be named with one, two or three parts, as in SQL: orders, public.orders or ember.public.orders.
Tools browse tables through information_schema and pg_catalog, which list the tables and columns you can read. The warehouse has no primary keys, foreign keys or indexes, so those lists are empty.
Queries are DuckDB SQL and run as written on DuckDB, with no translation. DuckDB's syntax is close to PostgreSQL's (:: casts, ILIKE, date_trunc, extract, CASE, CTEs and window functions), so SQL that BI tools generate usually runs unchanged. SHOW embrasure.sql_dialect returns duckdb.
Queries read your warehouse tables with DuckDB's common scalar, date, string, JSON, aggregate and window functions. Files, URLs, table functions, extensions and settings are refused; a function outside that set fails with Function is not supported by this execution profile.
| Setting | Effect |
|---|---|
statement_timeout | Cancels a statement after this long. The longest is one hour. |
TimeZone | Time zone for timestamp with time zone values. |
embrasure.max_result_rows | 10000, 100000 or unlimited (default). A result above the cap ends with an error. |
Set them with SET, or at connect time with options='-c statement_timeout=60000'.
DECLARE … CURSOR, FETCH) and driver fetch sizes stream a result to your client without loading it there at once. They don't raise the result limit below.| Message | Cause |
|---|---|
SSL connection is required | Set sslmode=require or verify-full. |
password authentication failed | The password is not a valid, unrevoked access token. |
database "…" does not exist | Use a warehouse database name; the error lists some. |
cannot execute … in a read-only transaction | The endpoint only reads. |
the result has more than one column named "…" | Give each result column a distinct alias. |
Function is not supported by this execution profile | The query uses a DuckDB function outside the supported set; see SQL dialect. |
Query result exceeds its byte budget | The result is over 256 MiB. Aggregate, filter or select fewer columns. |
Iceberg snapshots exceed the query scan budget | The tables the query reads total more than 25 GiB. |