zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    libevent网络编程汇总
    LibEvent代码阅读--多缓冲区和零拷贝技术
    几个第三方库发图片
    Libevent使用例子,从简单到复杂
    CImage得到位图的大小
    从位图数据取得位图句柄
    BMP格式详解
    如何将内存中的位图数据绘制在DC上
    C++加载位图跟SOCKET通信的编写
    11235
  • 原文地址:https://www.cnblogs.com/jhcelue/p/6784529.html
Copyright © 2011-2022 走看看