这是表的结构
CREATE TABLE warehouse (
time timestamp,
person struct<id : int, name: string, organization : string>,
activity struct<id : int, name: string>,
case struct<id : int, name: string, organization : string>
);
创建表没有问题,问题是如何将数据插入到该表中。我正在尝试这样的东西,但它不起作用
INSERT INTO TABLE warehouse VALUES('2018-05-31'),
SELECT NAMED_STRUCT('id', 1, 'name', 'Alex', 'organization', 'CITI') AS person,
SELECT NAMED_STRUCT('id', 1, 'name', 'Buy') AS activity,
SELECT NAMED_STRUCT('id', 1, 'name', 'Gold', 'organization', 'London') AS case
FROM case
case,activity和person表已经存在,并且具有select中显示的结构。
答案 0 :(得分:1)
你不能在带有VALUES的INSERT语句中使用NAMED_STRUCT(更多的是,你不能使用任何带有值的udfs插入)。这是一个变通方法的工作示例。
CREATE TABLE warehouse (
time timestamp,
person struct<id : int, name: string, organization : string>,
activity struct<id : int, name: string>,
`case` struct<id : int, name: string, organization : string>
);
INSERT INTO TABLE warehouse
select
'2018-05-31',
NAMED_STRUCT('id', 1, 'name', 'Alex', 'organization', 'CITI'),
NAMED_STRUCT('id', 1, 'name', 'Buy'),
NAMED_STRUCT('id', 1, 'name', 'Gold', 'organization', 'London')
FROM (
select '1'
) t
;