【问题标题】:Clickhouse : remove duplicate dataClickhouse:删除重复数据
【发布时间】:2021-06-10 17:05:21
【问题描述】:

我在 clickhouse 中遇到重复数据的问题。 我的情况是我有部分记录,然后我必须按 text_id 对所有这些部分进行分组。 零件到货时间可能不同

例如:

id,text_id,total_parts,part_number,text
101,11,3,1,How
102,12,2,2,World
103,12,2,1,Hello
104,11,3,3,you
105,11,3,2,are

结果应该是这样的:

text_id,text
11, How are you
12, Hello World

我创建了一个 视图 来对所有部分进行分组,它工作正常。 但是当我从这个 view 阅读时,我想删除我已经阅读过的行。我尝试向表中添加一个名为 flag 的列,然后将此列更新为 1,然后将视图更改为读取 flag = 0。 但我阅读了更新它的 clickhouse 文档会降低性能。我的表有 数十亿 条记录。

1- 如果我无法删除已处理的记录,视图会变慢。

2- 如果没有性能问题,我不想再次读取处理过的数据。

有什么建议吗?

【问题讨论】:

  • 我会在视图结果中返回附加字段 max(id) max_id 以将其存储在服务器端。并将这个 max_id 传递给查询以限制搜索范围。

标签: clickhouse


【解决方案1】:

最接近的结果是文本列数组:

SELECT groupArray(text) as msg
FROM 
  (SELECT * ROM merge_rows ORDER BY text_id, part_number) 
GRUP BY text_id

┌─msg─────────────────┐
│ ['Hello','World']   │
│ ['How','are','you'] │
└─────────────────────┘

由于您有 数十亿 行,因此集成到物化视图中会非常快。

【讨论】:

    猜你喜欢
    • 2020-10-18
    • 2023-02-06
    • 1970-01-01
    • 2022-12-22
    • 2022-01-03
    • 2020-04-22
    • 2011-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多