Skip to main content

ClickHouse v2

A fresh implementation of ClickHouse leveraging our new CDK.

Improvements over v1

  • All sync modes supported
  • Data will be typed and written to columns matching the defined schema (Direct Load)
  • Performance improvements
  • Actively maintained and developed by Airbyte

Features

All sync modes are supported.

FeatureSupported?(Yes/No)Notes
Full Refresh SyncYes
Incremental - Append SyncYes
Incremental - Append + DedupedYesLeverages ReplacingMergeTree
NamespacesYes

Output Schema

Each stream will be output into its own table in ClickHouse in either the configured default database (default) or a database corresponding to the specified namespace on the stream.

The types we are using have the following properties:

  • The decimal types have a precision of 9 digits, we are using the ClickHouse type NUMBER128(9)
  • The Timestamp types have a millisecond precision, we are using the ClickHouse type DATETIME64(3)
  • The object type is converted to JSON if the JSON option is selected; otherwise it will be a String
  • The integers are Int64
  • The booleans are Bool
  • The strings are String
  • The unions will be converted as a String
  • The times will be converted to a String
  • The arrays will be converted to a String

Requirements

To use the ClickHouse destination, you'll need:

  • A cloud ClickHouse instance
  • A ClickHouse server version 21.8.10.19 or above

Configure Network Access

Make sure your ClickHouse database can be accessed by Airbyte. If your database is within a VPC, you may need to allow access from the IP you're using to expose Airbyte.

Permissions

You need a ClickHouse user with the following permissions:

  • can create tables and write rows.
  • can create databases e.g:

You can create such a user by running:

GRANT CREATE ON * TO airbyte_user;
GRANT CREATE ON {your configured default database} * TO airbyte_user;
GRANT DROP ON * TO airbyte_user;
GRANT TRUNCATE ON * TO airbyte_user;
GRANT INSERT ON * TO airbyte_user;
GRANT SELECT ON * TO airbyte_user;
GRANT CREATE DATABASE ON airbyte_internal.* TO airbyte_user;
GRANT CREATE TABLE ON airbyte_internal.* TO airbyte_user;
GRANT DROP ON airbyte_internal.* TO airbyte_user;
GRANT TRUNCATE ON airbyte_internal.* TO airbyte_user;
GRANT INSERT ON airbyte_internal.* TO airbyte_user;
GRANT SELECT ON airbyte_internal.* TO airbyte_user;

You can also use a pre-existing user but we highly recommend creating a dedicated user for Airbyte.

Reference

Config fields reference

Field
Type
Property name
string
database
boolean
enable_json
string
hostname
string
password
string
port
string
protocol
string
username

Changelog

Expand to review
VersionDatePull RequestSubject
0.1.82025-06-30#62100Add JSON support.
0.1.72025-06-24#62047Remove the use of the internal namespace.
0.1.62025-06-24#62047Hide protocol option when running on cloud.
0.1.52025-06-24#62043Expose database protocol config option.
0.1.42025-06-24#62040Checker inserts into configured DB.
0.1.32025-06-24#62038Allow the client to connect to the resolved DB.
0.1.22025-06-23#62028Enable the registry in OSS and cloud.
0.1.12025-06-23#62022Publish first beta version and pin the CDK version.
0.1.02025-06-23#62024Release first beta version.