Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

データカタログへの接続

前のセクションでは、ストレージパスを直接指定してオープンテーブルフォーマットをクエリしました。実際には、ほとんどの組織がテーブルメタデータを データカタログ で管理しています。これは、テーブルの場所、スキーマ、パーティションを追跡するための中央レジストリです。DataLakeCatalog データベースエンジンを使って ClickHouse をカタログに接続すると、カタログ全体が ClickHouse データベースとして公開されます。カタログ内の各テーブルは自動的に表示され、完全な ClickHouse SQL でクエリできます。個々のテーブルパスを把握したり、テーブルごとに認証情報を管理したりする必要はありません。

このガイドでは、Databricks Unity Catalog への接続方法を説明します。ClickHouse は次のカタログにも対応しています。完全なセットアップ手順については、各リファレンスガイドを参照してください。

カタログ Reference guide
AWS Glue AWS Glue カタログ
Iceberg REST Catalog REST カタログ
Lakekeeper Lakekeeper カタログ
Project Nessie Nessie カタログ
Microsoft OneLake Fabric OneLake
SeaweedFS SeaweedFS カタログ

Unity Catalog への接続

ベータ機能

ここでは例として、Unity Catalog を使用します。

Databricks Unity Catalog は、Databricks のレイクハウスデータに対する一元的なガバナンスを提供します。

Databricks は、レイクハウス向けに複数のデータフォーマットをサポートしています。ClickHouse では、外部ストレージロケーションを使用する Unity Catalog の Delta テーブルおよび Iceberg テーブルをクエリできます。

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 コマンドを使用すると、テーブルの作成方法を確認できます。

以下では、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 リファレンスガイドを参照してください。

Navigation