div*_*thi 4 hadoop hive hiveql
我正在寻找一种根据逗号分隔数据拆分列的方法。以下是我的数据集
id  col1  col2
1   5,6   7,8
Run Code Online (Sandbox Code Playgroud)
我想得到结果
id col1 col2
1  5    7
1  6    8
Run Code Online (Sandbox Code Playgroud)
索引的位置应该匹配,因为我需要相应地获取结果。
我尝试了以下查询,但它返回笛卡尔积。
询问:
SELECT col3, col4
FROM test ext 
lateral VIEW explode(split(col1,'\002')) col1 AS col3
lateral VIEW explode(split(col2,'\002')) col2 AS col4
Run Code Online (Sandbox Code Playgroud)
结果:
id col1 col2
1  5    7
1  5    8
1  6    7
1  6    8
Run Code Online (Sandbox Code Playgroud)
    您可以用来posexplode()为分割数组创建位置索引列。然后,仅选择位置索引相等的那些行。
SELECT id, col3, col4
  FROM test
  lateral VIEW posexplode(split(col1,'\002')) col1 AS pos3, col3
  lateral VIEW posexplode(split(col2,'\002')) col2 AS pos4, col4
  WHERE pos3 = pos4;
Run Code Online (Sandbox Code Playgroud)
输出:
id col3 col4
1  5    7
1  6    8
Run Code Online (Sandbox Code Playgroud)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           5887 次  |  
        
|   最近记录:  |