Impala中多列转为一行

摘要:
一位朋友问我如何在Impala中将多个列转换为一行。事实上,Impala的内置函数可以在不定义函数的情况下实现。

之前有一位朋友咨询我,Impala中怎样实现将多列转为一行,事实上Impala中自带函数能够实现,不用自己定义函数。

以下我開始演示:

-bash-4.1$ impala-shell 

Starting Impala Shell without Kerberos authentication
Connected to cdha:21000
Server version: impalad version 1.4.2-cdh5 RELEASE (build eac952d4ff674663ec3834778c2b981b252aec78)
Welcome to the Impala shell. Press TAB twice to see a list of available commands.


Copyright (c) 2012 Cloudera, Inc. All rights reserved.


(Shell build version: Impala Shell v1.4.2-cdh5 (eac952d) built on Tue Sep 16 19:15:40 PDT 2014)

[cdha:21000] > create table student(name string,subject string,score decimal(4,1));    -------------创建演示表:student(脱离学校四年了。还不忘自己是学生^_^)
Query: create table student(name string,subject string,score decimal(4,1))


Returned 0 row(s) in 1.97s
[cdha:21000] > insert into student values('xiaoming','math',89.5); ----------------插入演示数据 (小明和花花的学习成绩,他们感情比較好)
Query: insert into student values('xiaoming','math',89.5)
Inserted 1 rows in 2.56s
[cdha:21000] > insert into student values('xiaoming','english',92);
Query: insert into student values('xiaoming','english',92)
Inserted 1 rows in 0.39s
[cdha:21000] > insert into student values('xiaoming','chinese',98);
Query: insert into student values('xiaoming','chinese',98)
Inserted 1 rows in 0.42s
[cdha:21000] > insert into student values('huahua','chinese',80);
Query: insert into student values('huahua','chinese',80)
Inserted 1 rows in 0.40s
[cdha:21000] >insert into student values('huahua','math',89.5);
Query: insert into student values('huahua','math',89.5)
Inserted 1 rows in 0.29s
[cdha:21000] >select * from student;    ----------每次考完试,老师报分数时都非常紧张    
Query: select * from student
+----------+---------+-------+
| name     | subject | score |
+----------+---------+-------+
| xiaoming | english | 92.0  |
| huahua   | chinese | 80.0  |
| xiaoming | chinese | 98.0  |
| huahua   | math    | 89.5  |
| xiaoming | math    | 89.5  |
+----------+---------+-------+
Returned 5 row(s) in 0.23s


[cdha:21000] > select name,group_concat(subject,',') from student group by  name;  ------------小试牛刀,看到了吧,多列拼接到一起了
Query: select name,group_concat(subject,',') from student group by  name
+----------+----------------------------+
| name     | group_concat(subject, ',') |
+----------+----------------------------+
| xiaoming | english,chinese,math       |
| huahua   | chinese,math               |
+----------+----------------------------+
Returned 2 row(s) in 0.38s

------------以下演示有价值的演示样例,显示高手之招,呵呵

------------这样就能够在一行上面,看到小明和花花的各科成绩了

[cdha:21000] > select name,group_concat(concat_ws('=',subject,cast(score as string)),',') from student group by  name;  
Query: select name,group_concat(concat_ws('=',subject,cast(score as string)),',') from student group by  name
+----------+-------------------------------------------------------------------+
| name     | group_concat(concat_ws('=', subject, cast(score as string)), ',') |
+----------+-------------------------------------------------------------------+
| xiaoming | english=92.0,chinese=98.0,math=89.5                               |
| huahua   | chinese=80.0,math=89.5                                            |
+----------+-------------------------------------------------------------------+
Returned 2 row(s) in 0.39s
[cdha:21000] > 


Hive的行列转换请查看: http://blog.csdn.net/jiangshouzhuang/article/details/46810529

免责声明:文章转载自《Impala中多列转为一行》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇QT5 Thread线程ORACLE物化视图实体化试图(Materialized View)介绍下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

impala客户端连接

想要使用plsql连接oracle一样,使用类似工具连接impala的方法:ClouderaImpalaODBC32.msi下载地址:http://www.cloudera.com/downloads/connectors/impala/odbc/2-5-36.html--注意:不能使用64位的,否则后面使用SqlDbx.exe连接odbs时候会报错!(未...

从零搭建企业大数据分析和机器学习平台-技术栈介绍(三)

数据传输和采集 Sqoop数据传输工具实际项目开发中,往往很多业务数据是存放在关系型数据库中,如 MySQL数据库。我们需要将这些数据集中到数据仓库中进行管理,便于使用计算模型进行统计、挖掘这类操作。 Sqoop是Apache软件基金会的⼀一款顶级开源数据传输工具,用于在 Hadoop与关系型数据库(如MySQL、Oracle、PostgreSQL等)之间...

Hive/Impala批量插入数据

问题描述 现有几千条数据,需要插入到对应的Hive/Impala表中。安排给了一个同事做,但是等了好久,反馈还没有插入完成……看到他的做法是:对每条数据进行处理转换为对应的insert语句,但是,实际执行起来,速度很慢,每条数据都要耗时1s左右。比在MySQL中批量插入数据慢多了,因而抱怨Impala不太好用 问题分析 首先,必须明确的是,把每条数据处理成...

impala 四舍五入后转换成string后又变成一个double的数值解决(除不尽的情况)

impala 四舍五入后转换成string后又变成一个double的数值解决(除不尽的情况)例如Query: select cast(round(2 / 3, 4)*100 as string)+---------------------------------------+| cast(round(2 / 3, 4) * 100 as string) |...

Centos7.X安装impala(RPM方式)

Centos7.5安装Impala 一、安装包准备1.1、Impala下载地址 http://archive.cloudera.com/beta/impala-kudu/redhat/7/x86_64/impala-kudu/0/RPMS/x86_64/ 1.2、impala依赖下载地址 http://archive.cloudera.com/cdh5/r...

impala presto SparkSql性能测试对比

  目标是为测试impala presto SparkSql谁的性能更佳,以下结果底层查询的都是普通textfile snappy压缩后数据,规模为15台机器,若以orcfile、parquet速度能快数倍 impala与presto性能相当,SparkSql逊色不少。 目前看presto相比impala 1、与hive实时共享元数据,impala需要...