在嵌套对象列中添加列

时间:2014-11-02 07:56:47

标签: crate

我一直在尝试在另一个对象列中的对象列中添加一列但不能这样做(对于嵌套对象)。

Adding columns

在对象内添加列是直截了当的。如何在深度为一级(或N级深)的嵌套对象中添加列?

create table my_table (name string, age integer, book object as (isbn string));

示例行:{"age": 34, "book": {"isbn": "1"}, "name": "my_name"}

我试图添加一个对象列' author'内部book对象列,但以下alter语句失败

alter table my_table add column person['book['author']'] object as (authorId as integer)
alter table my_table add column person['book']['author'] object as (authorId as integer)
alter table my_table add column person['book[author]'] object as (authorId as integer)
alter table my_table add column person[book['author']] object as (authorId as integer)

在嵌套对象中添加列的正确语法是什么?

亲切的问候。

1 个答案:

答案 0 :(得分:1)

以这种形式访问嵌套对象:

select obj['level1']['level2']['level3']

等等。

所以alter table语句看起来像你的第二个例子,但是没有“as integer”:

alter table my_table add column book['person']['author'] object as ("authorId" integer);

(请注意,authorId用双引号来保留大小写,没有它就会全部小写)

或者也可以使用稍微不同的语法来完成相同的操作:

alter table my_table add column book['person']['author']['authorId'] integer;