大数据计算MaxCompute odps的插入数据语句,有办法根据as后的字段自动匹配么?不根据建表语句的字段顺序
建表语句字段 create table T ( a string, b string , c string)
插入数据 insert overwrite table T select 1 as c ,2 as b ,3 as a from xxx
希望结果是 a= 3 b=2 c =1
而不是建表字段顺序的 a =1 ,b = 2 ,c = 3
在MaxCompute的ODPS中,可以使用lateral view
和posexplode
函数在MaxCompute的ODPS中,可以使用lateral view
和posexplode
函数来实现根据AS后的字段自动匹配。以下是一个示例:
INSERT OVERWRITE TABLE T
SELECT c, b, a
FROM (
SELECT 1 AS c, 2 AS b, 3 AS a
FROM xxx
) t
LATERAL VIEW posexplode(map_from_arrays(t.c, t.b, t.a)) t_map AS c, b, a;
这个查询首先使用lateral view
和posexplode
函数将数组中的每个元素拆分为多行,然后使用map_from_arrays
函数将原始数据与拆分后的数据进行匹配。最后,将匹配后的数据插入到目标表中。
测试了下,没办法用这个写法insert overwrite table T select 1 as c ,2 as b ,3 as a from xxx;是按照字段顺序写入的。
如果可以调子查询中的顺序,能写进去
,此回答整理自钉群“MaxCompute开发者社区2群”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
MaxCompute(原ODPS)是一项面向分析的大数据计算服务,它以Serverless架构提供快速、全托管的在线数据仓库服务,消除传统数据平台在资源扩展性和弹性方面的限制,最小化用户运维投入,使您经济并高效的分析处理海量数据。