教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

簡述Hive的行轉(zhuǎn)列和列轉(zhuǎn)行函數(shù)

更新時(shí)間:2024年01月31日10時(shí)40分 來源:傳智教育 瀏覽次數(shù):

好口碑IT培訓(xùn)

  Hive是一個(gè)基于Hadoop的數(shù)據(jù)倉庫工具,用于處理大規(guī)模的數(shù)據(jù)集。在Hive中,有一些函數(shù)可用于行轉(zhuǎn)列(Pivot)和列轉(zhuǎn)行(Unpivot)操作。這些函數(shù)主要用于將表中的數(shù)據(jù)在行和列之間進(jìn)行轉(zhuǎn)換。

  一、行轉(zhuǎn)列 - TRANSPOSE

  行轉(zhuǎn)列是指將表中的行數(shù)據(jù)轉(zhuǎn)換為列,通常使用TRANSPOSE函數(shù)。例如,如果有如下表:

+------+------+------+
| col1 | col2 | col3 |
+------+------+------+
|  A1  |  B1  |  C1  |
|  A2  |  B2  |  C2  |
|  A3  |  B3  |  C3  |
+------+------+------+

  使用TRANSPOSE函數(shù)可以將行轉(zhuǎn)列:

SELECT TRANSPOSE(col1, col2, col3) AS transposed_data
FROM your_table;

  結(jié)果可能如下:

+---------------------------+
|      transposed_data      |
+---------------------------+
| A1, B1, C1, A2, B2, C2, A3, B3, C3 |
+---------------------------+

  二、列轉(zhuǎn)行 - LATERAL VIEW EXPLODE

  列轉(zhuǎn)行是指將表中的列數(shù)據(jù)轉(zhuǎn)換為行,通常使用LATERAL VIEW EXPLODE語法結(jié)合SELECT語句。例如,如果有如下表:

+------+------+------+
| col1 | col2 | col3 |
+------+------+------+
|  A1  |  B1  |  C1  |
|  A2  |  B2  |  C2  |
|  A3  |  B3  |  C3  |
+------+------+------+

  使用LATERAL VIEW EXPLODE可以將列轉(zhuǎn)行:

SELECT id, value
FROM your_table
LATERAL VIEW EXPLODE(ARRAY(col1, col2, col3)) AS your_table_alias;

  結(jié)果可能如下:

+----+-------+
| id | value |
+----+-------+
|  1 |  A1   |
|  1 |  B1   |
|  1 |  C1   |
|  2 |  A2   |
|  2 |  B2   |
|  2 |  C2   |
|  3 |  A3   |
|  3 |  B3   |
|  3 |  C3   |
+----+-------+

  這樣,我們就可以通過LATERAL VIEW EXPLODE將表的列轉(zhuǎn)為行,并生成新的行。

0 分享到:
和我們在線交談!