Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

CREATE DICTIONARY

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

Dictionary は、次の 2 つの方法で作成できます。

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

ClickHouse Cloud で利用可能

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'
説明
Attributes Dictionary の属性は、テーブルのカラムと同様に指定します。必須のプロパティは type のみで、それ以外はデフォルト値を設定できます。
PRIMARY KEY Dictionary のルックアップに使用するキーカラムを定義します。layout に応じて、1 つ以上の属性をキーとして指定できます。
SOURCE Dictionary のデータソース (例: ClickHouse テーブル、HTTP、PostgreSQL) を定義します。
LAYOUT Dictionary をメモリ内でどのように格納するかを制御します (例: FLATHASHEDCACHE) 。
LIFETIME Dictionary の更新間隔を設定します。
ON CLUSTER クラスター上に Dictionary を作成します。省略可能です。
SETTINGS Dictionary に対する追加設定です。省略可能です。
COMMENT Dictionary にテキストコメントを追加します。省略可能です。

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

ClickHouse Cloud ではサポートされていません

Dictionaryの設定ファイルは、次の形式です。

<clickhouse>
    <comment>An optional element with any content. Ignored by the ClickHouse server.</comment>

    <!--Optional element. File name with substitutions-->
    <include_from>/etc/clickhouse-server/substitutions.xml</include_from>

    <dictionary>
        <!-- Dictionary configuration. -->
        <!-- There can be any number of dictionary sections in a configuration file. -->
    </dictionary>

</clickhouse>

同じファイルに、いくつでもDictionaryを設定できます。

Navigation