首页 > 其他分享 >impala行转列问题

impala行转列问题

时间:2022-10-17 20:37:33浏览次数:45  
标签:NM UNION T0 问题 转列 ZHYW NUM impala SELECT

由于impala不能使用 LATERAL VIEW EXPLODE
需要行转列时,可采用加辅助列的方式:

DROP TABLE IF EXISTS ZHYW.T0;
CREATE TABLE IF NOT EXISTS ZHYW.T0 AS 
SELECT '1' AS NM,'A,B,C' AS ID 
UNION ALL
SELECT '2' AS NM,'A,B,C,D' AS ID 
;

DROP TABLE IF EXISTS ZHYW.T01;
CREATE TABLE IF NOT EXISTS ZHYW.T01 AS 
SELECT NM
,LENGTH(REGEXP_REPLACE(ID,'[A-Z]',''))+1 AS MAX_LOC
FROM ZHYW.T0 ;

DROP TABLE IF EXISTS ZHYW.T1;
CREATE TABLE IF NOT EXISTS ZHYW.T1 AS 
SELECT '1' AS NUM
UNION ALL
SELECT '2' AS NUM
UNION ALL
SELECT '3' AS NUM
UNION ALL
SELECT '4' AS NUM
UNION ALL
SELECT '5' AS NUM
UNION ALL
SELECT '6' AS NUM
UNION ALL
SELECT '7' AS NUM
;

行转列结果展示:

WITH  T2 AS ( SELECT NM,MAX_LOC FROM ZHYW.T01 )                                   -- 注意 WITH后面的表名 如果表名前加了库名会报错
     ,T3 AS (SELECT ROW_NUMBER() OVER (ORDER BY NUM ) AS RN FROM ZHYW.T1)         -- 这里为了得到一列从1开始的自然数,也可以选任意一张表的主键,根据主键排序可以取从1开始的自然数

SELECT T0.NM,T0.ID,T4.RN,SPLIT_PART(T0.ID,',',T4.RN) AS SPLIT_ID
FROM ZHYW.T0   T0
LEFT JOIN (
        SELECT T2.NM,T2.MAX_LOC,T3.RN
        FROM  T2
        LEFT JOIN  T3
        ON CAST(T2.MAX_LOC AS INT) >= T3.RN
) T4
ON T0.NM = T4.NM
;

标签:NM,UNION,T0,问题,转列,ZHYW,NUM,impala,SELECT
From: https://www.cnblogs.com/fylhd2013/p/16800517.html

相关文章

  • 基于MAX-SUM算法的大规模信息系统的协调问题matlab仿真
    一、理论基础二、核心程序三、仿真测试结果作者ID:fpga和matlabCSDN主页:https://blog.csdn.net/ccsss22?type=blog擅长技术:1.无线基带,无线图传,编解码2.机器视觉,图像......
  • 报数问题
    有N(n<100)个小朋友,这N个小朋友围坐成一圈,从任意一位小朋友开始报数,第一位报1,当数字为3时,该小朋友出列,继续从1开始报数,以此循环下去,剩余最后一人为队长。算法核心思路:设置一......
  • 数字保留两位小数,处理精度问题
    在vue的filters中添加数字处理的方法priceFilter(val){val=Math.round(val*100)/100constvalStr=val.toString()if(valStr.indexOf('.')===-1)ret......
  • linux常见问题
    1,使用python的时候发现pipinstallnumpy 报错:-bash:pip:未找到命令2,于是安装pip:wgethttps://bootstrap.pypa.io/pip/2.7/get-pip.py结果报错:-bash:wget:......
  • CPU飙高问题排查,从linux到java代码
    第一步:top监测进程资源占用情况,获取异常进程编号。这一步可以获得异常占用进程号。第二步:psH-eopid,tid,%cpu|grepxxxx  H打印线程以及进程信息,-eo打印指定的字......
  • 解决node环境下SyntaxError: Cannot use import statement outside a module的问题
    问题今天刷leetcode的时候,发现有些函数老是重复书写,于是单独写了一个uitls.js模块,通过import的方式导入,没想到居然报错了。解决方案错误警告其实已经给出了解决方案,在pac......
  • aspose工具word转pdf文件,在linux服务器上出现内容乱码问题
    1、先看问题的出现:功能是这样滴:上传一个word文件,然后把word文件转成pdf,保存在服务器上,然后打开服务器上的pdf文件地址,在线查看文件出现内容乱码,如下:   2......
  • 解决vuex刷新页面数据丢失问题(数据持久化)
    1、为什么刷新页面vuex的数据会丢失刷新页面vuex的数据会丢失属于正常现象,因为JS的数据都是保存在浏览器的堆栈内存里面的,刷新浏览器页面,以前堆栈申请的内存被释放,这就是......
  • 关于异常-git日常开发问题
    问题解决方法      是.husky下面的pre-commit已经存在了删除掉这个pre-commit文件再从stash里把内容Apply拿出来提交就可以了 ......
  • 解决Echarts的toolbox只显示英文的问题
    我们为toolbox中每一个配置项都添加title属性,title属性的值就是你想显示的值,随便写。toolbox的配置代码如下:toolbox:{//工具栏show:true,......