Dictionary Key and Fields

    XML description:

    Attributes are described in the elements:

    • <id>Key column.
    • <attribute> — . There can be a multiple number of attributes.

    DDL query:

    1. CREATE DICTIONARY dict_name (
    2. Id UInt64,
    3. -- attributes
    4. )
    5. ...

    Attributes are described in the query body:

    • PRIMARY KEYKey column
    • AttrName AttrType — . There can be a multiple number of attributes.

    ClickHouse supports the following types of keys:

    • Numeric key. UInt64. Defined in the <id> tag or using PRIMARY KEY keyword.
    • Composite key. Set of values of different types. Defined in the tag <key> or PRIMARY KEY keyword.

    An xml structure can contain either <id> or <key>. DDL-query must contain single PRIMARY KEY.

    You must not describe key as an attribute.

    Type: UInt64.

    Configuration example:

    Configuration fields:

    • name – The name of the column with keys.

    For DDL-query:

    1. Id UInt64,
    2. ...
    3. )
    4. PRIMARY KEY Id
    • PRIMARY KEY – The name of the column with keys.

    Composite Key

    The key can be a tuple from any types of fields. The in this case must be complex_key_hashed or complex_key_cache.

    A composite key can consist of a single element. This makes it possible to use a string as the key, for instance.

    The key structure is set in the element <key>. Key fields are specified in the same format as the dictionary attributes. Example:

    or

    1. CREATE DICTIONARY (
    2. field1 String,
    3. field2 String
    4. ...
    5. )
    6. PRIMARY KEY field1, field2
    7. ...

    For a query to the dictGet* function, a tuple is passed as the key. Example: dictGetString('dict_name', 'attr_name', tuple('string for field1', num_for_field2)).

    Configuration example:

    or

    1. CREATE DICTIONARY somename (
    2. )