UInt32,
`size_id` UInt32,
`warehouse_id` UInt32,
`created_at_list` AggregateFunction(groupArray, DateTime),
`quantity_list` AggregateFunction(groupArray, UInt16),
`price_total_list` AggregateFunction(groupArray, UInt32)
)
ENGINE = AggregatingMergeTree
PRIMARY KEY (product_id, size_id, warehouse_id)
ORDER BY (product_id, size_id, warehouse_id)
SETTINGS index_granularity = 64
В ней уже лежат данные. В таблицу были добавлены еще 2 столбца
`price_client_total_list` AggregateFunction(groupArray, UInt32),
`price_client_discount_list` AggregateFunction(groupArray, UInt8)
Текущей вид таблицы:
CREATE TABLE default.stocks_grouped
(
`product_id` UInt32,
`size_id` UInt32,
`warehouse_id` UInt32,
`created_at_list` AggregateFunction(groupArray, DateTime),
`quantity_list` AggregateFunction(groupArray, UInt16),
`price_total_list` AggregateFunction(groupArray, UInt32),
`price_client_total_list` AggregateFunction(groupArray, UInt32),
`price_client_discount_list` AggregateFunction(groupArray, UInt8)
)
ENGINE = AggregatingMergeTree
PRIMARY KEY (product_id, size_id, warehouse_id)
ORDER BY (product_id, size_id, warehouse_id)
SETTINGS index_granularity = 64
Подскажите пожалуйста ответ на вопрос: Из-за того, что новые массивы отличаются по длине, т.к. были добавлены недавно, то теперь не получается сделать ARRAY JOIN из-за ошибки DB::Exception: Sizes of ARRAY-JOIN-ed arrays do not match. (SIZES_OF_ARRAYS_DONT_MATCH) Как можно при SELECT в массивы price_client_total_list и price_client_discount_list добавить нули, чтобы можно было потом сделать ARRAY JOIN?
Можно просто эту опцию указать enable_unaligned_array_join=1 Массивы внутри селекта выровняются по длине наибольшего
Благодарю! Данные в таком случае останутся в консистентном порядке?
Нет, вообще эта штука оч неприятная с тем, что кол-во полей не совпадает, вам нужно ее фиксить
Массивы будут дополнены дефолтными значениями в конце Ну а дальше опирайтесь на логику которая нужна
Обсуждают сегодня