184 похожих чатов

Добрый день! Если использовать Nested поле, то для SELECT запроса можно

будет использовать LEFT ARRAY JOIN.
CREATE OR REPLACE TABLE t_demo (
created_at DateTime64(3, 'Europe/Moscow'),
id UInt64,
col1 String,
body Nested (
id Nullable(UInt64),
col2 String,
col3 Int8,
col4 Nullable(Int8),
modified_at Nullable(DateTime64(3, 'Europe/Moscow'))
)
)
ENGINE = ReplacingMergeTree()
PARTITION BY toYYYYMM(created_at)
ORDER BY (created_at, id)
;

SELECT *
FROM `default`.t_demo
LEFT ARRAY JOIN body
;

Однако есть неудобство, что при заливке данных через JSON нужно указывать все поля, принадлежащие Nested полю, и в том же порядке, в котором они объявлены. Но если сделать каждое поле в отдельности массивом, то LEFT ARRAY JOIN можно применить только к одному из Array полей и нельзя написать несколько раз подряд LEFT ARRAY JOIN.
CREATE OR REPLACE TABLE t_demo (
created_at DateTime64(3, 'Europe/Moscow'),
id UInt64,
col1 String,
`body_id` Array(Nullable(UInt64)),
`body_col2` Array(String),
`body_col3` Array(Int8),
`body_col4` Array(Nullable(Int8)),
`body_modified_at` Array(Nullable(DateTime64(3, 'Europe/Moscow')))
)
ENGINE = ReplacingMergeTree()
PARTITION BY toYYYYMM(created_at)
ORDER BY (created_at, id)
;

SELECT *
FROM `default`.t_demo
LEFT ARRAY JOIN `body.id` --Выполниться успешно
-- LEFT ARRAY JOIN `body.col2` --Будет выброшено исключение, если раскоментировать
;

Что можно предпринять, чтобы можно было?:
- в JSON не указывать все Array поля;
- менять порядок Array полей.

3 ответов

15 просмотров

LEFT ARRAY JOIN body.id as id, body.col2 as col2

Denis-Kitrish Автор вопроса
Denis-Kitrish Автор вопроса
Dmitry [Altinity] Titov
LEFT ARRAY JOIN body.id as id, body.col2 as col2

А насколько равноценны SELECT запросы для обеих ситуаций?

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта