Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Attributs du dictionnaire

La clause structure décrit la clé du dictionnaire et les champs disponibles pour les requêtes.

Description XML :

<dictionary>
    <structure>
        <id>
            <name>Id</name>
        </id>

        <attribute>
            <!-- Attribute parameters -->
        </attribute>

        ...

    </structure>
</dictionary>

Les attributs sont décrits dans les éléments :

  • <id> — colonne clé
  • <attribute> — colonne de données : il peut y avoir plusieurs attributs.

Requête DDL :

CREATE DICTIONARY dict_name (
    Id UInt64,
    -- attributes
)
PRIMARY KEY Id
...

Les attributs sont décrits dans le corps de la requête :

  • PRIMARY KEY — Colonne clé
  • AttrName AttrType — Colonne de données. Il peut y avoir plusieurs attributs.

Clé

ClickHouse prend en charge les types de clés suivants :

  • Clé numérique. UInt64. Définie dans la balise <id> ou à l’aide du mot-clé PRIMARY KEY.
  • Clé composite. Ensemble de valeurs de types différents. Définie dans la balise <key> ou à l’aide du mot-clé PRIMARY KEY.

Une structure XML peut contenir soit <id>, soit <key>. La requête DDL ne doit contenir qu’une seule PRIMARY KEY.

Clé numérique

Type : UInt64.

Exemple de configuration :

<id>
    <name>Id</name>
</id>

Champs de configuration :

  • name – Le nom de la colonne contenant les clés.

Pour la requête DDL :

CREATE DICTIONARY (
    Id UInt64,
    ...
)
PRIMARY KEY Id
...
  • PRIMARY KEY – Le nom de la colonne contenant les clés.

Clé composite

La clé peut être un tuple composé de champs de n’importe quel type. Le layout doit alors être complex_key_hashed ou complex_key_cache.

La structure de la clé est définie dans l’élément <key>. Les champs de la clé sont spécifiés dans le même format que les attributs du dictionnaire. Exemple :

<structure>
    <key>
        <attribute>
            <name>field1</name>
            <type>String</type>
        </attribute>
        <attribute>
            <name>field2</name>
            <type>UInt32</type>
        </attribute>
        ...
    </key>
...

ou

CREATE DICTIONARY (
    field1 String,
    field2 UInt32
    ...
)
PRIMARY KEY field1, field2
...

Pour une requête adressée à la fonction dictGet*, un tuple est utilisé comme clé. Exemple : dictGetString('dict_name', 'attr_name', tuple('string for field1', num_for_field2)).

Lorsque la clé composite est constituée d’un seul attribut, la valeur de la clé peut être transmise directement, sans être encapsulée dans tuple. Par exemple, dictGetString('dict_name', 'attr_name', 'key') et dictGetString('dict_name', 'attr_name', tuple('key')) sont tous deux valides.

Attributs

Exemple de configuration :

<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>

ou

CREATE DICTIONARY somename (
    Name ClickHouseDataType DEFAULT '' EXPRESSION rand64() HIERARCHICAL INJECTIVE IS_OBJECT_ID
)

Champs de configuration :

Balise Description Obligatoire
name Nom de la colonne. Oui
type Type de données ClickHouse : UInt8, UInt16, UInt32, UInt64, Int8, Int16, Int32, Int64, Float32, Float64, UUID, Decimal32, Decimal64, Decimal128, Decimal256,Date, Date32, DateTime, DateTime64, String, Array.
ClickHouse essaie de convertir la valeur du dictionnaire dans le type de données spécifié. Par exemple, avec MySQL, le champ peut être de type TEXT, VARCHAR ou BLOB dans la table source MySQL, mais être importé en tant que String dans ClickHouse.
Nullable est actuellement pris en charge pour les dictionnaires Flat, Hashed, ComplexKeyHashed, Direct, ComplexKeyDirect, RangeHashed, Polygon, Cache, ComplexKeyCache, SSDCache, SSDComplexKeyCache. Dans les dictionnaires IPTrie, les types Nullable ne sont pas pris en charge.
Oui
null_value Valeur par défaut pour un élément inexistant.
Dans l'exemple, il s'agit d'une chaîne vide. La valeur NULL ne peut être utilisée que pour les types Nullable (voir la ligne précédente décrivant les types).
Oui
expression Expression que ClickHouse exécute sur la valeur.
L'expression peut être un nom de colonne dans la base de données SQL distante. Vous pouvez donc l'utiliser pour créer un alias pour la colonne distante.

Valeur par défaut : aucune expression.
Non
hierarchical Si true, l'attribut contient la valeur d'une clé parente pour la clé actuelle. Voir Dictionnaires hiérarchiques.

Valeur par défaut : false.
Non
injective Indicateur signalant si l'application id -> attribute est injective.
Si true, ClickHouse peut automatiquement placer, après la clause GROUP BY, les requêtes adressées aux dictionnaires dont l'application est injective. Cela réduit généralement de manière significative le nombre de ces requêtes.

Valeur par défaut : false.
Non
is_object_id Indicateur signalant si la requête est exécutée sur un document MongoDB via ObjectID.

Valeur par défaut : false.
Navigation