bigquey一行转多行

hive 一行转多行:

select col2,col3,col4 from adm.xx
lateral view explode(split(col1,',')) r1 AS col4;

bigquery 一行转多行

使用 cross join unnest 将逗号分隔的数据分解为单个列中的多个记录。

cross join unnest(array) AS t (展开后的列名)・・・将
第一个参数的数组展开为单行记录。
列名将是第二个参数扩展后的列名。

源数据格式:
type values
A { 1,2,3 }
B { 2,4,6 }
C { 1,3,5}

目标格式
type values
A 1
A 2
A 3
B 2
B 4
B 6
C 1
C 3
C 5

实现方式

WITH
-- 准备
dataset AS (
    SELECT *
    FROM (
        VALUES
            ('A', ARRAY [1,2,3]),
            ('B', ARRAY [2,4,6]),
            ('C', ARRAY [1,3,5]),
    ) as t(type, list)
)
-- 展开
SELECT
    type, value
FROM dataset
CROSS JOIN UNNEST(list) AS t(value)

你可能感兴趣的:(hive调优,hive,hadoop,数据仓库)