大数据计算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群”
本文来自投稿,不代表新手站长_郑州云淘科技有限公司立场,如若转载,请注明出处:https://www.cnzhanzhang.com/13729.html