из словаря?
ga_source │ String │ MATERIALIZED │ dictGetOrDefault('dictionary.sources', 'ga_source', tuple(toString(bill_id)), '')
При чем такое наблюдается не для всех и если в запрос добаить отдельно получения значения для словаря все ок
SELECT
bill_id,
ga_source,
dictGetOrDefault('dictionary.sources', 'ga_source', tuple(toString(bill_id)), '')
FROM ds.billitems_log
WHERE bill_id = 95059357
┌──bill_id─┬─ga_source─┬─dictGetOrDefault('dictionary.sources', 'ga_source', tuple(toString(bill_id)), '')─┐
│ 95059357 │ │ yandex │
└──────────┴───────────┴───────────────────────────────────────────────────────────────────────────────────┘
никто не сталкивался? Версия КХ 20.4.9.110, в словаре 12M записей, по логам ошибок не видно
ну ставлю 200 канадских долларов, в словаре не было такой id, когда эту запись заинсертили
так MATERIALIZED COLUMN же вычисляется на лету, при чем тут наличие записи?
нет конечно, вам ALIAS нужен а не materialized
а, ок попробую. Спс
О. мне старослужащие говорят что вам нельзя использовать dictGetOrDefault обязательно нужен с типом иначе КХ не сможет стартовать dictGetStringOrDefault
да и даже с ним, все равно будет косяк при рестарте сервера вывод типов при отсутсвии словаря, хотя сильно зависит от сложности MATERIALIZED \ DEFAULT выражения
можно просто dictGetString ?
через alias работает. Только получается эту колонку видно будет если явно указывать в запросе, верно?
хорошо, спасибо )
проверьте как влияет рестарт сервера если что, то придется переносить sql из metadata стартовать без таблицы и потом руками обратно исполнять ATTACH через clickhouse-client
да, уже сталкивался с таким. И так же делал)
Обсуждают сегодня