Required access
Use a dedicated read-only database user. Source privileges should not includeCREATE, DROP, ALTER, INSERT, or DELETE.
SELECT only on the schemas and tables the workspace needs. Use a
secret manager for the real password. Do not commit it to source control.
Connection fields
For ClickHouse Cloud, copy the host, username, password, and database from
the cloud console and select Secure / TLS. The HTTP port defaults to
8443 and the native port defaults to 9440 automatically.
Create the connection
- Open Connections.
- Click + New Connection.
- Set the role to Source.
- Choose ClickHouse.
- Fill the connection fields.
- Click Test Connection.
- Save only after the test succeeds.
Discover and preview
After creating a pipeline:- Open the pipeline Source tab.
- Click Discover catalog.
- Enable each required
database.tablestream. - Choose its sync mode and cursor when applicable.
- Preview representative rows and confirm field types.
- Click Save stream settings.
system and INFORMATION_SCHEMA are filtered out of
discovery. The default database is treated as a regular user database and
is preserved.
Selected streams receive stable staging names such as default__events.
Full Table mode
Use Full Table for the first run, small reference tables, or deliberate snapshots. A run reads every selected source row visible to the source user.Incremental mode
Use Incremental for growing tables with a stable cursor:updated_atfor inserts and updates;created_atfor append-only tables; or- a monotonically increasing identifier.
id for Upsert delivery.
Type compatibility
ClickHouse sources support common analytical types, including:UInt*,Int*,Float*,DecimalString,FixedString,LowCardinality(...)Date,Date32,DateTime,DateTime64UUID,IPv4,IPv6Enum8,Enum16Nullable(...),Array(...),Map(...),Tuple(...)
DateTime64values with more than microsecond precision are read to microseconds.- Integers wider than 128 bits and decimals wider than 38 digits are kept exactly as text.
Table engines
- Queue tables (Kafka, RabbitMQ, NATS, FileLog, S3Queue, AzureQueue) are never read, because reading them would consume messages. They appear in discovery as not readable. Read the table a materialized view writes to instead.
- Null tables always read zero rows. Distributed, Merge, Dictionary, and tables that read external storage are readable; their cost and contents follow the cluster or the external system.
- ReplacingMergeTree and other merge engines can return more than one row per key until ClickHouse merges them. Turn on Read with FINAL in the stream’s incremental settings to read one row per key; reads are slower.
Sample source table
Troubleshooting
- Connection refused: verify host, HTTP port, network allowlist, and firewall rules.
- Authentication failed: verify username, password, and database name.
- TLS connection failure: check the Secure / TLS toggle and the HTTP port. For self-hosted ClickHouse on TLS, make sure the certificate is publicly trusted or supply the CA certificate.
- No tables discovered: grant
SELECTon the schema and tables. System schemas are filtered out by design. - Preview fails: check table permissions and unsupported custom types.
- Incremental rows missing: confirm the cursor changes on updates and
is not null. Updates made with
ALTER UPDATEand deleted rows are not seen by a cursor unless your writes also change the cursor column. - A table cannot be read: it uses a queue or streaming engine; see Table engines.
- Duplicate destination rows: use a stable primary key and Upsert delivery.

