Blueprints

Ingest data to and query data from ClickHouse

Source

yaml
id: query-clickhouse
namespace: company.team

tasks:
  - id: create_database
    type: io.kestra.plugin.jdbc.clickhouse.Query
    sql: CREATE DATABASE IF NOT EXISTS helloworld

  - id: create_table
    type: io.kestra.plugin.jdbc.clickhouse.Query
    sql: |
      CREATE TABLE IF NOT EXISTS helloworld.my_first_table
      (
          user_id String,
          message String,
          timestamp DateTime,
          metric Float32
      )
      ENGINE = MergeTree()
      PRIMARY KEY (user_id, timestamp)

  - id: insert_data
    type: io.kestra.plugin.jdbc.clickhouse.Query
    sql: >
      INSERT INTO helloworld.my_first_table (user_id, message, timestamp,
      metric) VALUES
          (101, 'Hello, ClickHouse!',                                 now(),       -1.0    ),
          (102, 'Insert a lot of rows per batch',                     yesterday(), 1.41421 ),
          (102, 'Sort your data based on your commonly-used queries', today(),     2.718   ),
          (101, 'Granules are the smallest chunks of data read',      now() + 5,   3.14159 )

  - id: query_and_store_as_json
    type: io.kestra.plugin.jdbc.clickhouse.Query
    sql: SELECT user_id, message FROM helloworld.my_first_table
    fetchType: STORE

pluginDefaults:
  - type: io.kestra.plugin.jdbc.clickhouse.Query
    values:
      url: jdbc:clickhouse://host.docker.internal:8123/
      username: default

About this blueprint

Ingest SQL

This flow will create a database and a table in ClickHouse if they don't already exist. It will then insert some data into the table and finally query the table to show the data. To test this flow, you can start ClickHouse in a Docker container: docker run -d -p 8123:8123 -p 9000:9000 --name myclickhouse --ulimit nofile=262144:262144 clickhouse/clickhouse-server

Query

More Related Blueprints

New to Kestra?

Use blueprints to kickstart your first workflows.

Get started with Kestra