Pular para o conteúdo principal
Se você estiver usando um dicionário com o ClickHouse Cloud, use a opção de consulta DDL para criar seus dicionários e crie o dicionário como o usuário default. Além disso, verifique a lista de fontes de dicionário compatíveis no guia de compatibilidade com a Cloud.
A cláusula structure descreve a chave do dicionário e os campos disponíveis para consultas. Descrição em XML:
<dictionary>
    <structure>
        <id>
            <name>Id</name>
        </id>

        <attribute>
            <!-- Parâmetros de atributo -->
        </attribute>

        ...

    </structure>
</dictionary>
Os atributos são descritos nos elementos:
  • <id> — coluna-chave
  • <attribute> — coluna de dados: pode haver vários atributos.
Consulta DDL:
CREATE DICTIONARY dict_name (
    Id UInt64,
    -- atributos
)
PRIMARY KEY Id
...
Os atributos são descritos no corpo da consulta:
  • PRIMARY KEY — coluna-chave
  • AttrName AttrType — coluna de dados. Pode haver vários atributos.

Chave

O ClickHouse oferece suporte aos seguintes tipos de chaves:
  • Chave numérica. UInt64. Definida na tag <id> ou com a palavra-chave PRIMARY KEY.
  • Chave composta. Conjunto de valores de tipos diferentes. Definida na tag <key> ou com a palavra-chave PRIMARY KEY.
Uma estrutura XML pode conter <id> ou <key>. A consulta DDL deve conter uma única PRIMARY KEY.
Você não deve descrever a chave como um atributo.

Chave numérica

Tipo: UInt64. Exemplo de configuração:
<id>
    <name>Id</name>
</id>
Campos de configuração:
  • name – O nome da coluna que contém as chaves.
Para a consulta DDL:
CREATE DICTIONARY (
    Id UInt64,
    ...
)
PRIMARY KEY Id
...
  • PRIMARY KEY – O nome da coluna que contém as chaves.

Chave composta

A chave pode ser uma tuple formada por campos de qualquer tipo. O layout nesse caso deve ser complex_key_hashed ou complex_key_cache.
Uma chave composta pode consistir em um único elemento. Isso possibilita usar uma string como chave, por exemplo.
A estrutura da chave é definida no elemento <key>. Os campos da chave são especificados no mesmo formato dos atributos do dicionário. Exemplo:
<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
...
Para uma consulta à função dictGet*, uma tupla é usada como chave. Exemplo: dictGetString('dict_name', 'attr_name', tuple('string for field1', num_for_field2)).

Atributos

Exemplo de configuração:
<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>
or
CREATE DICTIONARY somename (
    Name ClickHouseDataType DEFAULT '' EXPRESSION rand64() HIERARCHICAL INJECTIVE IS_OBJECT_ID
)
Campos de configuração:
TagDescriçãoObrigatório
nameNome da coluna.Sim
typeTipo de dado do ClickHouse: UInt8, UInt16, UInt32, UInt64, Int8, Int16, Int32, Int64, Float32, Float64, UUID, Decimal32, Decimal64, Decimal128, Decimal256,Date, Date32, DateTime, DateTime64, String, Array.
O ClickHouse tenta converter o valor do dicionário para o tipo de dado especificado. Por exemplo, no MySQL, o campo pode ser TEXT, VARCHAR ou BLOB na tabela de origem do MySQL, mas pode ser carregado como String no ClickHouse.
Atualmente, Nullable é compatível com os dicionários Flat, Hashed, ComplexKeyHashed, Direct, ComplexKeyDirect, RangeHashed, Polygon, Cache, ComplexKeyCache, SSDCache, SSDComplexKeyCache. Em dicionários IPTrie, tipos Nullable não são compatíveis.
Sim
null_valueValor padrão para um elemento inexistente.
No exemplo, é uma string vazia. O valor NULL só pode ser usado com tipos Nullable (veja a linha anterior com a descrição dos tipos).
Sim
expressionExpressão que o ClickHouse executa sobre o valor.
A expressão pode ser um nome de coluna no banco de dados SQL remoto. Assim, você pode usá-la para criar um alias para a coluna remota.

Valor padrão: nenhuma expressão.
Não
hierarchicalSe true, o atributo contém o valor da chave pai da chave atual. Veja Hierarchical Dictionaries.

Valor padrão: false.
Não
injectiveFlag que indica se o mapeamento id -> attribute é injetivo.
Se true, o ClickHouse pode colocar automaticamente, após a cláusula GROUP BY, as consultas aos dicionários com injetividade. Em geral, isso reduz significativamente a quantidade dessas consultas.

Valor padrão: false.
Não
is_object_idFlag que indica se a consulta é executada para um documento do MongoDB por ObjectID.

Valor padrão: false.
Última modificação em 10 de junho de 2026