Todos los productos
Search
Centro de documentos

ApsaraDB for ClickHouse:Diccionarios

Última actualización: Sep 05, 2026

Cuando los datos de su negocio contienen valores constantes o pueden separarse en tablas de hechos y dimensiones, utilice diccionarios en lugar de tablas de dimensiones para evitar operaciones JOIN y mejorar el rendimiento de las consultas. Cree, modifique y utilice diccionarios externos en Alibaba Cloud ClickHouse.

Requisitos previos

El origen de datos y el clúster de destino deben encontrarse en la misma región y VPC, con listas blancas de IP configuradas mutuamente. De lo contrario, resuelva primero los problemas de conectividad. How to resolve network connectivity issues between a target cluster and a data source.

Nota

Ejecute SELECT * FROM system.clusters; para consultar las direcciones IP de su clúster de Alibaba Cloud ClickHouse.

Para obtener información sobre cómo configurar una lista blanca de direcciones IP para ClickHouse, consulte Configure an IP Address Whitelist.

Notas de uso

No es posible utilizar la consola para gestionar diccionarios en clústeres de Alibaba Cloud ClickHouse que ejecuten la versión 21.8 o posterior. En su lugar, gestióneles mediante sentencias SQL como CREATE DICTIONARY.

Crear una configuración de diccionario

  1. Inicie sesión en la consola de ApsaraDB for ClickHouse.

  2. En la esquina superior izquierda de la página, seleccione la región donde se encuentra el clúster de destino.

  3. En la página Clusters, haga clic en la pestaña Clusters of Community-compatible Edition y luego haga clic en el ID del clúster de destino.

  4. En el panel de navegación izquierdo, haga clic en Dictionary Management.

  5. En la esquina superior derecha de la página, haga clic en Add Dictionary Configuration.

  6. En el cuadro de diálogo Add Dictionary Configuration, configure los parámetros.

    La siguiente tabla enumera los principales parámetros del diccionario. Para la referencia completa de parámetros, consulte: Dictionaries.

    Parámetro

    Descripción

    <name>

    Nombre personalizado del diccionario. Debe ser único a nivel global.

    <source>

    Origen de datos para el diccionario. Orígenes compatibles:

    • MySQL

    • ClickHouse

    <lifetime>

    Frecuencia de actualización de los datos del diccionario, en segundos.

    <layout>

    Disposición en memoria para el diccionario. Hay siete tipos disponibles:

    • Clave numérica

      • flat

      • hashed

      • range_hashed

      • cache

    • Clave compuesta

      • complex_key_hashed

      • complex_key_cache

      • ip_trie

    <structure>

    Estructura de datos del diccionario.

    Nota

    Solo puede agregar un nodo a la vez.

  7. Después de configurar los parámetros, haga clic en OK. El diccionario se crea automáticamente.

    Una vez creado, puede consultar, modificar o eliminar el diccionario desde la columna Actions.

DDL de diccionarios

Los clústeres que ejecutan la versión 20.8 o posterior admiten DDL de diccionarios para crear diccionarios externos directamente. Compruebe la versión de su clúster en la página Cluster Information de la consola.

CREATE DICTIONARY [IF NOT EXISTS] [db.]dictionary_name [ON CLUSTER cluster]
(
    key1 type1  [DEFAULT|EXPRESSION expr1] [HIERARCHICAL|INJECTIVE|IS_OBJECT_ID],
    key2 type2  [DEFAULT|EXPRESSION expr2] [HIERARCHICAL|INJECTIVE|IS_OBJECT_ID],
    attr1 type2 [DEFAULT|EXPRESSION expr3],
    attr2 type2 [DEFAULT|EXPRESSION expr4]
)
PRIMARY KEY key1, key2
SOURCE(SOURCE_NAME([param1 value1 ... paramN valueN]))
LAYOUT(LAYOUT_NAME([param_name param_value]))
LIFETIME([MIN val1] MAX val2)

Los siguientes ejemplos crean diccionarios a partir de distintos orígenes de datos.

