假设我们有 columnsA columnsB 1 {'A':22,'B':11} 2 {'A':13,'C':24} 如何将其转换为columnsA A B C 1 22 11 NA 2 13 NA 24
使用Map[key] operator select m['A'] A, m['B'] B, m['C'] C from (select str_to_map("A:22,B:11") m) s; 返回:A B C 22 11 NULL 如果你需要在编程中使用'NA'代替NULL,请使用NVL()函数:NVL(m['A'],'NA') as A
lateral view outer explode(mapCol) s as key, val;
,就像这个答案中所示:https://dev59.com/u7Lma4cB1Zd3GeqPXjod#54960324。但在此之后,您还需要根据键将 (key, val) 转换为列,这可以使用条件聚合完成。使用 map[key] 将更简单和高效。 - leftjoin