представление json строки
{
dateTime: '2022-04-26 20:23:52',
article: 6310991,
optionId: 22358082,
sizeOrigName: '48',
brandId: 3980,
brandName: 'City Classic',
subjectId: 168,
name: 'Куртка',
supplierId: 29297,
priceU: 1375000,
salePriceU: 412500,
stocksSum: 7,
stocks: { '507': 4, '1733': 1, '120762': 1, '130744': 1 }
}
Создали таблицу с kafka engine
CREATE TABLE prod.kafka_remaining (
dateTime DateTime,
article UInt64,
optionId UInt64,
sizeOrigName String,
name String,
brandName String,
brandId UInt32,
subjectId UInt32 DEFAULT -1,
supplierId UInt32,
priceU Int64,
salePriceU Int64,
stocksSum UInt32,
stocks Map(String, UInt64)
) ENGINE = Kafka
SETTINGS
kafka_broker_list = ***.mdb.yandexcloud.net:9091',
kafka_topic_list = 'remaining_0_1_1',
kafka_group_name = 'remaining-group',
kafka_format = 'JSONEachRow',
kafka_num_consumers = 1
Создали таблицу для вставки данных
CREATE TABLE prod._dev_article_stocks (
dateTime DateTime,
article UInt64,
optionId UInt64,
sizeOrigName String,
name String,
brandName String,
brandId UInt32,
subjectId UInt32 DEFAULT -1,
supplierId UInt32,
priceU Int64,
salePriceU Int64,
stocksSum UInt32,
stocks Map(String, UInt64)
)
ENGINE = MergeTree
PARTITION BY toYYYYMM(dateTime)
ORDER BY (subjectId, brandId, supplierId, article, dateTime)
Создали mv для чтения из кафки в таблицу
CREATE MATERIALIZED VIEW prod.mv_kafka_remaining TO prod._dev_article_stocks
AS SELECT * FROM prod.kafka_remaining
Но ничего не работает) В кафку данные поступают, а в клике пусто
Работаем с managed kafka / managed clickhouse в yandex cloud
у кафка sasl_ssl
все права есть, kafka engine к кафке подключается
В чем может быть проблема? Наверняка где-то на поверхности, но не знаю, где искать
JSONEachRow вообще ни разу не JSON. { dateTime: '2022-04-26 20:23:52', article: 6310991, optionId: 22358082, sizeOrigName: '48', brandId: 3980, brandName: 'City Classic', subjectId: 168, name: 'Куртка', supplierId: 29297, priceU: 1375000, salePriceU: 412500, stocksSum: 7, stocks: { '507': 4, '1733': 1, '120762': 1, '130744': 1 } } -- это JSON тут больше одной строки -> это не JSONEachRow
и для map , делаете таблицу из одного поля Map, заполняете чем-то, а потом делаете select ... format JSONEachRow и понимаете что ждет КХ на входе для Map
Обсуждают сегодня