メインコンテンツへスキップ
Dictionary は、さまざまな種類の参照リストで便利に使えるマッピング (key -> attributes) です。 ClickHouse は、Dictionary を操作するための特別な関数をサポートしており、これらはクエリ内で使用できます。参照テーブルに対して JOIN を使用するよりも、関数を使って Dictionary を利用するほうが簡単で効率的です。 Dictionary は、次の 2 つの方法で作成できます。

DDL クエリを使用した Dictionary の作成

Dictionary は DDL クエリで作成できます。 DDL で作成した Dictionary には次の利点があるため、これが推奨される方法です。
  • サーバー設定ファイルに追加のレコードを記述する必要がありません。
  • Dictionary は、テーブルやビューと同様の第一級エンティティとして使用できます。
  • Dictionary の table function ではなく、使い慣れた SELECT 構文を使ってデータを直接読み取れます。なお、SELECT ステートメントで Dictionary に直接アクセスした場合、cache 型の Dictionary では cache されているデータのみが返され、非 cache 型の Dictionary では保持しているすべてのデータが返されます。
  • Dictionary は簡単に名前を変更できます。

構文

CREATE [OR REPLACE] DICTIONARY [IF NOT EXISTS] [db.]dictionary_name [ON CLUSTER cluster]
(
    key1  type1  [DEFAULT | EXPRESSION expr1] [IS_OBJECT_ID],
    key2  type2  [DEFAULT | EXPRESSION expr2],
    attr1 type2  [DEFAULT | EXPRESSION expr3] [HIERARCHICAL|INJECTIVE],
    attr2 type2  [DEFAULT | EXPRESSION expr4] [HIERARCHICAL|INJECTIVE]
)
PRIMARY KEY key1, key2
SOURCE(SOURCE_NAME([param1 value1 ... paramN valueN]))
LAYOUT(LAYOUT_NAME([param_name param_value]))
LIFETIME({MIN min_val MAX max_val | max_val})
SETTINGS(setting_name = setting_value, setting_name = setting_value, ...)
COMMENT 'Comment'
説明
AttributesDictionary の属性は、テーブルのカラムと同様に指定します。必須のプロパティは type のみで、それ以外はデフォルト値を設定できます。
PRIMARY KEYDictionary のルックアップに使用するキーカラムを定義します。layout に応じて、1 つ以上の属性をキーとして指定できます。
SOURCEDictionary のデータソース (例: ClickHouse テーブル、HTTP、PostgreSQL) を定義します。
LAYOUTDictionary をメモリ内でどのように格納するかを制御します (例: FLATHASHEDCACHE) 。
LIFETIMEDictionary の更新間隔を設定します。
ON CLUSTERクラスター上に Dictionary を作成します。省略可能です。
SETTINGSDictionary に対する追加設定です。省略可能です。
COMMENTDictionary にテキストコメントを追加します。省略可能です。

設定ファイルを使用したDictionaryの作成

設定ファイルを使用したDictionaryの作成は ClickHouse Cloud ではサポートされていません。DDL (上記を参照) を使用し、default ユーザーとしてDictionaryを作成してください。
Dictionaryの設定ファイルは、次の形式です。
<clickhouse>
    <comment>An optional element with any content. Ignored by the ClickHouse server.</comment>

    <!--省略可能な要素。substitutionsを含むファイル名-->
    <include_from>/etc/metrika.xml</include_from>

    <dictionary>
        <!-- Dictionaryの設定。 -->
        <!-- 1つのconfiguration fileに複数のDictionaryセクションを記述できます。-->
    </dictionary>

</clickhouse>
同じファイルに、いくつでも辞書を設定できます。
最終更新日 2026年6月10日