Clé et champs du dictionnaire 

Le <structure> la clause 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:

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:

Clé 

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

  • Touche numérique. UInt64. Défini dans le <id> tag ou en utilisant PRIMARY KEY mot.
  • Clé Composite. Ensemble de valeurs de types différents. Défini dans la balise <key> ou PRIMARY KEY mot.

Une structure xml peut contenir <id> ou <key>. DDL-requête doit contenir unique PRIMARY KEY.

Touche Numérique 

Type: UInt64.

Exemple de Configuration:

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

Champs de Configuration:

  • name – The name of the column with keys.

Pour DDL-requête:

CREATE DICTIONARY (
    Id UInt64,
    ...
)
PRIMARY KEY Id
...
  • PRIMARY KEY – The name of the column with keys.

Clé Composite 

La clé peut être un tuple de tous les types de champs. Le disposition dans ce cas, doit être complex_key_hashed ou complex_key_cache.

La structure de clé est définie dans l'élément <key>. Les principaux champs sont spécifiés dans le même format que le dictionnaire attribut. 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 String
    ...
)
PRIMARY KEY field1, field2
...

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

Attribut 

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 Requis
name Nom de la colonne. Oui
type Type de données ClickHouse.
ClickHouse tente de convertir la valeur du dictionnaire vers le type de données spécifié. Par exemple, pour MySQL, le champ peut être TEXT, VARCHAR, ou BLOB dans la table source MySQL, mais il peut être téléchargé comme String à ClickHouse.
Nullable n'est pas pris en charge.
Oui
null_value Valeur par défaut pour un élément inexistant.
Dans l'exemple, c'est une chaîne vide. Vous ne pouvez pas utiliser NULL dans ce domaine.
Oui
expression Expression que ClickHouse s'exécute sur la valeur.
L'expression peut être un nom de colonne dans la base de données SQL distante. Ainsi, vous pouvez l'utiliser pour créer un alias pour la colonne à distance.

Valeur par défaut: aucune expression.
Aucun
hierarchical Si true, l'attribut contient la valeur d'un parent clé de la clé actuelle. Voir Dictionnaires Hiérarchiques.

Valeur par défaut: false.
Aucun
injective Indicateur qui indique si le id -> attribute l'image est injective.
Si true, ClickHouse peut automatiquement placer après le GROUP BY clause les requêtes aux dictionnaires avec injection. Habituellement, il réduit considérablement le montant de ces demandes.

Valeur par défaut: false.
Aucun
is_object_id Indicateur qui indique si la requête est exécutée pour un document MongoDB par ObjectID.

Valeur par défaut: false.
Aucun

Voir Aussi 

Article Original

Rating: 2.5 - 8 votes

Was this content helpful?
★★★☆☆