Skip to main content
Edit this page

ClickHouse クイックスタート

Tip

このページでは、オープンソースのClickHouseを自分のマシンにセットアップする方法を説明します。最速でClickHouseをデプロイし、専用のSQLコンソールにアクセスする方法は、ClickHouse Cloudを使用することです。

新しいユーザーは、$300の無料トライアルクレジットを受け取ることができます。サインアップはこちらからどうぞ。

1. バイナリのダウンロード

ClickHouseは、Linux、FreeBSD、macOSでネイティブに動作し、WindowsではWSLを通じて動作します。ClickHouseをローカルにダウンロードする最も簡単な方法は、以下のcurlコマンドを実行することです。このコマンドは、オペレーティングシステムがサポートされているかどうかを確認し、適切なClickHouseバイナリをダウンロードします。

curl https://clickhouse.com/ | sh

2. サーバーの起動

ClickHouseサーバーを開始するには、次のコマンドを実行します。

./clickhouse server

3. クライアントの起動

clickhouse-clientを使用して、ClickHouseサービスに接続します。新しいターミナルを開き、clickhouseバイナリが保存されているディレクトリに移動し、次のコマンドを実行してください。

./clickhouse client

ローカルホストで実行中のサービスに接続されると、笑顔の顔文字が表示されます。

my-host :)

4. テーブルの作成

CREATE TABLEを使用して新しいテーブルを定義します。一般的なSQLのDDLコマンドがClickHouseでも機能しますが、ClickHouseのテーブルにはENGINE句が必要です。ClickHouseのパフォーマンス向上効果を活用するために、MergeTreeを使用します。

CREATE TABLE my_first_table
(
user_id UInt32,
message String,
timestamp DateTime,
metric Float32
)
ENGINE = MergeTree
PRIMARY KEY (user_id, timestamp)

5. データの挿入

ClickHouseでは、INSERT INTO TABLEコマンドを使うことができます。ただし、MergeTreeテーブルにデータを挿入するたびにパーツ(フォルダ)がストレージに作成されることを理解しておくことが重要です。パーツを最小限にするために、大量の行を一度にバルクインサートすることをお勧めします(数万行以上、または数百万行)。

INSERT INTO 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 )

6. 新しいテーブルにクエリを実行

他のSQLデータベースと同様に、SELECTクエリを書くことができます。

 SELECT *
FROM my_first_table
ORDER BY timestamp

結果はすっきりしたテーブル形式で返されます。

┌─user_id─┬─message────────────────────────────────────────────┬───────────timestamp─┬──metric─┐
│ 102 │ Insert a lot of rows per batch │ 2022-03-21 00:00:00 │ 1.41421 │
│ 102 │ Sort your data based on your commonly-used queries │ 2022-03-22 00:00:00 │ 2.718 │
│ 101 │ Hello, ClickHouse! │ 2022-03-22 14:04:09 │ -1 │
│ 101 │ Granules are the smallest chunks of data read │ 2022-03-22 14:04:14 │ 3.14159 │
└─────────┴────────────────────────────────────────────────────┴─────────────────────┴─────────┘

4 rows in set. Elapsed: 0.008 sec.

7. 独自のデータを挿入

次のステップは、現在のデータをClickHouseに取り込むことです。データを取り込むためのテーブル関数統合が多数あります。以下のタブにいくつかの例を示しますが、ClickHouseとの統合の長いリストを統合ガイドで確認できます。

s3テーブル関数を使用して、S3からファイルを読み取ります。これはテーブル関数です。このため、結果は以下のようにテーブルとして使用できます。

  1. SELECTクエリのソースとして使用できます(これによりアドホッククエリを実行し、データをS3に残したままにできます)。
  2. 結果のテーブルをMergeTreeテーブルに挿入する(データをClickHouseに移行する準備ができたとき)。

アドホッククエリの例は以下の通りです。

SELECT
passenger_count,
avg(toFloat32(total_amount))
FROM s3(
'https://datasets-documentation.s3.eu-west-3.amazonaws.com/nyc-taxi/trips_0.gz',
'TabSeparatedWithNames'
)
GROUP BY passenger_count
ORDER BY passenger_count;

ClickHouseテーブルにデータを移行するには、次のようにします。nyc_taxiMergeTreeテーブルの場合:

INSERT INTO nyc_taxi
SELECT * FROM s3(
'https://datasets-documentation.s3.eu-west-3.amazonaws.com/nyc-taxi/trips_0.gz',
'TabSeparatedWithNames'
)
SETTINGS input_format_allow_errors_num=25000;

S3をClickHouseと一緒に使用する例と詳細については、AWS S3ドキュメントページのコレクションを参照してください。

次のステップは?