メインコンテンツへスキップ
このエンジンは、Azure Blob Storage エコシステム向けのインテグレーションを提供します。

テーブルの作成

CREATE TABLE azure_blob_storage_table (name String, value UInt32)
    ENGINE = AzureBlobStorage(connection_string|storage_account_url, container_name, blobpath, [account_name, account_key, format, compression, partition_strategy, partition_columns_in_data_file, extra_credentials(client_id=, tenant_id=)])
    [PARTITION BY expr]
    [SETTINGS ...]

エンジンパラメータ

  • endpoint — コンテナーとプレフィックスを含む AzureBlobStorage のエンドポイント URL。使用する認証方式で必要な場合は、任意で account_name を含めることもできます。(http://azurite1:{port}/[account_name]{container_name}/{data_prefix})。または、storage_account_url、account_name、container を使ってこれらのパラメータを個別に指定することもできます。プレフィックスを指定する場合は、endpoint を使用する必要があります。
  • endpoint_contains_account_name - endpoint に account_name が含まれるかどうかを指定するフラグです。これは一部の認証方式でのみ必要です。(デフォルト: true)
  • connection_string|storage_account_url — connection_string には account name と key が含まれます (接続文字列を作成する) 。または、ここに storage account url を指定し、account name と account key を個別のパラメータとして指定することもできます (account_name と account_key パラメータを参照) 。
  • container_name - コンテナー名
  • blobpath - ファイルパス。readonly モードでは、次のワイルドカードをサポートします: *, **, ?, {abc,def} および {N..M}。ここで、N, M — 数値、'abc', 'def' — 文字列です。
  • account_name - storage_account_url を使用する場合は、ここで account name を指定できます
  • account_key - storage_account_url を使用する場合は、ここで account key を指定できます
  • format — ファイルのフォーマット
  • compression — サポートされる値: none, gzip/gz, brotli/br, xz/LZMA, zstd/zst。デフォルトでは、ファイル拡張子から圧縮を自動判別します (auto を設定した場合と同じです) 。
  • partition_strategy – オプション: WILDCARD または HIVEWILDCARD ではパス内に {_partition_id} が必要で、これはパーティションキーに置き換えられます。HIVE ではワイルドカードは使用できず、パスをテーブルのルートとみなし、Snowflake ID をファイル名、ファイルフォーマットを拡張子とする Hive スタイルのパーティションディレクトリを生成します。デフォルトは WILDCARD です。
  • partition_columns_in_data_file - HIVE パーティション方式でのみ使用されます。データファイル内にパーティションカラムが書き込まれているものとして ClickHouse が扱うかどうかを指定します。デフォルトは false です。
  • extra_credentials - 認証には client_idtenant_id を使用します。extra_credentials が指定されている場合、account_nameaccount_key より優先されます。
ローカルでの Azure Storage 開発には、Azurite エミュレーターを使用できます。詳細はこちらを参照してください。ローカルの Azurite インスタンスを使用する場合、以下のコマンドでは Azurite がホスト azurite1 で利用可能であることを前提としているため、http://azurite1:10000 の代わりに http://localhost:10000 を使用する必要がある場合があります。
CREATE TABLE test_table (key UInt64, data String)
    ENGINE = AzureBlobStorage('DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://azurite1:10000/devstoreaccount1/;', 'testcontainer', 'test_table', 'CSV');

INSERT INTO test_table VALUES (1, 'a'), (2, 'b'), (3, 'c');

SELECT * FROM test_table;
┌─key──┬─data──┐
│  1   │   a   │
│  2   │   b   │
│  3   │   c   │
└──────┴───────┘

仮想カラム

  • _path — ファイルのパス。型: LowCardinality(String).
  • _file — ファイル名。型: LowCardinality(String).
  • _size — ファイルのサイズ (バイト単位) 。型: Nullable(UInt64)。サイズが不明な場合、値は NULL です。
  • _time — ファイルの最終更新時刻。型: Nullable(DateTime)。時刻が不明な場合、値は NULL です。

認証

現在、認証方式は 3 つあります。
  • Managed Identity - endpointconnection_string、または storage_account_url を指定して使用できます。
  • SAS Token - endpointconnection_string、または storage_account_url を指定して使用できます。URL に ? が含まれていることで識別されます。例については、azureBlobStorage を参照してください。
  • Workload Identity - endpoint または storage_account_url を指定して使用できます。config で use_workload_identity パラメータが設定されている場合、認証には (workload identity) が使用されます。

データキャッシュ

Azure テーブルエンジンは、ローカルディスク上でのデータキャッシュをサポートしています。 ファイルシステムキャッシュの設定オプションと使用方法については、このセクションを参照してください。 キャッシュはストレージオブジェクトのパスと ETag に基づいて行われるため、ClickHouse が古い cache バージョンを読み取ることはありません。 キャッシュを有効にするには、設定 filesystem_cache_name = '<name>'enable_filesystem_cache = 1 を使用します。
SELECT *
FROM azureBlobStorage('DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://azurite1:10000/devstoreaccount1/;', 'testcontainer', 'test_table', 'CSV')
SETTINGS filesystem_cache_name = 'cache_for_azure', enable_filesystem_cache = 1;
  1. ClickHouseの設定ファイルに次のセクションを追加します。
<clickhouse>
    <filesystem_caches>
        <cache_for_azure>
            <path>path to cache directory</path>
            <max_size>10Gi</max_size>
        </cache_for_azure>
    </filesystem_caches>
</clickhouse>
  1. ClickHouse の storage_configuration セクションの cache 構成 (したがって cache ストレージも) を再利用します。詳しくはこちらを参照してください

PARTITION BY

PARTITION BY — 任意です。ほとんどの場合、パーティションキーは不要です。必要な場合でも、通常は月単位より細かいパーティションキーは必要ありません。パーティション化してもクエリは高速化されません (ORDER BY 式とは対照的です) 。細かすぎるパーティション化は決して行わないでください。クライアント識別子や名前でデータをパーティション化しないでください (代わりに、クライアント識別子または名前を ORDER BY 式の最初のカラムにしてください) 。 月単位でパーティション化するには、toYYYYMM(date_column) 式を使用します。ここで、date_columnDate 型の日付を持つカラムです。この場合、パーティション名は "YYYYMM" フォーマットになります。

パーティション方式

WILDCARD (デフォルト) : ファイルパス内の {_partition_id} ワイルドカードを実際のパーティションキーに置き換えます。読み取りはサポートされていません。 HIVE は、読み取りと書き込みに Hive スタイルのパーティション化を実装します。読み取りは再帰的な glob パターンを使用して行われます。書き込みでは、次のフォーマットでファイルが生成されます: <prefix>/<key1=val1/key2=val2...>/<snowflakeid>.<toLower(file_format)> 注: HIVE パーティション方式を使用する場合、use_hive_partitioning 設定は効果がありません。 HIVE パーティション方式の例:
arthur :) create table azure_table (year UInt16, country String, counter UInt8) ENGINE=AzureBlobStorage(account_name='devstoreaccount1', account_key='Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==', storage_account_url = 'http://localhost:30000/devstoreaccount1', container='cont', blob_path='hive_partitioned', format='Parquet', compression='auto', partition_strategy='hive') PARTITION BY (year, country);

arthur :) insert into azure_table values (2020, 'Russia', 1), (2021, 'Brazil', 2);

arthur :) select _path, * from azure_table;

   ┌─_path──────────────────────────────────────────────────────────────────────┬─year─┬─country─┬─counter─┐
1. │ cont/hive_partitioned/year=2020/country=Russia/7351305360873664512.parquet2020 │ Russia  │       1
2. │ cont/hive_partitioned/year=2021/country=Brazil/7351305360894636032.parquet2021 │ Brazil  │       2
   └────────────────────────────────────────────────────────────────────────────┴──────┴─────────┴─────────┘

関連項目

Azure Blob Storageテーブル関数
最終更新日 2026年6月10日