Passer au contenu principal
Si vous utilisez un dictionary avec ClickHouse Cloud, utilisez l’option DDL query pour créer vos dictionaries, et créez votre dictionary en tant qu’utilisateur default. Vérifiez également la liste des dictionary sources prises en charge dans le guide de compatibilité Cloud.
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.
Vous ne devez pas décrire une clé comme un attribut.

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.
Une clé composite peut être constituée d’un seul élément. Cela permet par exemple d’utiliser une chaîne comme clé.
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)).

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 :
BaliseDescriptionObligatoire
nameNom de la colonne.Oui
typeType 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_valueValeur 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
expressionExpression 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
hierarchicalSi true, l’attribut contient la valeur d’une clé parente pour la clé actuelle. Voir Dictionnaires hiérarchiques.

Valeur par défaut : false.
Non
injectiveIndicateur 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_idIndicateur signalant si la requête est exécutée sur un document MongoDB via ObjectID.

Valeur par défaut : false.
Dernière modification le 25 juin 2026