0

是否可以将某个值附加到 Clickhouse 中满足特定条件的所有记录,如果没有其他选项可以执行相同操作。

4

3 回答 3

1

您不能修改表中的数据,因为 ClickHouse 中的所有数据都是不可变的。

但是:您可以在选择过程中即时添加它,或者您可以制作一个视图来为您完成。

如果您确实需要以更改状态存储该列 - 您需要创建表副本或物化视图。

这些函数可以是有用的 arrayConcat、arrayPushBack、arrayPushFront(文档即将发布)。

所以

SELECT
  CASE
    WHEN condition > 10 THEN arrayPushBack(array_field, 'extra_element')
    ELSE array_field
  END
FROM 
(
    SELECT 
        10 AS condition, ['a', 'b'] AS array_field
    UNION ALL 
    SELECT 
        101, ['c', 'd']
);
于 2017-11-28T12:24:43.473 回答
1

但是,Clickhouse 目前不支持编辑表格中的行。可以在可以修改源数组的地方添加带有表达式的列,然后通过组合添加/删除列命令来实现交换列逻辑。

然后 Clickhouse 允许使用命令 ALTER TABLE table_name DROP COLUMN column_name 删除列。可以删除源列,并从与源列同名的中间列创建具有所需数组的列。

但是您可以删除/添加不参与索引键的列,我会提醒您,此解决方案对于为大表添加/删除列可能会消耗大量资源。

于 2018-08-10T19:36:08.873 回答
0

clickhouse 不支持更新和删除,所以不可能。

于 2017-05-26T09:55:39.313 回答