【发布时间】:2021-10-19 23:48:50
【问题描述】:
是否可以在 click house 中让一列返回一个对象数组?
我知道 groupArray 可以返回特定列,但是我想返回所有列。
【问题讨论】:
标签: clickhouse
是否可以在 click house 中让一列返回一个对象数组?
我知道 groupArray 可以返回特定列,但是我想返回所有列。
【问题讨论】:
标签: clickhouse
是的,ClickHouse 可以返回数据数组。
CREATE TABLE mytable (
dt DateTime,
...
arr Array(String)
) Engine=Memory()
如果要将表中的所有列作为数组返回,则所有列必须具有相同类型,因为数组需要具有相同类型的元素。因此,以下内容将是有效的:
CREATE TABLE array_of_all_columns(
a String,
b String
) Engine=Memory
然后就可以将所有列作为一个数组获取:
SELECT array(*) as arr FROM array_of_all_columns;
┌─arr───────┐
│ ['A','B'] │
└───────────┘
┌─arr───────┐
│ ['C','D'] │
└───────────┘
在上面的例子中,如果你的第三列不是String的类型,那么你会得到这个错误:
DB::Exception: There is no supertype for types String, String, Int32 because some of them are String/FixedString and some of them are not: While processing [a, b, c].
【讨论】: