ClickHouse/docs/fr/operations/table_engines/dictionary.md
2020-03-30 15:48:55 +03:00

2.9 KiB

machine_translated
true

Dictionnaire

Le Dictionary le moteur affiche le dictionnaire données comme une table ClickHouse.

À titre d'exemple, considérons un dictionnaire de 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>

Interroger 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 l' dictGet* fonction pour obtenir les données du dictionnaire dans ce format.

Cette vue n'est pas utile lorsque vous avez besoin d'obtenir des données brutes ou JOIN opération. Pour ces cas, vous pouvez utiliser le Dictionary moteur, 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);
  Ok

Jetez un oeil à ce qui est dans le tableau.

select * from products limit 1;
┌────product_id─┬─title───────────┐
│        152689 │ Some item       │
└───────────────┴─────────────────┘

Article Original