Origen: Alibaba Cloud ClickHouse

  1. Prepare los datos.

    1. Cree una tabla de origen.

      CREATE TABLE default.cities ( id UInt64, city_name String)ENGINE = Memory;
    2. Importe los datos de prueba.

      INSERT INTO default.cities (id, city_name) VALUES(1, 'Beijing'),(2, 'Shanghai'),(3, 'Guangzhou'),(4, 'Shenzhen');
  2. Cree el diccionario.

    CREATE DICTIONARY default.city_dict (
     id UInt64,
     city_name String
    )
    PRIMARY KEY id
    SOURCE(CLICKHOUSE( USER 'username' PASSWORD 'password' TABLE 'cities' DB 'default' ))
    LAYOUT(HASHED())
    LIFETIME(MIN 300 MAX 360);

El origen es otro clúster de Alibaba Cloud ClickHouse

  1. Prepare los datos.

    1. Cree una tabla de origen.

      CREATE TABLE default.cities ( id UInt64, city_name String)ENGINE = Memory;
    2. Importe los datos de prueba.

      INSERT INTO default.cities (id, city_name) VALUES(1, 'Beijing'),(2, 'Shanghai'),(3, 'Guangzhou'),(4, 'Shenzhen');
  2. Cree el diccionario.

    CREATE DICTIONARY default.city_dict (
     id UInt64,
     city_name String
    )
    PRIMARY KEY id
    SOURCE(CLICKHOUSE(
     HOST 'cc-xxx.clickhouse.ads.aliyuncs.com'
     PORT 3306
     USER 'username'
     PASSWORD 'password'
     DB 'default'
     TABLE 'cities'
    ))
    LAYOUT(HASHED())
    LIFETIME(MIN 300 MAX 360);

ApsaraDB RDS for MySQL

  1. Prepare los datos en la instancia de ApsaraDB RDS for MySQL.

    1. Cree una base de datos y una tabla de origen.

      CREATE DATABASE testdb;
      CREATE TABLE testdb.cities ( id INT PRIMARY KEY, city_name VARCHAR(255));
    2. Importe los datos de prueba.

      INSERT INTO testdb.cities (id, city_name) VALUES(1, 'Beijing'),(2, 'Shanghai'),(3, 'Guangzhou'),(4, 'Shenzhen');
  2. Cree el diccionario.

    CREATE DICTIONARY default.city_dict (
     id UInt64,
     city_name String
    )
    PRIMARY KEY id
    SOURCE(MYSQL(
     HOST 'rm-xxx.mysql.rds.aliyuncs.com'
     PORT 3306
     USER 'username'
     PASSWORD 'password'
     DB 'testdb'
     TABLE 'cities'
    ))
    LAYOUT(HASHED())
    LIFETIME(MIN 300 MAX 360);

Consulta personalizada

  1. Prepare los datos.

    1. Cree una tabla de origen.

      CREATE TABLE default.cities ( id UInt64, city_name String)ENGINE = Memory;
    2. Importe los datos de prueba.

      INSERT INTO default.cities (id, city_name) VALUES(1, 'Beijing'),(2, 'Shanghai'),(3, 'Guangzhou'),(4, 'Shenzhen');
  2. Cree el diccionario.

    CREATE DICTIONARY default.my_dict
    (
     id UInt64,
     city_name String
    )
    PRIMARY KEY id
    SOURCE(CLICKHOUSE(
    USER 'username' 
    PASSWORD 'password' 
    DB 'default' 
    QUERY 'SELECT id, city_name FROM default.cities where id<2'
    ))
    LAYOUT(HASHED())
    LIFETIME(MIN 300 MAX 600);

Uso de un diccionario

Consulta de metadatos del diccionario

SELECT
    name,
    type,
    key,
    attribute.names,
    attribute.types,
    bytes_allocated,
    element_count,
    source
FROM system.dictionaries

Consulta de datos del diccionario

Utilice dictGet para recuperar datos de un diccionario. Para la referencia completa de sintaxis, consulte la documentación oficial de ClickHouse](https://clickhouse.com/docs/en/sql-reference/functions/ext-dict-functions/#dictget-dictgetordefault-dictgetornull).

dictGet(<dict_name>, <attr_name>, <id_expr>)
dictGetOrDefault(<dict_name>, <attr_name>, <id_expr>, <default_value_expr>)