• Stars
    star
    439
  • Rank 95,508 (Top 2 %)
  • Language
    Clojure
  • License
    Apache License 2.0
  • Created about 5 years ago
  • Updated about 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

ClickHouse database driver for the Metabase business intelligence front-end

ClickHouse driver for Metabase


About

ClickHouse (GitHub) database driver for the Metabase (GitHub) business intelligence front-end.

Installation

Run using Metabase Jar

  1. Download a fairly recent Metabase binary release (jar file) from the Metabase distribution page.
  2. Download the ClickHouse driver jar from this repository's Releases page
  3. Create a directory and copy the metabase.jar to it.
  4. In that directory create a sub-directory called plugins.
  5. Copy the ClickHouse driver jar to the plugins directory.
  6. Make sure you are the in the directory where your metabase.jar lives.
  7. Run MB_PLUGINS_DIR=./plugins; java -jar metabase.jar.

For example (using Metabase v0.45.3 and ClickHouse driver 1.1.2):

export METABASE_VERSION=0.45.3
export METABASE_CLICKHOUSE_DRIVER_VERSION=1.1.2

mkdir -p mb/plugins && cd mb
curl -o metabase.jar https://downloads.metabase.com/$METABASE_VERSION/metabase.jar
curl -L -o plugins/ch.jar https://github.com/ClickHouse/metabase-clickhouse-driver/releases/download/$METABASE_CLICKHOUSE_DRIVER_VERSION/clickhouse.metabase-driver.jar
MB_PLUGINS_DIR=./plugins; java -jar metabase.jar

Run as a Docker container

Alternatively, if you don't want to run Metabase Jar, you can use a Docker image:

export METABASE_DOCKER_VERSION=v0.45.3
export METABASE_CLICKHOUSE_DRIVER_VERSION=1.1.2

mkdir -p mb/plugins && cd mb
curl -L -o plugins/ch.jar https://github.com/ClickHouse/metabase-clickhouse-driver/releases/download/$METABASE_CLICKHOUSE_DRIVER_VERSION/clickhouse.metabase-driver.jar
docker run -d -p 3000:3000 \
  --mount type=bind,source=$PWD/plugins/ch.jar,destination=/plugins/clickhouse.jar \
  metabase/metabase:$METABASE_DOCKER_VERSION

Choosing the Right Version

Metabase Release Driver Version
0.33.x 0.6
0.34.x 0.7.0
0.35.x 0.7.1
0.37.3 0.7.3
0.38.1+ 0.7.5
0.41.2 0.8.0
0.41.3.1 0.8.1
0.42.x 0.8.1
0.44.x 0.9.1
0.45.x 1.1.0
0.46.x 1.1.2

Creating a Metabase Docker image with ClickHouse driver

You can use a convenience script build_docker_image.sh which takes three arguments: Metabase version, ClickHouse driver version, and the desired final Docker image tag.

./build_docker_image.sh v0.44.6 0.8.3 my-metabase-with-clickhouse:v0.0.1

where v0.44.6 is Metabase version, 0.8.3 is ClickHouse driver version, and my-metabase-with-clickhouse:v0.0.1 being the tag.

Then you should be able to run it:

docker run -d -p 3000:3000 --name my-metabase my-metabase-with-clickhouse:v0.0.1

or use with Docker compose, for example:

version: '3.8'
services:
  clickhouse:
    image: 'clickhouse/clickhouse-server:22.10.2-alpine'
    container_name: 'metabase-clickhouse-server'
    ports:
      - '8123:8123'
      - '9000:9000'
    ulimits:
      nofile:
        soft: 262144
        hard: 262144
  metabase:
    image: 'my-metabase-with-clickhouse:v0.0.1'
    container_name: 'metabase-with-clickhouse'
    ports:
      - '3000:3000'

Using certificates

In the "Advanced options", add the following to the "Additional JDBC connection string options" input:

sslrootcert=/path/to/ca.crt

where /path/to/ca.crt is the absolute path to the server CA on the Metabase host or Docker container (depends on your deployment).

Make sure that you tick "Use a secure connection (SSL)" as well.

Operations

The driver should work fine for many use cases. Please consider the following items when running a Metabase instance with this driver:

  • Create a dedicated user for Metabase, whose profile has readonly set to 2.
  • Consider running the Metabase instance in the same time zone as your ClickHouse database; the more time zones involved the more issues.
  • Compare the results of the queries with the results returned by clickhouse-client.
  • Metabase is a good tool for organizing questions, dashboards etc. and to give non-technical users a good way to explore the data and share their results. The driver cannot support all the cool special features of ClickHouse, e.g. array functions. You are free to use native queries, of course.

Known limitations

  • As the underlying JDBC driver version does not support columns with AggregateFunction type, these columns are excluded from the table metadata and data browser result sets to prevent sync or data browsing errors.

Contributing

Check out our contributing guide.

More Repositories

1

ClickHouse

ClickHouse® is a free analytics DBMS for big data
C++
33,966
star
2

clickhouse-go

Golang driver for ClickHouse
Go
2,709
star
3

clickhouse-java

Java client and JDBC driver for ClickHouse
Java
1,324
star
4

clickhouse-presentations

Presentations, meetups and talks about ClickHouse
HTML
931
star
5

ClickBench

ClickBench: a Benchmark For Analytical Databases
HTML
542
star
6

clickhouse_exporter

