2014-11-02 4 views
1

Я пытался добавить столбец в столбец объекта внутри другого столбца объекта, но не смог сделать это (для вложенных объектов).Добавление столбцов внутри столбцов вложенных объектов

Adding columns

Добавление столбца внутри объекта прямо вперед. Как добавить столбец внутри вложенного объекта, который находится на одном уровне (или N уровней)?

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

пример строка: {"age": 34, "book": {"isbn": "1"}, "name": "my_name"}

Я пытался добавить «автор» столбец объекта внутри колонки книги объекта, но следующие альтер заявление не в состоянии

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

Вложенные объекты доступны в этой форме:

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

и так далее.

Так альтер заявление таблицы будет выглядеть ваш второй пример, но без «как целого»:

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; 
+0

Спасибо за правильный синтаксис. Второе утверждение выше было почти правильным. Я смог добавить столбец объекта, но не смог изменить его, чтобы добавить еще один столбец «authorName» внутри столбца автора, и он дал следующую ошибку: «SQLActionException [В таблице« my_table »уже есть столбец с именем« book ['person' ] "]" 'alter table my_table add column book ['person'] ['author'] ['authorName'] string;' – Hasnain

+0

@Hasnain, вы правы, это кажется ошибкой. Мы рассмотрим его – mfussenegger

+0

благодарит за подтверждение. Пожалуйста, сообщите нам, когда ошибка исправлена. – Hasnain