メインコンテンツへスキップ
前のセクションでは、ストレージパスを直接指定してオープンテーブルフォーマットをクエリしました。実際には、ほとんどの組織がテーブルメタデータを データカタログ で管理しています。これは、テーブルの場所、スキーマ、パーティションを追跡するための中央レジストリです。DataLakeCatalog データベースエンジンを使って ClickHouse をカタログに接続すると、カタログ全体が ClickHouse データベースとして公開されます。カタログ内の各テーブルは自動的に表示され、完全な ClickHouse SQL でクエリできます。個々のテーブルパスを把握したり、テーブルごとに認証情報を管理したりする必要はありません。 このガイドでは、Databricks Unity カタログ への接続方法を説明します。ClickHouse は次のカタログにも対応しています。完全なセットアップ手順については、各リファレンスガイドを参照してください。
カタログReference guide
AWS GlueAWS Glue カタログ
Iceberg REST CatalogREST カタログ
LakekeeperLakekeeper カタログ
Project NessieNessie カタログ
Microsoft OneLakeFabric OneLake

Unity Catalog への接続

ここでは例として、Unity Catalog を使用します。 Databricks Unity Catalog は、Databricks のレイクハウスデータに対する一元的なガバナンスを提供します。 Databricks は、レイクハウス向けに複数のデータフォーマットをサポートしています。ClickHouse では、Unity Catalog のテーブルを Delta と Iceberg の両方の形式でクエリできます。
Unity Catalog とのインテグレーションは、マネージドテーブルと外部テーブルで動作します。 このインテグレーションは現在、AWS でのみサポートされています。

Databricks で Unity を設定する

ClickHouse が Unity Catalog とやり取りできるようにするには、外部リーダーとの連携を許可するように Unity Catalog が設定されていることを確認する必要があります。これは、「Unity Catalog への外部データアクセスを有効にする」ガイドに従うことで行えます。 外部アクセスを有効にするだけでなく、インテグレーションを設定するプリンシパルに、テーブルを含むスキーマに対する EXTERNAL USE SCHEMA 権限が付与されていることも確認してください。 カタログの設定が完了したら、ClickHouse 用の認証情報を生成する必要があります。Unity との連携方法に応じて、使用できる方法は 2 つあります。
  • Iceberg クライアントの場合は、サービスプリンシパルで認証します。
  • Delta クライアントの場合は、Personal Access Token (PAT) を使用します。

カタログに接続する

認証情報を使用して、該当するエンドポイントに接続し、Iceberg または Delta テーブルをクエリできます。
Delta フォーマットのデータにアクセスするには、Unity Catalog を使用します。
SET allow_experimental_database_unity_catalog = 1;

CREATE DATABASE unity
ENGINE = DataLakeCatalog('https://<workspace-id>.cloud.databricks.com/api/2.1/unity-catalog')
SETTINGS warehouse = 'CATALOG_NAME', catalog_credential = '<PAT>', catalog_type = 'unity';

テーブルを一覧表示する

カタログへの接続が完了したら、テーブルを一覧表示できます。
SHOW TABLES FROM unity
┌─name───────────────────────────────────────────────┐
│ unity.logs                                         │
│ unity.single_day_log                               │
└────────────────────────────────────────────────────┘

31 rows in set.

テーブルスキーマを確認する

標準の SHOW CREATE TABLE コマンドを使用すると、テーブルの作成方法を確認できます。
バッククォートが必要ネームスペースとテーブル名は、バッククォートで囲んで指定する必要があります。ClickHouse は複数のネームスペースには対応していません。
以下では、REST Iceberg カタログに対してクエリを実行することを前提としています。
SHOW CREATE TABLE unity.`icebench.single_day_log`

CREATE TABLE unity.`icebench.single_day_log`
(
    `pull_request_number` Nullable(Int64),
    `commit_sha` Nullable(String),
    `check_start_time` Nullable(DateTime64(6, 'UTC')),
    `check_name` Nullable(String),
    `instance_type` Nullable(String),
    `instance_id` Nullable(String),
    `event_date` Nullable(Date32),
    `event_time` Nullable(DateTime64(6, 'UTC')),
    `event_time_microseconds` Nullable(DateTime64(6, 'UTC')),
    `thread_name` Nullable(String),
    `thread_id` Nullable(Decimal(20, 0)),
    `level` Nullable(String),
    `query_id` Nullable(String),
    `logger_name` Nullable(String),
    `message` Nullable(String),
    `revision` Nullable(Int64),
    `source_file` Nullable(String),
    `source_line` Nullable(Decimal(20, 0)),
    `message_format_string` Nullable(String)
)
ENGINE = Iceberg('s3://...')

テーブルに対してクエリを実行する

ClickHouse のすべての関数を使用できます。繰り返しになりますが、ネームスペースとテーブル名はバッククォートで囲む必要があります。
SELECT count()
FROM unity.`icebench.single_day_log`
┌───count()─┐
│ 282634391 │ -- 2億8263万
└───────────┘

1 row in set. Elapsed: 1.265 sec.
詳しいセットアップ手順については、Unity Catalog リファレンスガイドを参照してください。
最終更新日 2026年6月10日