This is a simple server that periodically scrapes ClickHouse stats and exports them via HTTP for Prometheus(https://prometheus.io/) consumption.
Go
354
star
7

ch-go

Low-level Go Client for ClickHouse
Go
295
star
8

clickhouse-cpp

C++ client library for ClickHouse
C++
287
star
9

NoiSQL

NoiSQL — Generating Music With SQL Queries
SQL
272
star
10

graphouse

Graphouse allows you to use ClickHouse as a Graphite storage.
Java
257
star
11

clickhouse-connect

Python driver/sqlalchemy/superset connectors
Python
241
star
12

clickhouse-odbc

ODBC driver for ClickHouse
C++
235
star
13

dbt-clickhouse

The Clickhouse plugin for dbt (data build tool)
Python
201
star
14

clickhouse-jdbc-bridge

A JDBC proxy from ClickHouse to external databases
Java
156
star
15

clickhouse-js

Official JS client for ClickHouse DB
TypeScript
152
star
16

github-explorer

Everything You Always Wanted To Know About GitHub (But Were Afraid To Ask)
HTML
129
star
17

clickhouse-kafka-connect

ClickHouse Kafka Connector
Java
126
star
18

clickhouse-docs

Official documentation for ClickHouse
JavaScript
86
star
19

examples

ClickHouse Examples
Jupyter Notebook
67
star
20

click-ui

The home of the ClickHouse design system and component library.
TypeScript
59
star
21

homebrew-clickhouse

ClickHouse Homebrew tap (old repository, unused)
58
star
22

clickhouse-tableau-connector-jdbc

Tableau connector to ClickHouse using JDBC driver
JavaScript
55
star
23

pastila

Paste toy-service on top of ClickHouse
HTML
43
star
24

power-bi-clickhouse

This connector allows you to retrieve data from ClickHouse directly into Power BI for analysis and visualization
41
star
25

libhdfs3

HDFS file read access for ClickHouse
C++
27
star
26

ch-bench

Benchmarks for ch
Go
27
star
27

HouseClick

House prices app
JavaScript
22
star
28

sysroot

Files for cross-compilation
C
18
star
29

clickpy

PyPI analytics powered by ClickHouse
JavaScript
18
star
30

terraform-provider-clickhouse

Terraform Provider for ClickHouse Cloud
Go
17
star
31

web-tables-demo

15
star
32

clickhub

Github analytics powered by the world's fastest real-time analytics database
Python
14
star
33

icudata

Pregenerated data for ICU library
Assembly
10
star
34

reversedns.space

https://reversedns.space/
HTML
9
star
35

clickhouse-website-worker

TypeScript
8
star
36

laion

Supporting code for inserting and searching laion in ClickHouse
Python
6
star
37

checkout

Wrapper around actions/checkout for flexible tuning
5
star
38

aretestsgreenyet

A single-page website to display the status of the open-source ClickHouse CI system.
HTML
4
star
39

fuzz-corpus

Corpuses for libFuzzer-type fuzzers
4
star
40

ch-async-inserts-demo

Demo on how to create a Node API that sends data to CH via Async inserts
TypeScript
4
star
41

clickhouse-playground-old

4
star
42

1trc

1 trillion rows
Python
4
star
43

clickhouse_vs_snowflake

HTML
3
star
44

clickhouse-website-content

JavaScript
3
star
45

clickhouse-academy

ClickHouse Academy training and certification
3
star
46

kafka-samples

Sample datasets for Kafka
Python
3
star
47

clickhouse-recipes

Sample code for solving common problems with ClickHouse
Python
3
star
48

bedrock_rag

A simple RAG pipeline for Google Analytics with ClickHouse and Bedrock
Python
3
star
49

protobuf

add protobuf for libhdfs3
C++
2
star
50

clickhouse-com-content

HTML
2
star
51

antlr4-runtime

Subtree of antlr4 original repo
C++
2
star
52

grpc

Stripped version of grpc
C++
2
star
53

clickhouse.github.io

HTML
2
star
54

ssl

Minimized libressl
C
2
star
55

libpq

Copy of https://github.com/postgres/postgres/tree/master/src/interfaces/libpq with some files from root
C
2
star
56

llvm

Stripped version of LLVM for use in ClickHouse for runtime code generation.
C++
2
star
57

copier

clickhouse-copier (obsolete)
C++
2
star
58

hive-metastore

For files generated with https://github.com/apache/thrift
Thrift
1
star
59

doc-pr-preview-test

Testing workflow to build Docusaurus previews for pull requests.
JavaScript
1
star
60

UnixODBC

Mirror of http://www.unixodbc.org/
C
1
star
61

clickhouse-docs-content

1
star
62

clickhouse-blog-images

HTML
1
star
63

bzip2

Forked from https://gitlab.com/federicomenaquintero/bzip2
C
1
star
64

libgsasl

https://www.gnu.org/software/gsasl/
C
1
star
65

readthedocs-stub

HTML
1
star
66

boost

Minimized boost lib
C++
1
star
67

clickhouse-repos-manager

a config and artifacts for packages.clickhouse.com
Python
1
star
68

clickhouse-kafka-transforms

This is meant to hold Clickhouse created kafka transforms.
Java
1
star
69

clickhouse-fivetran-destination

ClickHouse Cloud Fivetran Destination
Go
1
star
70

clickhouse-test.github.io

HTML
1
star
71

rust_vendor

Vendor files from rust dependencies
Rust
1
star
72

simple-logging-benchmark

A simple ClickHouse benchmark for the logging usecase
Python
1
star
73

clickhouse-typescript-schema

TypeScript
1
star