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

Всем привет! Подскажите, пожалуйста, должно ли следующее работать именно так,

как оно работает. Версия 20.11.4.13

Выполняю последовательно:

create table test1
(
id UUID,
dt DateTime,
v1 Int32,
v2 Int32
)
Engine = MergeTree()
partition by toYYYYMM(dt)
Order by (id)


create table test2
(
id UUID,
dt DateTime,
v1 Int32,
v2 Int32
)
Engine = MergeTree()
partition by toYYYYMM(dt)
Order by (id)


create materialized view test_mv Engine=MergeTree ORDER BY (same_as_v2)
as
SELECT
id as t1_id,
dt as t1_dt,
v1 as t1_v1,
v2 as t1_v2,
same_as_v2
from
(
select test1.*, test2.v2 as same_as_v2
from test1
inner join test2 USING id
where test1.v1 = 5
)


INSERT INTO test1
SELECT generateUUIDv4() as id,
now() + (sipHash64(id) % 10000000) as dt,
sipHash64(id) % 5000 as v1,
sipHash64(id) % 50000 as v2
from system.numbers n
limit 10000000


INSERT INTO test2
select * from test1

Выполнив это, получаю отсутствие строк в MV.

Если делаю все то же самое, но DDL MV такой, то данные есть:

create materialized view test_mv Engine=MergeTree ORDER BY (same_as_v2)
as
SELECT
test1.id as t1_id,
test1.dt as t1_dt,
test1.v1 as t1_v1,
test1.v2 as t1_v2,
same_as_v2
from
(
select test1.*, test2.v2 as same_as_v2
from test2
inner join test1 USING id
where test1.v1 = 5
)

Получается, что MV c JOIN — это триггер на INSERT только в левую таблицу? Если это все-таки так, то где это описано? Не увидел в доке описания такого поведения.

И еще, можно ли как-то сделать, чтобы MV было триггером на INSERT в обе таблицы? Или только если делать два MV и потом их объединять? И есть ли в таком случае гарантия, что данные сджойнятся если в обе таблицы произойдет синхронная вставка?

1 ответов

22 просмотра

да все так. два MV и пусть пишут в одну таблицу. https://den-crane.github.io/Everything_you_should_know_about_materialized_views_commented.pdf 26 страница. https://youtu.be/1LVJ_WcLgF8?list=PLO3lfQbpDVI-hyw4MyqxEk3rDHw95SzxJ&t=7611

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
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
Карта сайта