メインコンテンツへスキップ
ClickHouse Cloud で Dictionary を使用している場合は、DDLクエリオプションを使用して Dictionary を作成し、default ユーザーとして作成してください。 また、サポートされている Dictionary ソースの一覧は、Cloud Compatibility ガイドで確認してください。
structure 句では、クエリで使用できる辞書キーとフィールドを定義します。 XML の説明:
<dictionary>
    <structure>
        <id>
            <name>Id</name>
        </id>

        <attribute>
            <!-- attributeのパラメータ -->
        </attribute>

        ...

    </structure>
</dictionary>
属性は次の要素で表されます:
  • <id> — キーカラム
  • <attribute> — データカラム: 属性は複数指定できます。
DDLクエリ:
CREATE DICTIONARY dict_name (
    Id UInt64,
    -- 属性
)
PRIMARY KEY Id
...
属性はクエリのボディ内で記述します:
  • PRIMARY KEY — キーカラム
  • AttrName AttrType — データカラム。属性は複数指定できます。

キー

ClickHouse は、次の種類のキーをサポートしています。
  • 数値キー。UInt64<id> タグ、または PRIMARY KEY キーワードで定義します。
  • 複合キー。異なる型の値の集合。<key> タグ、または PRIMARY KEY キーワードで定義します。
XML 構造には <id><key> のどちらか一方のみを含めることができます。DDLクエリには PRIMARY KEY を1つだけ含める必要があります。
キーを 属性 として記述してはいけません。

数値キー

型: UInt64 設定例:
<id>
    <name>Id</name>
</id>
設定項目:
  • name – キーを含むカラム名。
DDLクエリの場合:
CREATE DICTIONARY (
    Id UInt64,
    ...
)
PRIMARY KEY Id
...
  • PRIMARY KEY – キーとなるカラムの名前。

複合キー

キーには、任意の型のフィールドからなるtupleを指定できます。この場合、layoutcomplex_key_hashedまたはcomplex_key_cacheである必要があります。
複合キーは、単一の要素から構成することもできます。これにより、たとえば文字列をキーとして使用できます。
キーの構造は<key>要素で設定します。キーのフィールドは、Dictionaryの属性と同じ形式で指定します。例:
<structure>
    <key>
        <attribute>
            <name>field1</name>
            <type>String</type>
        </attribute>
        <attribute>
            <name>field2</name>
            <type>UInt32</type>
        </attribute>
        ...
    </key>
...
または
CREATE DICTIONARY (
    field1 String,
    field2 UInt32
    ...
)
PRIMARY KEY field1, field2
...
dictGet* 関数へのクエリでは、キーとしてタプルを渡します。例: dictGetString('dict_name', 'attr_name', tuple('string for field1', num_for_field2)).

属性

設定例:
<structure>
    ...
    <attribute>
        <name>Name</name>
        <type>ClickHouseDataType</type>
        <null_value></null_value>
        <expression>rand64()</expression>
        <hierarchical>true</hierarchical>
        <injective>true</injective>
        <is_object_id>true</is_object_id>
    </attribute>
</structure>
または
CREATE DICTIONARY somename (
    Name ClickHouseDataType DEFAULT '' EXPRESSION rand64() HIERARCHICAL INJECTIVE IS_OBJECT_ID
)
設定フィールド:
タグ説明必須
nameカラム名。はい
typeClickHouseのデータ型: UInt8, UInt16, UInt32, UInt64, Int8, Int16, Int32, Int64, Float32, Float64, UUID, Decimal32, Decimal64, Decimal128, Decimal256,Date, Date32, DateTime, DateTime64, String, Array.
ClickHouseは、Dictionaryの値を指定されたデータ型にCASTしようとします。たとえばMySQLでは、MySQLのソーステーブル内のフィールドが TEXTVARCHAR、または BLOB であっても、ClickHouseでは String として取り込めます。
Nullable は現在、Flat, Hashed, ComplexKeyHashed, Direct, ComplexKeyDirect, RangeHashed, Polygon, Cache, ComplexKeyCache, SSDCache, SSDComplexKeyCache Dictionaryでサポートされています。IPTrie Dictionaryでは、Nullable 型はサポートされていません。
はい
null_value存在しない要素に対するデフォルト値。
この例では空文字列です。NULL 値を使用できるのは Nullable 型のみです (型の説明がある前の行を参照してください) 。
はい
expressionClickHouseが値に対して実行するExpression
この式には、リモートSQLデータベース内のカラム名を指定できます。そのため、リモートカラムの alias を作成するために使用できます。

デフォルト値: 式なし。
いいえ
hierarchicaltrue の場合、この属性には現在のキーに対応する親キーの値が含まれます。Hierarchical Dictionaries を参照してください。

デフォルト値: false
いいえ
injectiveid -> attribute の写像がinjectiveであるかどうかを示すフラグ。
true の場合、ClickHouseは injective な Dictionary に対するリクエストを GROUP BY clause の後に自動的に配置できます。通常、これによりそのようなリクエスト数を大幅に減らせます。

デフォルト値: false
いいえ
is_object_idMongoDBドキュメントに対するクエリが ObjectID によって実行されるかどうかを示すフラグ。

デフォルト値: false
最終更新日 2026年6月10日