arrays - 从 HIVE 中的数组和结构表中选择插入
问题描述
我很难将结构化数组插入到另一个表中作为选择:
这是我的创建表:
create table temp4
(
nome_1 string
,array_nm1 array<struct<nome1:string, chave1:string, valor1:string, record1:struct<nome4:string>>>
,array_nm2 struct<nome2:string, chave2:string, valor2:string>
);
然后我将数据插入:
INSERT INTO temp4 select
'artur',
ARRAY(NAMED_STRUCT('nome1','artur','chave1','a1','valor1','23', 'record1', NAMED_STRUCT('nome4','lucas'))) as array_nm1,
NAMED_STRUCT('nome2','seidi','chave2','s1','valor2','08') as array_nm2
FROM (select '1' ) t;
这工作得很好。所以我创建了另一个表并尝试从“temp4”输入数据但我无法设法从 temp4 插入另一个复杂表。喜欢:
create table temp5
(
name_1 string
,array_nm3 array<struct<name1:string,key1:string,value1:string,rec1:struct<name4:string>>>
,array_nm4 struct<name2:string,key2:string,value2:string>
);
我试过这样的事情:
INSERT into temp5
select
name_1 as name_1,
array(named_struct(name1,nome1,key1,chave1, value1,valor1, rec1, named_struct(name4, nome4))) as array_nm3,
named_struct(name2,nome2,key2,chave2, value2, valor2) as array_nm4
from temp4
但没有成功。还尝试将 array_nm1.nome1 作为 array_nm3.name1 但没有奏效。
解决方案
尝试如下更改插入查询。在 named_struct 中将键作为字符串值。此外,named_struct 键应与 temp5 DDL 中定义的键匹配。
INSERT into temp5
select
name_1 as name_1,
array(named_struct('name1',nome1,'key1',chave1, 'value1',valor1, 'rec1',named_struct('name4', nome4))) as array_nm3,
named_struct('name2',nome2,'key2',chave2, 'value2', valor2) as array_nm4
from temp4
推荐阅读
- reactjs - React:获取组件外部映射项的索引
- javascript - 第三方 API 需要访问 React 应用中的状态
- html - 在 html 选择中悬停或选择项目时,如何避免更改背景颜色?
- asp.net-mvc - IdentityModel vs Microsoft.IdentityModel vs System.IdentityModel
- flutter - Dart/Flutter - 仅保留列表中的重复项
- javascript - 如何切换 Blockly 工具箱
- azure-devops - 是否有 Azure devops rest API 来管理进程级别的安全性
- javascript - 将 React 类重构为钩子 - 实体更新组件
- javascript - 我尝试创建导航栏,但我的 javascript 代码不起作用
- r - 试图理解 R Scales label_percent() 的结果