Clickhouse 数据库中的物化视图未显示数据

问题描述

我使用 Clickhouse 数据库

我有分段输入的文本。我需要将所有文本分组在一行中,而没有重复的段

count(segment) = total Segment

我创建了第一个表来插入段。 然后我创建一个 MATERIALIZED 视图来删除重复的行并对所有段进行分组。

然后将其移动到第二个表,但我的问题是视图不显示值。 当我运行查询时它工作正常

一个表:

CREATE table test_table_1
( 
    id UInt16,text String,totalSegment UInt16,segmentNumber UInt16,reference UInt16,insertTime DateTime
)
ENGINE = ReplacingMergeTree()
order by (id,text,totalSegment,segmentNumber,reference );

第二个表:

CREATE table test_table_2
(
    message String,totalSegment UInt16
)
ENGINE = MergeTree()
order by (reference );

实体化视图:

CREATE MATERIALIZED VIEW consumer To test_table_2
as
SELECT  groupArray(text) as message,reference,totalSegment 
from ( 
    select * 
    from 
    ( 
        SELECT COUNT(*) as countSegment,reference 
        from test_table_1
        where (text,insertTime) in (
                    select    text,max(insertTime) as insertTime 
                    from      test_table_1 
                    group by  text,reference
        )
        group by  totalSegment,reference
        HAVING count(*) = totalSegment 
        )as a
        left join (
                select    text,max(insertTime) as insertTime 
                from      test_table_1 
                group by  text,reference
        )as b using (reference)
        order by segmentNumber 
    )
grousp by reference,totalSegment
order by reference ;

插入数据:

INSERT INTO test_table_1 (id,insertTime) VALUES(1,'A1 ',3,1,'101',Now() );
INSERT INTO test_table_1 (id,insertTime) VALUES(2,'B1 ',2,'202',insertTime) VALUES(3,'C2 ','303',insertTime) VALUES(4,'A3 ',insertTime) VALUES(5,'A2 ',insertTime) VALUES(6,'C1 ',insertTime) VALUES(7,'C3 ',insertTime) VALUES(8,'B2 ',Now() );

解决方法

MV 是插入触发器。它从不读取源表 -- test_table_1 !!!

https://den-crane.github.io/Everything_you_should_know_about_materialized_views_commented.pdf

https://youtu.be/ckChUkC3Pns?t=9326