附加到clickhouse中的数组

093gszye  于 2021-07-15  发布在  ClickHouse
关注(0)|答案(3)|浏览(450)

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

c0vxltue

c0vxltue1#

不能修改表中的数据,因为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']
);
fykwrbwg

fykwrbwg2#

但是,clickhouse当前不支持编辑表中的行。可以使用表达式添加一列,在其中可以修改源数组,然后通过组合add/drop列命令来实现交换列逻辑。
然后,clickhouse允许使用alter table table\u name drop column column\u name命令删除列。可以删除源列,并从与源列同名的中间列创建一个包含所需数组的列。
但是您可以删除/添加不参与索引键的列,我要提醒的是,对于添加/删除大型表的列,此解决方案可能会消耗大量资源。

lxkprmvk

lxkprmvk3#

clickhouse不支持更新和删除,因此不可能。

相关问题