dictGetString не работает в созданном DDL словаре в clickhouse - PullRequest
0 голосов
/ 27 мая 2020

Попытка следовать инструкциям для создания словаря с использованием DDL:

-- source table
create table brands (
    id UInt64,
    brand String
)
ENGINE = ReplacingMergeTree(id)
partition by tuple()
order by id;

-- some data
insert into brands values (1, 'cool'), (2, 'neat'), (3, 'fun');

-- dictionary references source table
CREATE DICTIONARY IF NOT EXISTS brand_dict (
    id UInt64,
    brand String
)
PRIMARY KEY id
SOURCE(CLICKHOUSE(
    host 'localhost'
    port 9000
    user 'default'
    password ''
    db 'default'
    table 'brands'
))
LIFETIME(MIN 1 MAX 10)
LAYOUT(FLAT())

-- looks good:
show dictionaries;


-- no work
-- Code: 36. DB::Exception: Received from localhost:9000. DB::Exception: external dictionary 'brand_dict' not found.
select dictGetString('brand_dict', 'id', toUInt64(1));

Дает DB::Exception: external dictionary 'brand_dict' not found.

Я не пробовал с XML config пока не уверен, что это c DDL или что-то я делаю не так.

1 Ответ

1 голос
/ 27 мая 2020

для таких словарей требуется указанная база данных

dictGetString (' DATABASE .brand_dict'

...