Passer au contenu principal
Le moteur Dictionary affiche les données du dictionnaire comme une table ClickHouse.

Exemple

Prenons l’exemple d’un dictionnaire products avec la configuration suivante :
<dictionaries>
    <dictionary>
        <name>products</name>
        <source>
            <odbc>
                <table>products</table>
                <connection_string>DSN=some-db-server</connection_string>
            </odbc>
        </source>
        <lifetime>
            <min>300</min>
            <max>360</max>
        </lifetime>
        <layout>
            <flat/>
        </layout>
        <structure>
            <id>
                <name>product_id</name>
            </id>
            <attribute>
                <name>title</name>
                <type>String</type>
                <null_value></null_value>
            </attribute>
        </structure>
    </dictionary>
</dictionaries>
Interrogez les données du dictionnaire :
SELECT
    name,
    type,
    key,
    attribute.names,
    attribute.types,
    bytes_allocated,
    element_count,
    source
FROM system.dictionaries
WHERE name = 'products'
┌─name─────┬─type─┬─key────┬─attribute.names─┬─attribute.types─┬─bytes_allocated─┬─element_count─┬─source──────────┐
│ products │ Flat │ UInt64 │ ['title']       │ ['String']      │        23065376 │        175032 │ ODBC: .products │
└──────────┴──────┴────────┴─────────────────┴─────────────────┴─────────────────┴───────────────┴─────────────────┘
Vous pouvez utiliser les fonctions dictGet* pour obtenir les données du dictionnaire dans ce format. Cette vue n’est toutefois pas utile si vous devez obtenir des données brutes ou effectuer une opération de JOIN. Dans ce cas, vous pouvez utiliser le moteur Dictionary, qui affiche les données du dictionnaire dans une table. Syntaxe :
CREATE TABLE %table_name% (%fields%) engine = Dictionary(%dictionary_name%)`
Exemple d’utilisation :
CREATE TABLE products (product_id UInt64, title String) ENGINE = Dictionary(products);
D’accord Regardez ce que contient la table.
SELECT * FROM products LIMIT 1;
┌────product_id─┬─title───────────┐
│        152689 │ Some item       │
└───────────────┴─────────────────┘
Voir aussi
Dernière modification le 29 juin 2026