Passer au contenu principal
Un dictionnaire est une correspondance (key -> attributes) pratique pour différents types de listes de référence. ClickHouse prend en charge des fonctions spéciales pour utiliser les dictionnaires dans les requêtes. Il est plus simple et plus efficace d’utiliser des dictionnaires avec ces fonctions que d’effectuer un JOIN avec des tables de référence. Les dictionnaires peuvent être créés de deux façons :

Création d’un dictionnaire avec une requête DDL

Les dictionnaires peuvent être créés à l’aide de requêtes DDL. Il s’agit de la méthode recommandée, car avec les dictionnaires créés via DDL :
  • Aucun enregistrement supplémentaire n’est ajouté aux fichiers de configuration du serveur.
  • Les dictionnaires peuvent être utilisés comme des entités à part entière, telles que des tables ou des vues.
  • Les données peuvent être lues directement, en utilisant la syntaxe SELECT habituelle plutôt que des fonctions de table de dictionnaire. Notez que, lors d’un accès direct à un dictionnaire via une instruction SELECT, un dictionnaire mis en cache ne renvoie que les données en cache, tandis qu’un dictionnaire non mis en cache renvoie toutes les données qu’il stocke.
  • Les dictionnaires peuvent être renommés facilement.

Syntaxe

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'
ClauseDescription
AttributsLes attributs du dictionnaire sont définis de manière similaire aux colonnes d’une table. La seule propriété obligatoire est le type ; toutes les autres peuvent avoir des valeurs par défaut.
PRIMARY KEYDéfinit la ou les colonnes clés pour les recherches dans le dictionnaire. Selon le layout, un ou plusieurs attributs peuvent être définis comme clés.
SOURCEDéfinit la source de données du dictionnaire (par ex. table ClickHouse, HTTP, PostgreSQL).
LAYOUTContrôle la façon dont le dictionnaire est stocké en mémoire (par ex. FLAT, HASHED, CACHE).
LIFETIMEDéfinit l’intervalle de rafraîchissement du dictionnaire.
ON CLUSTERCrée le dictionnaire sur un cluster. Facultatif.
SETTINGSParamètres supplémentaires du dictionnaire. Facultatif.
COMMENTAjoute un commentaire au dictionnaire. Facultatif.

Créer un dictionnaire avec un fichier de configuration

La création d’un dictionnaire avec un fichier de configuration n’est pas prise en charge dans ClickHouse Cloud. Veuillez utiliser le DDL (voir ci-dessus) et créer votre dictionnaire en tant qu’utilisateur default.
Le fichier de configuration du dictionnaire se présente au format suivant :
<clickhouse>
    <comment>An optional element with any content. Ignored by the ClickHouse server.</comment>

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

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

</clickhouse>
Vous pouvez configurer autant de dictionnaires que vous le souhaitez dans le même fichier.
Dernière modification le 25 juin 2026